Задать вопрос

Пароль не проходит хеширование и отправляется открытым в БД, как это решить?

Здравствуйте!

При использовании функции хеширования пароля, не выводит ошибки и отправляет пароль открытым в БД, использую данную функцию впервые. Объясните, что я делаю не так?

if (!empty($_POST)){
        if ( !isset($_POST['name']) || !isset($_POST['lastname']) || !isset($_POST['email']) || !isset($_POST['pass']) ) {
            echo 'Не все данные заполнены!!!';
            die;
        }
       
        $name = $_POST['name'];
        $lastname = $_POST['lastname'];
        $email = $_POST['email'];
        $pwd = $_POST['pass'];
                
        $hashed_password = password_hash($pwd, PASSWORD_DEFAULT);
        //var_dump($hashed_password); //Выводим хеширвоанный пароль
        
        $stmt = $dbh->prepare("INSERT INTO users (name, lastname, email, password) VALUES (:name, :lastname, :email, :pass)");
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':lastname', $lastname);
        $stmt->bindParam(':email', $email);
        $stmt->bindParam(':pass', $pwd);

        $falg = $stmt->execute();
        
        if ($falg) {
                echo 'Успешно';
                die;
        } else {
                echo 'Ошибка';
                echo "\nPDO::errorInfo():\n";
                print_r($dbh->errorInfo()); //Выводим ошибки
                die;
        }    
    }
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$hashed_password = password_hash($pwd, PASSWORD_DEFAULT);
...
$stmt->bindParam(':pass', $pwd);
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Копируете чужой код без понимания.
2. $hashed_password - хешированный пароль тут!
$stmt->bindParam(':pass', $pwd); надо поменять на
$stmt->bindParam(':pass', $hashed_password);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы