Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Dziwne działanie skryptu
adrianozo
post
Post #1





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Witam (IMG:style_emoticons/default/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ć
Go to the top of the page
+Quote Post
Agape
post
Post #2





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

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


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.
Go to the top of the page
+Quote Post
adrianozo
post
Post #3





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Tylko w tym rzecz, że sprawdzam czy są puste a gdy u mnie są puste nie otrzymuje tego komunikatu, że są puste... (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 26.08.2025 - 08:50