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 ;/
if ($_POST['send'] == 1) {
$pass_aktualne = $_POST['pass_aktualne'];
$pass = $_POST['pass'];
$pass_v = $_POST['pass_v'];
$errors = ''; // Zmienna przechowująca listę błędów które wystąpiły
if (!$pass_aktualne) $errors .= '- Musisz podać swoje stare hasło jeżeli chcesz je zmienić<br />';
if (!$pass || !$pass_v ) $errors .= '- Musisz podać nowe hasło i wpisać je ponownie w następne pole<br />';
if ($pass != $pass_v) $errors .= '- Hasła się nie zgadzają<br />';
if ($errors != '') {
echo '<p class="error">Zmiana danych nie powiodła się, popraw następujące błędy:<br />'.$errors.'</p>'; }
else {
//$pass = user::passSalter($pass);
//$pass = hash("sha256", $pass);
try {
$pass_aktualne = hash("sha256", $pass_aktualne);
$pass_porownaj = $db->prepare("SELECT COUNT(*) FROM users WHERE pass=:pass");
$pass_porownaj->bindValue(':pass', $pass_aktualne, PDO::PARAM_STR);
$pass_porownaj->execute();
if($pass_porownaj)
{
if($pass_porownaj==$pass_aktualne)
{
$pass = hash("sha256", $pass);
$zmiana_hasla = $db->prepare("UPDATE `users` SET `pass` = :pass WHERE `id` = :id");
$zmiana_hasla->bindParam(':pass', $pass, PDO::PARAM_STR);
$zmiana_hasla->bindParam(':id', $id, PDO::PARAM_INT);
$zmiana_hasla->execute();
echo '<p class="success">Zmieniłeś hasło pomyślnie ! <br />Zaloguj się ponownie.'.header( "refresh:1;url='.$location.'" );''; }
}
else {
echo '<p class="error">Wpisane aktualne hasło jest błędne.</p>'; }
}
catch (PDOException $e) {
echo 'Oops ! Cos poszło nie tak !<br>'.$e->getMessage(); }
//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>');
//echo '<p class="success">Zmieniłeś hasło pomyślnie !';
}
}
od razu mówię, że w kodzie jest pewnie troche błędów ale .. ucze się dopiero
Ten post edytował MrGohut 16.11.2013, 15:52:07