phpmyadminのデータベースがあり、そこにパスワード列があります。パスワードを変更できるスクリプトを作成したいのですが、現在のパスワードがデータベース内のパスワードと同じであれば、変更は成功します。ただし、現在のパスワードがデータベース内のパスワードと一致しない場合、パスワードの変更は失敗します。
試してみると、現在のパスワードがデータベースのパスワードと同じであっても、常に間違ったパスワードを取得したり失敗したりします。Postmanを使ってチェックします
これは私のデータベースデータベースです
これは私のPHPスクリプトです
<?php
if ($_SERVER['REQUEST_METHOD']=='POST'){
$id = $_POST['id'];
$currentpassword = $_POST['currentpassword'];
$newpassword = $_POST['newpassword'];
require_once 'connect.php';
$sql = "SELECT * FROM user_account WHERE id='$id' ";
$response = mysqli_query($conn, $sql);
//echo mysqli_num_rows($response);
if(mysqli_num_rows($response) > 0){
$row = mysqli_fetch_assoc($response);
if (password_verify($currentpassword, $row['password']) ){
$updatepass = "UPDATE user_account SET password='$newpassword' WHERE id='$id' ";
if(mysqli_query($conn, $updatepass)) {
$result["success"] = "1";
$result["message"] = "success";
echo json_encode($result);
mysqli_close($conn);
}
else{
$result["success"] = "0";
$result["message"] = "error!";
echo json_encode($result);
mysqli_close($conn);
}
}else{
$result['success'] = "0";
$result['message'] = "Wrong password.";
echo json_encode($result);
mysqli_close($conn);
}
}
}
?>
password_verify —パスワードがハッシュと一致することを確認します
パスワードを生のパスワードとして保存します。関数がtrueを返すように、password_hash()関数を使用してパスワードをハッシュパスワードとしてデータベースに保存する必要があります。password_verify
//for example replace this
$query = "insert into user_account(name, email, password) values ('testing','[email protected]','1234567')";
//with this
$query = "insert into user_account(name, email, password) values ('testing','[email protected]','" . password_hash('1234567') . "')";
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加