ユーザーのパスワードをリセットするための PHP スクリプトを作成しています。ユーザーがリセットを許可される前に、これら2つが有効である必要があるように、電子メールとトークンチェックのセットアップがあります。これまでのところ、パスワードをデータベースに挿入するところまではすべて機能しています。これが私の PDO のコードです (これらの部分で SQL クエリを壊したので、見やすくなっています)。
try {
$sql = "UPDATE users
SET password=:password, sessionTime=:sessionTime, sessionID=:sessionID
WHERE sessionID=:sessionID";
$update = $con->prepare($sql);
$update->bindValue("password", hash("sha256", $password . $salt), PDO::PARAM_STR);
$update->bindValue("sessionID", "0", PDO::PARAM_STR );
$update->bindValue("sessionTime", "0", PDO::PARAM_STR );
$update->execute();
echo "<br /> Successfully updated the password!";
} catch(PDOException $e) {
throw new Exception('something went wrong with the password reset', 0, $e);
}
$salt
$password
これより前に定義されており、スクリプトを実行すると出力さSuccessfully updated the password!
れますが、データベースでは何も変化しません。クエリをコピーして phpMyAdmin に貼り付け、:name
パラメーターを実際の文字列に変更すると、完全に機能し (データベースを更新)、エラーは返されphp_error.log
ません。なぜこれが機能しないのですか。
どんな助けでも大歓迎です、ありがとう。