Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Panel rejestracji - błędy.
Forum PHP.pl > Forum > Przedszkole
NickOver
Witam wszystkich!
Mam kodzik:
  1. <?php
  2. include('db.php');
  3. if($_SESSION['logged'])
  4. {
  5. echo'Jesteś już zalogowany!';
  6. }
  7. else
  8. {
  9. echo '<h2>Rejestracja</h2>';
  10. echo '<form action="reg.php" method="POST">
  11. Email: <br />
  12. <input type="email" name="mail"><br />
  13. Hasło: <br />
  14. <input type="password" name="pass"><br />
  15. Powtórz hasło: <br />
  16. <input type="password" name="pass2"><br />
  17. <input type="submit" name="ok" value="Rejestruj">
  18. </form>';
  19. if(isset($_POST['ok']))
  20. {
  21. $mail = trim($_POST['mail']);
  22. $pass = trim($_POST['pass']);
  23. $pass2 = trim($_POST['pass2']);
  24. $sprawdz = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  25. $result2 = mysql_query("SELECT * FROM users WHERE email='$mail'");
  26. if(empty($mail) || empty($pass) || empty($pass2))
  27. {
  28. echo 'Wpisz wszystkie pola!';
  29. }
  30. else
  31. {
  32. if ($pass != $pass2)
  33. {
  34. $a=1;
  35. }
  36.  
  37. if(mysql_num_rows($result2)!=0)
  38. {
  39. $b=1;
  40. }
  41. if(preg_match($sprawdz, $mail));
  42. {
  43. $c=0;
  44. }
  45. }
  46. if(($a=1) || ($b=1) ||($c=0))
  47. {
  48. if(($a=1))
  49. {
  50. echo 'Hasła nie są identyczne!';
  51. }
  52. if(($b=1))
  53. {
  54. echo 'Już istnieje taki adres email w naszej bazie danych!';
  55. }
  56. if(($c=0))
  57. {
  58. echo 'Adres email nie jest w prawidłowej formie!';
  59. }
  60. }
  61. else
  62. {
  63. $data = time();
  64. $pass = md5($pass);
  65. $status = 1;
  66. $query = "INSERT INTO `users` (`pass`, `email`, `status`, `data_rejestracji`) VALUES ('$pass', '$mail', '$status', '$data')";
  67. if(mysql_query($query)) echo 'Zostałes poprawnie zarejestrowany! Możesz się teraz <a href="login.php">zalogować</a>';
  68. }
  69. }
  70. }
  71. ?>

Ogólnie chodzi mi o to żeby wyświetlały się wszystkie błędy jakie są (o ile są, a jeśli ich nie ma to żeby dane leciały do bazy), a nie tylko jeden. W tym kodzie ciągle wyskakują wszystkie błędy bez względu co wpiszę. Z góry dziękuje za pomoc wink.gif.
karakara
po każdym
echo 'błąd';
daj
exit;

