W zasadzie tak jak wpisałem w temacie
Uczę się PHP i w ramach nauki pisze sobie system logowania
Mam problem ze zmianą hasła , mianowicie niby wszystko działa bo hasło zmienia i zapisuje go w bazie
Ale dodałem do rejestracji pytanie zabezpieczające i do skryptu przywracania próbuje tez to dodać . jednak nie działa on tak jak bym tego chciał
Pierwsza próba która zakończyła się sukcesem (zmieniło hasło) stała się moją zmora
Teraz nieważne do jakiego konta bym nie chciał zmienić hasło to nie przyjmuje pytania i odpowiedzi zabezpieczającej zapisanej w bazie
Zmienia hasło jedynie z pytaniem i odpowiedzią jakiej użyłem pierwszy raz
Proszę o pomoc w rozwiązaniu tego problemu , poniżej zamieszczam kod
<?php $wszystko_OK=true; $user = $_POST['login']; $pytanie = $_POST['pytanie']; $odpowiedz = $_POST['odpowiedz']; $haslo1 = $_POST['haslo1']; $haslo2 = $_POST['haslo2']; if((mb_strlen($haslo1)<8) || (mb_strlen($haslo1)>20)) { $wszystko_OK=false; $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!"; } if($haslo1!=$haslo2) { $wszystko_OK=false; $_SESSION['e_haslo']="Hasła nie zgadzają się!"; } $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT); require_once "connect.php"; mysqli_report(MYSQLI_REPORT_STRICT); try { $polaczenie= new mysqli($host,$db_user,$db_password,$db_name); if ($polaczenie->connect_errno!=0) { throw new Exception(mysqli_connect_errno()); } else { $zapytanie = $polaczenie->query("SELECT * FROM uzytkownicy WHERE pytanie='$pytanie' AND odpowiedz='$odpowiedz'"); if(!$zapytanie) throw new Exception($polaczenie->error); else{ $ile_pytanie=$zapytanie->num_rows; if($ile_pytanie!=$pytanie) { $wszystko_OK=false; $_SESSION['e_pytanie']="Pytania nie zgadzają się!"; } $ile_odpowiedz=$zapytanie->num_rows; if($ile_odpowiedz!=$odpowiedz) { $wszystko_OK=false; $_SESSION['e_odpowiedz']="Odpowiedzi nie zgadzają się!"; } } $zapytanie->close(); if ($wszystko_OK==true) { $zmiana = "UPDATE uzytkownicy SET pass = '$haslo_hash' WHERE user='$user'"; if ($polaczenie->query($zmiana) === true){ } else{ throw new Exception($polaczenie->error); } } $polaczenie->close(); } } catch(Exception $e) { } } ?> <!DOCTYPE HTML> <html lang="pl"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <title>Reset hasła </title> </head> <body> <form method="post"> Nazwa użytkownika: <br /> <input type="text" name="login" /><br /> Twoje hasło: <br /> <input type="text" name="haslo1" /><br /> <?php { } ?> <input type="hidden" name="wyslane" value="TRUE" /> Powtórz hasło: <br /> <input type="text" name="haslo2" /><br /> Pytanie zabezpieczające: <br /> <input type="text" name="pytanie" /><br /> <?php { } ?> Odpowiedż: <br /> <input type="text" name="odpowiedz" /><br /> <?php { } ?> <br /> <input type="submit" value="Zmień hasło" /> </form> </body> </html>
Będę wdzięczny za wszelkie podpowiedzi , wskazanie błędu .Podpowiedź jak go rozwiązać