Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Porównanie hasła z bazy i formularza
MrGohut
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 29.04.2013

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


Mam skrypt do zmiany hasła. Aby zmienić hasło trzeba wpisać obecne. Jak zrobić, aby skrypt porównywał zhashowane hasło w bazie z tym zhashowanym (przez skrypt) w formularzu ?
Próbowałem samemu ale mi to nie wychodzi ;/
  1. if ($_POST['send'] == 1) {
  2. $pass_aktualne = $_POST['pass_aktualne'];
  3. $pass = $_POST['pass'];
  4. $pass_v = $_POST['pass_v'];
  5.  
  6. $errors = ''; // Zmienna przechowująca listę błędów które wystąpiły
  7.  
  8. if (!$pass_aktualne) $errors .= '- Musisz podać swoje stare hasło jeżeli chcesz je zmienić<br />';
  9. if (!$pass || !$pass_v ) $errors .= '- Musisz podać nowe hasło i wpisać je ponownie w następne pole<br />';
  10. if ($pass != $pass_v) $errors .= '- Hasła się nie zgadzają<br />';
  11.  
  12. if ($errors != '') {
  13. echo '<p class="error">Zmiana danych nie powiodła się, popraw następujące błędy:<br />'.$errors.'</p>';
  14. }
  15. else {
  16. //$pass = user::passSalter($pass);
  17. //$pass = hash("sha256", $pass);
  18.  
  19. try {
  20. $pass_aktualne = hash("sha256", $pass_aktualne);
  21.  
  22. $pass_porownaj = $db->prepare("SELECT COUNT(*) FROM users WHERE pass=:pass");
  23. $pass_porownaj->bindValue(':pass', $pass_aktualne, PDO::PARAM_STR);
  24. $pass_porownaj->execute();
  25.  
  26. if($pass_porownaj)
  27. {
  28. if($pass_porownaj==$pass_aktualne)
  29. {
  30. $pass = hash("sha256", $pass);
  31.  
  32. $zmiana_hasla = $db->prepare("UPDATE `users` SET `pass` = :pass WHERE `id` = :id");
  33. $zmiana_hasla->bindParam(':pass', $pass, PDO::PARAM_STR);
  34. $zmiana_hasla->bindParam(':id', $id, PDO::PARAM_INT);
  35. $zmiana_hasla->execute();
  36. echo '<p class="success">Zmieniłeś hasło pomyślnie ! <br />Zaloguj się ponownie.'.header( "refresh:1;url='.$location.'" );'';
  37. }
  38. }
  39. else {
  40. echo '<p class="error">Wpisane aktualne hasło jest błędne.</p>';
  41. }
  42. }
  43. catch (PDOException $e) {
  44. echo 'Oops ! Cos poszło nie tak !<br>'.$e->getMessage();
  45. die();
  46. }
  47. //mysql_query("UPDATE `users` SET `pass` = '$pass' WHERE `id` = '$id'") or die ('<p class="error">Wystąpił błąd w zapytaniu i nie udało się zarejestrować użytkownika.</p>');
  48. //echo '<p class="success">Zmieniłeś hasło pomyślnie !';
  49. }
  50. }


od razu mówię, że w kodzie jest pewnie troche błędów ale .. ucze się dopiero (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował MrGohut 16.11.2013, 15:52:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MrGohut
post
Post #2





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 29.04.2013

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


Cytat
Jaki konkretnie jest problem?

Nie potrafie zrobić sprawdzania zhashowanego hasła w bazie z tym co zostało wpisane w formularzu.

Przecież robie select ... nie wiem jak to inaczej moge zrobić, nie jestem wszechwiedzący, dopiero zaczynam, więc się pytam, lol.
nie wiem.
Jak bym wiedział, to pewnie bym tu nie pisał bo bym nie miał problemu.
może tak
  1. $pass_porownaj = $db->prepare("SELECT id=:id FROM users WHERE pass=:pass");
  2. $pass_porownaj->bindValue(':pass', $pass_aktualne, PDO::PARAM_STR);
  3. $pass_porownaj->bindParam(':id', $id, PDO::PARAM_INT);
  4. $pass_porownaj->execute();
  5. $haslo = $pass_porownaj->fetch();


Ten post edytował MrGohut 16.11.2013, 16:23:06
Go to the top of the page
+Quote Post

Posty w temacie


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: 13.10.2025 - 10:34