Password_Verify проблема с хешированным паролем - PullRequest
0 голосов
/ 12 мая 2019

Здравствуйте, я пытаюсь внедрить систему входа в систему с Unity, однако, похоже, у меня проблема с моим PHP.

Я думаю, что сузил проблему до неправильного извлечения хеша из базы данных. Я подозреваю, что это проблема, потому что, если я жестко закодирую правильный хеш в переменную и использую password_verify (), он сработает, однако тот же хеш при извлечении из базы данных не будет проверяться.

Заранее спасибо за любую помощь.

Вот мой скрипт register.php:

<?php

    $conn = mysqli_connect("localhost", "root", "root", "MultiplayerExperience");

    $username = $_POST["usernamePost"];
    $password = $_POST["passwordPost"];

    if(mysqli_connect_errno())
    {
        echo("Connection failed");
        exit();
    }

    $userCheckQuery = "SELECT username FROM players WHERE username = '".$username."';";
    $userCheck = mysqli_query($conn, $userCheckQuery);

    if(mysqli_num_rows($userCheck) > 0)
    {
        echo("User already exists");
        exit();
    }

    $hashedPassword = password_hash(trim($password), PASSWORD_BCRYPT);

    $userInsertionQuery = "INSERT INTO players (username, hash) VALUES ('".$username."', '".$hashedPassword."' );";
    $userInsertion = mysqli_query($conn, $userInsertionQuery) or die("User insertion failed");

    echo("RegistrationSuccess");

?>

Here is my login.php script
<?php

    $conn = mysqli_connect("localhost", "root", "root", "MultiplayerExperience");

    $username = $_POST['usernamePost'];
    $password = $_POST['passwordPost'];

    if(mysqli_connect_errno())
    {
        echo("Connection failed");
        exit();
    }

    $nameCheckQuery = "SELECT username FROM players WHERE username = '".$username."';";
    $nameCheck = mysqli_query($conn, $nameCheckQuery);

    if(mysqli_num_rows($nameCheck) != 1)
    {
        echo("User not found");
        exit();
    }

    $hashFetchQuery = "SELECT hash FROM players WHERE username = '".$username."';";
    $hashFetch = mysqli_query($conn, $hashFetchQuery);

    $correctHash = '$2y$10$qeInE4VYnGiHRiivh/5z8OpX65NrWPYA6/UZTH2HIEGPV6gr9rNZ2';  //Correct hash copied from database
    $incorrectHash = '$2y$10$qeInP4YYnGiHRiivh/5z8OpX63NrWPYO6/UZTH2HIEGPV6gr9rNZ2';    //Incorrect hash for testing

    if(password_verify(trim($password), trim($hashFetch)))
    {
        echo("LoginSuccess");
        exit();
    }

    echo("Incorrect password");


?>

Я искал в Google несколько дней, и каждое сообщение об этом не решало мою проблему.

...