Хэш пароля возвращает пароль не совпадает - PullRequest
0 голосов
/ 11 октября 2019

Я создал password_hash во время процесса регистрации, и когда я возвращаюсь, чтобы войти в систему и вводить электронную почту и пароль с помощью password_verify, он выводит, что пароль не совпадает. Чтобы проверить, что мой запрос работает, я сгенерировал хэш пароля с помощью онлайн-инструмента по этой ссылке http://www.passwordtool.hu/php5-password-hash-generator

Это успешно позволяет пользователю войти в систему, но автоматически генерируемый хэш с помощью password_hash всегда терпит неудачу, что означает, что мой запросХорошо. Есть ли решение для правильной работы password_hash?

Любая помощь будет полезна. Заранее спасибо,

Я пытался использовать статический password_hash, который выглядел как $ 2y $ 10 $ 3xrOcCz5fewSd90zS7dgseINs1WpD132MtrWjFmG3qSQcNDXpcgbe, который представляет собой пароль @ 123

1019 * 1011 1012 Зарегистрировать для регистрации в AjaxПроцесс


    require_once('dbconn.php');


    if($_POST)
    {

        $email = $_POST['email'];
        $cpassword = $_POST['confirm_password'];
        $hashed = password_hash($cpassword, PASSWORD_DEFAULT);

        $sql = "INSERT INTO user_login (user_email, user_password) VALUES (?,?)";
        $stmt = mysqli_prepare($conn, $sql);
        mysqli_stmt_bind_param($stmt, "ss", $email, $hashed);
        $result = mysqli_stmt_execute($stmt);

        if ($result) {
            echo "Successfully Inserted !";
            //echo '<script type="text/javascript">';
            //echo 'setTimeout(function () { swal("Thanks!","Your account is created !","success");';
            //echo '}, 1000);</script>';

        }

        else{
            echo "Error occurred! ".mysqli_stmt_errno($stmt)." ".mysqli_stmt_error($stmt)." "; 
            $error = mysqli_stmt_error($stmt);
        }

    }

    mysqli_close($conn);

?>

Вход в систему


        if(isset($_POST['btn_lg'])) {

            $email = $_POST['email'];
            $password = $_POST['password'];

            $sql = "SELECT `user_email`, `user_password` FROM `user_login` WHERE `user_email` = ?";

            $stmt = mysqli_prepare($conn, $sql);
            mysqli_stmt_bind_param($stmt,"s", $email);

            $result = mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
            mysqli_stmt_bind_result($stmt, $email, $pass);
            mysqli_stmt_fetch($stmt);

            if(mysqli_stmt_num_rows($stmt) === 1)
            {

                //$row = mysqli_stmt_fetch($stmt);

                $hash = $pass;

                //echo $hash;




                if(password_verify($password, $hash))
                {
                    $_SESSION['Logged'] = true;

                    $_SESSION['email'] = $email;

                    ?>
                        <script type="text/javascript">
                            window.location.href="test.php";
                        </script>
                    <?php
                }


                else
                {
                    echo  "The username or password do not match" ;
                }

            }


            else 
            {
                echo "Login Failed ! " .mysqli_stmt_errno($stmt)." ".mysqli_stmt_error($stmt)." ";  
            }

        }
    ?>

Я ожидал, что результат входа в систему будет истинным, но вывод будет ложным

...