0

我正在尝试创建一个忘记密码的脚本,但是我有点赶上了。

问题是,$query = sprintf("UPDATE用户SET密码= '%s' WHERE电子邮件= '$forgotpassword'", mysql_real_escape_string($newpassword));没有更新“密码”字段中的数据。

'forgot' 值会根据需要进行更新。再一次,我知道脚本正在连接到数据库,因为忘记字段正在根据需要更新为“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 已经过时了,但它是这个项目必须使用的。只得和我一起去那个。

干杯

4

3 回答 3

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());
于 2013-04-17T15:46:41.943 回答
2

您正在编写两个查询,但只执行一个。

于 2013-04-17T15:46:42.830 回答
0

也许密码没有更新,因为 WHERE 子句不匹配任何行......你确定你已经在 email 中设置了WHERE电子邮件= '$forgotpassword'吗?

于 2013-04-17T15:48:18.417 回答