首页 > 解决方案 > 哈希密码与以前不同然后无法登录

问题描述

我只是用哈希密码创建注册表单和登录页面,但是当我登录时密码不匹配,它之前的工作。

PHP/7.3.1 Apache/2.4.37 XAMPP v3.2.2

注册.php

// Check error pada input sebelum memasukkan ke database
if(empty($firstname_err) && empty($lastname_err) && empty($gender_err) && empty($username_err) && empty($status_err) && empty($password_err) && empty($confirm_password_err)){

    // Mempersiapkan pemasukan stekmen database
    $sql = "INSERT INTO users (firstname, lastname, gender, username, status, password) VALUES (?, ?, ?, ?, ?, ?)";

    if($stmt = mysqli_prepare($link, $sql)){

        // Mem-bind variabel ke stekmen yang sudah disiapkan sebagai parameter
        mysqli_stmt_bind_param($stmt, "ssssss", $param_firstname, $param_lastname, $gender, $param_username, $param_status, $param_password);

        // Men-set parameter
        $param_firstname = $firstname;
        $param_lastname = $lastname;
        $param_gender = $gender;
        $param_username = $username;
        $param_status = $status;
        $param_password = password_hash($password, PASSWORD_DEFAULT); // Membuat sebuah hash password

        // Mencoba eksekusi stekmen yang sudah disiapkan
        if(mysqli_stmt_execute($stmt)){

            // Meng-redirect ke Halaman Login
            header("location: index.php");
        } else{
            echo "Oops! Ada yang salah. Silahkan coba lagi nanti.";
        }
    }

    // Menutup stekmen

}

登录.php

        // Mempersiapkan stekmen yang dipilih
        $sql = "SELECT id, username, password, status FROM users WHERE username = ?";

        if($stmt = mysqli_prepare($link, $sql)){
            mysqli_stmt_bind_param($stmt, "s", $param_username);   
            $param_username = $username;

            if(mysqli_stmt_execute($stmt)){
                mysqli_stmt_store_result($stmt);

                // Check jika username if already registered
                if(mysqli_stmt_num_rows($stmt) == 1){   


   mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password, $status);
                    if(mysqli_stmt_fetch($stmt)){
                        if(password_verify($password, $hashed_password)){

                            session_start();
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;
                            $_SESSION["status"] = $status;                    

                            // Meng-redirect ke Halaman Home
                            header("location: welcome.php");

                        } } } } }        
        // Menutup stekmen
        mysqli_stmt_close($stmt);
    }

但我明白了,生成的哈希密码以前是不同的,我知道发生了什么

标签: php

解决方案


推荐阅读