Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Dziwne działanie skryptu
Forum PHP.pl > Forum > Przedszkole
adrianozo
Witam smile.gif
Napisałem mały skrypt i zastanawia mnie jego dziwne działanie:

  1. <?php
  2. $haslo = md5(sha1($_POST['haslo']));
  3. $haslo1 = md5(sha1($_POST['haslo1']));
  4. $haslo2 = md5(sha1($_POST['haslo2']));
  5. $zapytanie = mysql_query("SELECT * FROM `user` WHERE `id` = '".$_SESSION['id']."'");
  6. while($wiersz = mysql_fetch_array($zapytanie))
  7. $starehaslo = $wiersz['haslo'];
  8. echo '<form action="index.php?page=changepassword" method="post">
  9. Podaj swoje obecne hasło: <input type="password" name="haslo" /><br /><br />';
  10. echo 'Podaj nowe hasło: <input type="password" name="haslo1" /><br /><br />';
  11. echo 'Potwierdź nowe hasło: <input type="password" name="haslo2" /><br /><br />';
  12. echo '<input name="aktualizuj" type="submit" value="Aktualizuj hasło">
  13. </form><br />';
  14. if(isset($_POST['aktualizuj']))
  15. {
  16. if(empty($haslo) || empty($haslo1) || empty($haslo2))
  17. {
  18. echo 'Nie wypełniono wszystkich pól.<br />';
  19. }
  20. if($starehaslo != $haslo)
  21. {
  22. echo 'Podano nieprawidłowe stare hasło.<br />';
  23. }
  24. if($haslo1 != $haslo2)
  25. {
  26. echo 'Podane hasła nie są identyczne.<br /><br />';
  27. }
  28. else
  29. {
  30. $zap = mysql_query("UPDATE `user` SET `haslo` = '".$haslo2."' WHERE `id` = '".$_SESSION['id']."'");
  31. if($zap === TRUE)
  32. {
  33. echo 'Hasło zostało zmienione';
  34. }
  35. else
  36. {
  37. echo 'Nie udało się zmienić hasła. Prosimy spróbować ponownie za jakiś czas.';
  38. }
  39. }
  40. }
  41. ?>


Po przesłaniu pustego formularza otrzymuje komunikat:

Podano nieprawidłowe stare hasło.
Hasło zostało zmienione.

I hasło się zmienia w bazie na pusty ciąg. Dlaczego tak się dzieje. Co zrobiłem źle bo nie mogę zauważyć
Agape
powinienes stosowac if elseif
wytlumacze Ci
Sprawdzasz czy hasla nie sa puste, jesli sa wypisuje ze nie przeslano i skrypt leci dalej, kolejna instrukcja to sprawczy czy pobrane z bazy haslo (np. "kornik") pasuje do przeslanego (tu, pustego), nie pasuje wiec wypisuje komunikat i idzie dalej. Haslo1 i haslo2 sa oba przeslane przez formularz a skoro byl pusty oba sa puste i dajesz im mozliwosc modyfikacji hasla na to przeslane (czyli puste)

Musisz troche sobie to rozplanowac i nie pozwolic skryptowi isc dalej jak nie powinien. Np. jesli hasla sa puste wypisz ze sa puste i tyle, else idz dalej. Tak musisz pisac.
adrianozo
Tylko w tym rzecz, że sprawdzam czy są puste a gdy u mnie są puste nie otrzymuje tego komunikatu, że są puste... smile.gif
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.