inaczej kod będzie wykonywał sie dalej
NickOver
No ale własnie o to chodzi żeby się dalej wykonywał tj. jeśli hasła się nie zgadzają i istnieje już mail to chciałbym aby oba komunikaty się pokazały.
Turson
  1. <?php
  2. include('db.php');
  3. if($_SESSION['logged'])
  4. {
  5. echo'Jesteś już zalogowany!';
  6. }
  7. else
  8. {
  9. echo '<h2>Rejestracja</h2>';
  10. echo '<form action="reg.php" method="POST">
  11. Email: <br />
  12. <input type="email" name="mail"><br />
  13. Hasło: <br />
  14. <input type="password" name="pass"><br />
  15. Powtórz hasło: <br />
  16. <input type="password" name="pass2"><br />
  17. <input type="submit" name="ok" value="Rejestruj">
  18. </form>';
  19. if(isset($_POST['ok']))
  20. {
  21. $mail = trim($_POST['mail']);
  22. $pass = trim($_POST['pass']);
  23. $pass2 = trim($_POST['pass2']);
  24. $sprawdz = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  25. $result2 = mysql_query("SELECT * FROM users WHERE email='$mail'");
  26. try{
  27. if(empty($mail) || empty($pass) || empty($pass2)) throw new Exception("Wpisz wszystkie pola");
  28. if($pass != $pass2) throw new Exception("Hasła nie są identyczne");
  29. if(mysql_num_rows($result2)!=0) throw new Exception("Już istnieje taki adres email w naszej bazie danych!");
  30. if(preg_match($sprawdz, $mail)) throw new Exception("Adres email nie jest w prawidłowej formie!");
  31. }
  32. catch(Exception $e){
  33. die($e->getMessage());
  34. }
  35.  
  36. $data = time();
  37. $pass = md5($pass);
  38. $status = 1;
  39. $query = "INSERT INTO `users` (`pass`, `email`, `status`, `data_rejestracji`) VALUES ('$pass', '$mail', '$status', '$data')";
  40. if(mysql_query($query)) echo 'Zostałes poprawnie zarejestrowany! Możesz się teraz <a href="login.php">zalogować</a>';
  41. ?>


lub

  1. <?php
  2. include('db.php');
  3. if($_SESSION['logged'])
  4. {
  5. echo'Jesteś już zalogowany!';
  6. }
  7. else
  8. {
  9. echo '<h2>Rejestracja</h2>';
  10. echo '<form action="reg.php" method="POST">
  11. Email: <br />
  12. <input type="email" name="mail"><br />
  13. Hasło: <br />
  14. <input type="password" name="pass"><br />
  15. Powtórz hasło: <br />
  16. <input type="password" name="pass2"><br />
  17. <input type="submit" name="ok" value="Rejestruj">
  18. </form>';
  19. if(isset($_POST['ok']))
  20. {
  21. $mail = trim($_POST['mail']);
  22. $pass = trim($_POST['pass']);
  23. $pass2 = trim($_POST['pass2']);
  24. $sprawdz = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  25. $result2 = mysql_query("SELECT * FROM users WHERE email='$mail'");
  26.  
  27. $errors = null;
  28.  
  29. if(empty($mail) || empty($pass) || empty($pass2)) $errors .= "Wpisz wszystkie pola";
  30. if($pass != $pass2) $errors .= "Hasła nie są identyczne";
  31. if(mysql_num_rows($result2)!=0) $errors .= "Już istnieje taki adres email w naszej bazie danych!";
  32. if(preg_match($sprawdz, $mail)) $errors .= "Adres email nie jest w prawidłowej formie!";
  33.  
  34. if(!is_null($errors)){
  35. die($errors);
  36. }
  37. $data = time();
  38. $pass = md5($pass);
  39. $status = 1;
  40. $query = "INSERT INTO `users` (`pass`, `email`, `status`, `data_rejestracji`) VALUES ('$pass', '$mail', '$status', '$data')";
  41. if(mysql_query($query)) echo 'Zostałes poprawnie zarejestrowany! Możesz się teraz <a href="login.php">zalogować</a>';
  42. ?>
  43.  
NickOver
Niestety... W pierwszym kodzie gdy hasła się nie zgadzają wywala info tylko o tym (nic nie mówi że mail jest), a w 2 bez względu czy mail jest poprawny czy nie wywala że jest w nieprawidłowej formie.
BTW Wiecie może czemu w kazdym z tych 2 kodzików wywala mi info że jest niezdefiniowany index LOGGED (3 linia). Można ten błąd 'zablokowac' czy bawić się z tym?
Turson
Cytat
Niestety... W pierwszym kodzie gdy hasła się nie zgadzają wywala info tylko o tym (nic nie mówi że mail jest)

Tak to działa.

Cytat
w 2 bez względu czy mail jest poprawny czy nie wywala że jest w nieprawidłowej formie.

Spróbuj !preg_match
NickOver
Dzięki Turson wink.gif Wystarczył wykrzyknik wink.gif
Mam jeszcze pytanie apropo tego
  1. if($_SESSION['logged'])

Co zrobić aby nie wyświetlało się info o niezdefiniowanym indexie "logged"?
Turson
  1. if(isset($_SESSION['logged']))
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.