Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt pokazuje tylko jeden komunikat, (powinien 4)
jarekbutek
post 25.04.2009, 18:04:58
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


Dlaczego poniższy skrypt wyrzuca tylko jeden komunikat (Nie podałeś emailu) po pozostawieniu wszystkich pól forma pustych, chociaż powinien pokazać ich trzy.

Oto kod forma:

  1. <?
  2. include "mysql_config.php";
  3. $action = $_GET['action'];
  4. $tabela = "users";
  5.  
  6. if(isset($action))
  7. {
  8.   if($action=="rejestruj")
  9.   {
  10.     if(!isset($_POST['submit']))
  11.     {
  12.       echo '<form name="rejestracja" action="index.php?op=user&action=rejestruj" method="post">
  13.       <table>
  14.       <tr>
  15.       <td>Nazwa użytkownika <font color="red">*</font></td><td><input name="nazwa_usera" type="text" value="" /></td>
  16.       </tr>
  17.       <tr>
  18.       <td>Hasło <font color="red">*</font></td><td><input type="password" name="haslo1" value="" /></td>
  19.       </tr>
  20.       <tr>
  21.       <td>Potwierdź hasło <font color="red">*</font></td><td><input type="password" name="haslo2" value="" /></td>
  22.       </tr>
  23.       <tr>
  24.       <td>Email <font color="red">*</font></td><td><input name="email" type="text" value="" /></td>
  25.       </tr>
  26.       <tr>
  27.       <td><input type="submit" name="submit" value="Rejestruj" /></td><td><input type="reset" value="Wyczyść" /></td>
  28.       </tr>
  29.       </table>
  30.       </form>
  31.       <br>Pola z <font color="red">*</font> gwiazdką są wymagane.';
  32.     }
  33.     if(isset($_POST["submit"]))
  34.     {
  35.       $login = $_POST["nazwa_usera"];
  36.       $haslo1 = $_POST["haslo1"];
  37.       $haslo2 = $_POST["haslo2"];
  38.       $email = $_POST["email"];
  39.       
  40.       $sql_sprawdz_login = mysql_query("SELECT * FROM users WHERE login='$login'");
  41.       $sql = mysql_fetch_array($sql_sprawdz_login);
  42.       if(empty($login))
  43.         {
  44.    $blad = "Nie wpisałeś nazwy użytkownika<br>";
  45.      }
  46.   
  47.       if($login==$sql["login"])
  48.       {
  49.         $blad ="Użytkownik istnieje.<br>";
  50.       }
  51. if(empty($haslo1))
  52.  {
  53.   $blad = "Nie wpisałeś hasła<br>";
  54. }
  55.    
  56.      if($haslo1!=$haslo2)
  57.      {
  58.        $blad = "Podane hasła się nie zgadzają<br>";
  59.      }
  60.      
  61.    
  62.    if(empty($email))
  63.    {
  64.      $blad = "Nie podałeś emailu<br>";
  65.    }
  66.    
  67.      function  ValidEmail($email) {
  68.      if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)) {
  69.       return false;
  70.   }
  71.   return true;
  72.  }
  73.      if(!empty($email) && ValidEmail($email))
  74.      {
  75.        $emailtrue = true;
  76.      }
  77.      elseif(!empty($email))
  78.      {
  79.        $emailtrue = false;
  80.        $blad = "Niepoprawny email<br>";
  81.      }
  82.    
  83.    
  84.    if(!empty($login) && !empty($haslo1) && !empty($haslo2)&& $haslo1==$haslo2 && !empty($email) && $emailtrue==true)
  85.    {
  86.      mysql_query("INSERT INTO users SET login='$login', pass='".md5($haslo1)."', email='$email', activation_key='".base64_encode($login.$haslo1.$email)."', active='no';");
  87.      echo"Jesteś już zarejestrowany";
  88.    }
  89.    
  90.   
  91.      }
  92.       
  93.     if($blad)
  94.     {
  95.       echo "$blad";
  96.     }
  97.     }
  98. }
  99.   
  100.  
  101. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
porady-it.pl
post 25.04.2009, 18:12:21
Post #2





Grupa: Zarejestrowani
Postów: 89
Pomógł: 20
Dołączył: 13.05.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Komunikaty z błędami powinny być doklejane do zmiennej $blad np.

  1. <?php
  2. $blad .= "Jakiś błąd.";
  3. ?>


--------------------
Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
Go to the top of the page
+Quote Post
gebp
post 25.04.2009, 18:13:13
Post #3





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $a=1;
  3. echo $a; // 1
  4. $a=2;
  5. echo $a; // 2
  6.  
  7. $a=4;
  8. $a=5;
  9.  
  10. echo $a; // 5
  11.  
  12. $a=array();
  13.  
  14. $a[]=6;
  15. $a[]=7;
  16. $a[]=8;
  17.  
  18. foreach($a AS $val)
  19. { echo $val."<br/>"; }
  20.  
  21. // 6
  22. // 7
  23. // 8
  24.  
  25. ?>
Go to the top of the page
+Quote Post
tb82
post 25.04.2009, 18:16:49
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 13.03.2009

Ostrzeżenie: (0%)
-----


$sql_sprawdz_login = mysql_query("SELECT * FROM users WHERE login='$login'") - tu jest błąd

Powinno być: SELECT * FROM users WHERE login='" . $login . "'";
Go to the top of the page
+Quote Post
Spawnm
post 25.04.2009, 18:20:42
Post #5





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




tb82, wiesz czym się różni " od ' questionmark.gif

Ten post edytował Spawnm 25.04.2009, 18:20:58
Go to the top of the page
+Quote Post
tb82
post 25.04.2009, 18:35:47
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 13.03.2009

Ostrzeżenie: (0%)
-----


Cytat
tb82, wiesz czym się różni " od ' questionmark.gif

wiem..a czemu ?
Go to the top of the page
+Quote Post
Spawnm
post 25.04.2009, 18:39:41
Post #7





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




skoro wiesz to czemu proponujesz zamianę z
"SELECT * FROM users WHERE login='$login'"
na
SELECT * FROM users WHERE login='" . $login . "'";

działanie będzie to samo , a " używamy aby nie bawić się z kropkami.
Go to the top of the page
+Quote Post
Kildyt
post 25.04.2009, 20:14:02
Post #8





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


tb82 polecam podstawy kursu php.

Zauważ, że za każdym razem gdy chcesz zapisać treść komunikatu do zmiennej $blad (na przyszłość używaj angielskich wyrazów) to stara zawartość zostaje nadpisana. Musisz dopisać kolejny komunikat do poprzedniego.

Rozwiązanie:
  1. <?php
  2. $blad = $blad.'tresc';
  3.  
  4. // czyli
  5. $blad .= 'tresc';
  6. ?>


To zauważyłem na pierwszy rzut oka. Jeżeli nie o to chodzi o sory.


--------------------
Go to the top of the page
+Quote Post
jarekbutek
post 26.04.2009, 16:30:38
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


Dzięki Kildyt o to chodziło.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:46