Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] md5 i porównanie zmiennych w warunku
Turson
post
Post #1





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Więc robię taki skrypcik zmiany hasła. Użytkwnik musi podać nowe, a potem stare hasła dla potwierdzenia. Hasło w bazie jest zakodowane md5. W jaki sposób teraz porównać czy hasło z bazy jest takie samo jak to wpisane przez użytkownika w formularzu?

  1. if(md5($_POST["haslo_z_formularza"]==($haslo_z_bazy))

Takie coś nic nie da, bo za każdym razem zakoduje inaczej

Ten post edytował TursoN 30.12.2011, 21:03:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
buliq
post
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


md5 to algorytm szyfrujący na podstawie ciągu znaków. Za każdym razem ten sam ciąg będzie miał taki sam wynik w wyniku szyfrowania. Więc jeżeli użytkownik w bazie ma wpisane hasło 12345 i ponownie poda to hasło to obydwa wyniki będą równe.

Spróbuj:

  1. if ( md5(stare_haslo) == md5(nowe_haslo)) do something


Ten post edytował buliq 30.12.2011, 21:08:16
Go to the top of the page
+Quote Post
Turson
post
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Napisałem następujący kod:
  1. $zapytanie2 = "SELECT * FROM `users` WHERE login='$_SESSION[login]'";
  2. $idzapytania2 = mysql_query($zapytanie2);
  3. while ($haslo = mysql_fetch_assoc($idzapytania2)) {
  4. $password = (md5($_POST["opass"]));
  5. if($password==($haslo["password"])){
  6. echo "ok";}else echo "hasła nie sa takie same";}

Ale nie wychodzi. Gdy dam polecenie wyświetlenia zmiennej $password to różni się od tej w bazie ;O
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




1) Jak wkładasz dane do bazy
2) Jakiego typu jest pole w bazie i jakiego rozmiaru
Go to the top of the page
+Quote Post
piotrooo89
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(buliq @ 30.12.2011, 21:06:38 ) *
md5 to algorytm szyfrujący na podstawie ciągu znaków. Za każdym razem ten sam ciąg będzie miał taki sam wynik w wyniku szyfrowania.


md5 to nie algorytm szyfrujący, tylko hashujący, szyfrowanie możemy odszyfrować (na podstawie np. klucza), a hashowanie to obliczanie skrótu, czyli jest jednokierunkowy.
Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Faktycznie, problemem było char(15) w bazie (IMG:style_emoticons/default/tongue.gif) zapomniałem się przy zakładaniu tabeli i tyle.

Po powiększeniu do 32 znaków problem się rozwiązał

Napotkałem kolejny problem.

  1. $zapytanie2 = "SELECT * FROM `users` WHERE login='$_SESSION[login]'";
  2. $idzapytania2 = mysql_query($zapytanie2);
  3. while ($haslo = mysql_fetch_assoc($idzapytania2)) {
  4. $password = (md5($_POST["opass"]));
  5. if($password==($haslo["password"])){
  6. $zap = "UPDATE `users` SET `password` = '$password' WHERE login='$_SESSION[login]'";
  7. $aktualizuj = mysql_query($zap);

Problemem jest tu zaktualizowanie rekordu. Działa każda kombinacja słowna, ale zmienna $password nic nie robi
Go to the top of the page
+Quote Post
piotrooo89
post
Post #7


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a co ma ta zmienna "robić"? sprecyzuj.
Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Nie zmienna $password ma robić. Ale aktualizowanie działa dla dowolnej frazy, a nie dla zmiennej
Go to the top of the page
+Quote Post
piotrooo89
post
Post #9


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




albo jest już późno i muszę się położyć, albo nie kumam... dzieje się że ten if sie zawsze wykonuje? jak tak wyechuj sobie $password i $haslo["password"] przed if'em i zobacz co w nich siedzi.
Go to the top of the page
+Quote Post
Turson
post
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Problem rozwiązałem i kolejny raz to moja wina przed niedopatrzenie.
Przecież $password to nic innego jak hasło z bazy (taki miał być warunek), więc jeśli zastąpiłem hasło w bazie zmienną $password to wychodziło na to samo co było (IMG:style_emoticons/default/biggrin.gif) przecież miałem uaktualnić nowym hasłem...
Go to the top of the page
+Quote Post
zalespl
post
Post #11





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.12.2011

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


  1.  
  2.  
  3. $user = $_SESSION['username'];
  4.  
  5. if ($user)
  6. {
  7. if ($_POST['submit'])
  8. {
  9. //zmiana hasla
  10. $oldpassword = md5($_POST['oldpassword']);
  11. $newpassword = md5($_POST['newpassword']);
  12. $repeatnewpassword = md5($_POST['repeatnewpassword']);
  13.  
  14. //sprawdzam hasło
  15.  
  16. //łączę się z bazą
  17. $connect = mysql_connect("mysql10.000webhost.com","a4814337_zales","******") or die("Nie mogę połączyć się z bazą danych");
  18. mysql_select_db("a4814337_phplog") or die("Nie znalazłem takiej bazy danych");
  19.  
  20. $queryget = mysql_query("SELECT password FROM users WHERE username='$user'");
  21. $row = mysql_fetch_assoc($queryget);
  22.  
  23. $oldpassworddb = $row['password'];
  24.  
  25. //spr hasło
  26. if ($oldpassword==$oldpassworddb)
  27. {
  28. //spr nowe hasło
  29. if ($newpassword==$repeatnewpassword)
  30. {
  31. //zmieniam hasło w bazie
  32. $querychange = mysql_query("
  33. UPDATE users SET password='$newpassword' WHERE username='$user'
  34.  
  35. ");
  36. session_destroy(); //aby wylogowało użytkownika po zmianie hasła
  37. die("Hasło zmieniono. <a href='index.html'>Kliknij tu</a> aby przejsc do strony logowania");
  38.  
  39.  
  40. }
  41. else
  42. {
  43. die("Nowe hasła nie zgadzają się.");
  44. }
  45. }
  46. else
  47.  
  48. die("Stare hasło nie zgadza się.");
  49.  
  50.  
  51. }
  52. else
  53. {
  54. <form action='changepassword.php' method='POST'>
  55. Stare hasło: <input type='oldpassword' name='oldpassword'><p>
  56. Nowe hasło: <input type='password' name='newpassword'><p>
  57. Powtórz nowe hasło: <input type='password' name='repeatnewpassword'><br>
  58. <input type='submit' name='submit' value='Zmień hasło'>
  59. ";
  60. }
  61. }
  62. else
  63. die("Musisz być zalogowany aby zmienić hasło.");
  64.  
  65.  


Ostatnio się tym bawiłem. Proszę, oto mój kod.
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: 5.10.2025 - 17:57