Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt pokazuje tylko jeden komunikat
Forum PHP.pl > Forum > Przedszkole
jarekbutek
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. ?>
porady-it.pl
Komunikaty z błędami powinny być doklejane do zmiennej $blad np.

  1. <?php
  2. $blad .= "Jakiś błąd.";
  3. ?>
gebp
  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. ?>
tb82
$sql_sprawdz_login = mysql_query("SELECT * FROM users WHERE login='$login'") - tu jest błąd

Powinno być: SELECT * FROM users WHERE login='" . $login . "'";
Spawnm
tb82, wiesz czym się różni " od ' questionmark.gif
tb82
Cytat
tb82, wiesz czym się różni " od ' questionmark.gif

wiem..a czemu ?
Spawnm
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.
Kildyt
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.
jarekbutek
Dzięki Kildyt o to chodziło.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.