Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błąd pętli weryfikacyjnej
Forum PHP.pl > Forum > Przedszkole
Terrorizer
Po kliknięciu przycisku zaloguj za każdym razem wyskakuje mi komunikat "podaj email i hasło"
Natomiast jak wynika z pętli powinno to wyskakiwać tylko wtedy gdy jedno z pól jest empty.
Nie potrafię dojść, z czego to wynika

Streszczony kod:
  1. if (isset($_POST['zaloguj'])) {
  2.  
  3. if (!empty($_POST['email']) || !empty($_POST['pass'])){
  4.  
  5. //tutaj lecą instrukcje weryfikujące poprawność danych
  6.  
  7. } else echo 'podaj email i hasło';
  8. }



Jeśli komuś się chce, zamieszczam poniżej kod bez wycinania:
  1. if (isset($_POST['zaloguj'])) {
  2. if (!empty($_POST['email']) || !empty($_POST['pass'])){
  3.  
  4.  
  5.  
  6. $email = $_POST['logemail'];
  7. $password = $_POST['logpass'];
  8.  
  9. if ((strlen($email) < 4) || (strlen($email) > 40)) {echo '<script>
  10. document.getElementById("nick").value = "niepoprawny email";
  11. document.getElementById("nick").className = "niepoprawnyemail";
  12. </script>';}
  13. if ((strlen($password) < 6) || (strlen($password) > 40)) {echo '<script>
  14. document.getElementById("pass").value = "niepoprawne hasło";
  15. document.getElementById("pass").className = "niepoprawnehasło";
  16. </script>';}
  17. if (filter_var($email, FILTER_VALIDATE_EMAIL)){
  18. $pass = md5(sha1($password));
  19. } else echo '<script>
  20. document.getElementById("nick").value = "niepoprawny email";
  21. document.getElementById("nick").className = "niepoprawnyemail";
  22. </script>';
  23.  
  24. $checkuser = mysql_fetch_assoc(mysql_query(" SELECT id FROM users WHERE email='$email' AND pass='$password' "));
  25. if($checkuser){
  26. $_SESSION = array();
  27. $_SESSION['id'] = $checkuser['id'];
  28. if(!empty($_SESSION['id'])){
  29. header('location: main.php');
  30. }
  31. else header('location: index.php');
  32. }
  33. } else echo '<script> alert("podaj email i hasło")</script>';
  34. }
KsaR
zamień || (or) na && (i) inaczej walidujesz jak ktoś wpisze tylko hasło lub email.

Ps.
  1. $pass = md5(sha1($password));


tak się nie robi.

Temat: podwójne hashowanie haseł.
Terrorizer
Dzięki na pewno się to przyda smile.gif
Tak czy inaczej, wciąż wyskakuje mi alert, żeby podać email i hasło :/

EDIT: pozwoliłem sobie przesunąć całą linijkę 33 na miejsce 3 i teraz można się zalogować normalnie. Chociaż wciąż przy wpisaniu niepoprawnego pola wyskakuje aby podać email i hasło.
W ogóle tego nie ogarniam haha.gif
KsaR
if (!empty($_POST['email']) (...)
$email = $_POST['logemail'];

Czemu przypisujesz różne pola?.
Tak samo z hasłem.

Prawdo podobnie to jest problem.
Terrorizer
Już wszystko jasne! Bardzo mi pomogłeś dzięki smile.gif

email i pass to zmienne z rejestracji
logemail logpass to zmienne logowania

Zwyczajnie się zaplątałem w tym wszystkim
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.