Перемещение mysql базы данных с одного сервера на другой и использование password_hash - PullRequest
1 голос
/ 20 апреля 2020

Итак, для моего учебного проекта я разработал веб-приложение, которое прекрасно работает независимо от того, куда я его перемещаю. Однако я сталкиваюсь с проблемой с функцией PHP

password_hash($password, PASSWORD_DEFAULT)

Моя проблема заключается в том, что когда я делаю дамп базы данных для импорта в среду выполнения для моего класса, он не позволяет мне войти с паролем от старой системы. Однако, если я сделаю сброс пароля, я могу войти, но я заметил, что значения меняются.

Есть ли способ переместить данные из одной системы в другую, сохранив прежние значения без необходимости их сброса?

Форма входа

    $username = mysqli_real_escape_string($dbconn, $_POST["username"]);  
    $password = mysqli_real_escape_string($dbconn, $_POST["password"]); 

    $query = "SELECT UserId,FirstName,LastName,Password FROM yztp_gt_users.user_login where yztp_gt_users.user_login.email = '$username';";
    $result = mysqli_query($dbconn, $query);  
    if(mysqli_num_rows($result) > 0)  
    {  
        while($row = mysqli_fetch_array($result))  
        {
            $hash = $row["Password"];
            $uid = $row["UserId"];
            $firstname = $row["FirstName"];
            $lastname = $row["LastName"];

             if(password_verify($password, $hash))
             {  
                $_SESSION["uid"] = $uid;
                $_SESSION["FirstName"] = $firstname;
                $_SESSION["LastName"] = $lastname;
             }  
             else  
             {  
                  $error_message = '<label>Wrong user name or password</label>';  
             }  
        }  
    }   

Форма регистрации

    $password = mysqli_real_escape_string($dbconn, $_POST["password"]); 
    $email = mysqli_real_escape_string($dbconn, $_POST["email"]);
    $firstname = mysqli_real_escape_string($dbconn, $_POST["firstname"]);
    $lastname = mysqli_real_escape_string($dbconn, $_POST["lastname"]);

    $password = password_hash($password, PASSWORD_DEFAULT);  

    $login = "INSERT INTO social_users.user_login(UUID,Password,Email) values(uuid(),'$password','$email');";

    if(mysqli_query($dbconn, $login))  
    {
        $query = "SELECT uuid FROM yztp_gt_users.user_login WHERE email = '$email'";  
        $result = mysqli_query($dbconn, $query);  
        if(mysqli_num_rows($result) > 0)  
        {
            while($row = mysqli_fetch_array($result))  
            {                       
                if(mysqli_query($dbconn, $profile))
                {
                    echo '<script>alert("Please Check your email for activation")</script>';
                    $_SESSION["username"] = $email;
                    $_SESSION["FirstName"] = $firstname;
                    $_SESSION["LastName"] = $lastname;
                    $_SESSION["id"] = $row["uuid"];
                }
                else
                {
                    echo '<script>alert("Error Adding Profile Information")</script>';
                }
            }
        }
    }  

1 Ответ

0 голосов
/ 20 апреля 2020

Из документации PHP:

Используемый алгоритм, стоимость и соль возвращаются как часть ha sh. Таким образом, вся информация, необходимая для проверки ha sh, включена в него.

Вы сможете проверить пароль, используя функцию password_verify().

$password_correct = password_verify($password, $hash)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...