我正在尝试创建一个忘记密码脚本,但是我会稍微陷入困境。
问题是,$query = sprintf("UPDATE
用户SET
密码= '%s'
WHERE
电子邮件= '$forgotpassword'",
mysql_real_escape_string($newpassword));
未更新“密码”字段中的数据。
“忘记”值会根据需要进行更新。而且,我知道脚本正在连接到数据库,因为忘记字段根据需要更新为“1”。
下面是代码:
//Generate a RANDOM MD5 Hash for a password
$random_password=md5(uniqid(rand()));
//Take the first 8 digits and use them as the password we intend to email the user
$emailpassword=substr($random_password, 0, 8);
//Encrypt MD5 format for the database
$newpassword = md5($emailpassword);
// Make a safe query
$query = sprintf("UPDATE `users` SET `password` = '%s'
WHERE `email` = '$forgotpassword'",
mysql_real_escape_string($newpassword));
$query = sprintf("UPDATE `users` SET `forgot` = '1'
WHERE `email` = '$forgotpassword'");
mysql_query($query)or die('Could not update members: ' . mysql_error());
我知道这个版本的MYSQL已被折旧,但这是该项目必须使用的内容。刚跟我一起去那个。
干杯
答案 0 :(得分:3)
您没有使用第一次更新调用mysql_query($query)
,只调用第二次更新。
// Make a safe query
$query = sprintf("UPDATE `users` SET `password` = '%s'
WHERE `email` = '$forgotpassword'",
mysql_real_escape_string($newpassword));
// NEED TO CALL mysql_query($query); HERE
$query = sprintf("UPDATE `users` SET `forgot` = '1'
WHERE `email` = '$forgotpassword'");
mysql_query($query)or die('Could not update members: ' . mysql_error());
答案 1 :(得分:2)
您正在撰写两个查询但只执行一个查询。
答案 2 :(得分:0)
可能密码未更新,因为WHERE子句与任何行都不匹配...您确定已在WHERE
电子邮件= '$forgotpassword'
中设置了电子邮件吗?