Функция PHP bindParam не работает - PullRequest
0 голосов
/ 05 июня 2018

Комментируя, я обнаружил, что последняя строка в этом коде, которая не закомментирована

$query->bindParam(':password', $password);

- это строка, в которой код перестает работать, и все, что я получаю, это

Эта страница не работает .... в настоящее время не может обработать этот запрос.HTTP ERROR 500 "

Однако я понятия не имею, что не так с использованием bindParam().

Позже я добавил это:

$query = $conn->prepare('UPDATE users SET user_password = ? WHERE user_email = ?');
$query->execute(array($password, $email));
echo "Your password has been successfully reset.";

Iснова изменили код и теперь он работает, теперь весь код выглядит так:

// Was the form submitted?
if (isset($_POST["ResetPasswordForm"])) {
    // Gather the post data
    include_once 'includes/database.inc.php';
    $email = $_POST['email'];
    $password = $_POST['password'];
    $confirmpassword = $_POST['confirmpassword'];
    $hash = $_POST["q"];

    // Use the same salt from the forgot_password.php file
    $salt = "498#2D83B631%3800EBD!801600D*7E3CC13";

    // Generate the reset key
    $resetkey = hash('sha512', $salt.$email);

    // Does the new reset key match the old one?
    if ($resetkey == $hash) {
        if ($password == $confirmpassword) {
            // has and secure the password
            $hashedPassword = password_hash($password, PASSWORD_DEFAULT);
        // Update the user's password








            $sqlUpdate =  "UPDATE users SET user_password = ? WHERE user_email = ?;";


                   $stmt = mysqli_stmt_init($conn); 
                    if (!mysqli_stmt_prepare($stmt, $sqlUpdate)) {
                    echo "SQL Failed";
                    exit();
                    } else {
                       mysqli_stmt_bind_param($stmt, "ss", $hashedPassword, $email);
                       mysqli_stmt_execute($stmt);
                       echo "Your password has been successfully reset2.";

                       exit();

    } else {
        echo "Your password reset key is invalid.";
        exit();
    }
}
?>

1 Ответ

0 голосов
/ 05 июня 2018

При привязке необходимо указать тип данных: http://php.net/manual/en/pdostatement.bindparam.php

Использование: $query->bindParam(':password', $password, PDO::PARAM_STR);

...