如何使用用户唯一的安全代码从数据库更新密码

时间:2013-07-16 09:36:55

标签: php mysql database

我是数据库的新手。我的问题是我想用他/她的安全代码更新用户密码。用户在注册时输入安全代码。(任何地方/城市/朋友/叔叔等的名称)。我创建了名为table的表details

FNAME
LNAME
PASS
BDAY
EMAIL
CODES(//users security code)

我有一个php文件可以检查出来但是,有些东西出错了Secured.php:

<? $CODES = $_POST['CoDes'];
$PASS = $_POST['pass'];

mysql_connect('localhost','user','pass');
mysql_selectdb('userdb') or die(mysql_error());

$query = mysql_query(sprintf("UPDATE `details` SET PASS = '$PASS' WHERE CODES = '$CODES'"));   
mysql_real_escape_string($CODES) or die(mysql_error()); while($row = mysql_fetch_assoc($query))
{$rows[1] = $row;}
if(empty($rows[1][CODES]))
{ header("Location: http://localhost/Error.html"); }
else{
echo "Welcome,";
echo " your password has changed successfully to $PASS";
}
?>
<b>You can login</b><a href="http://localhost/login.html><em> here.</em></a><br> 
<img src="http://localhost/images/logo.gif">

这个页面没有给我任何php错误,但转到/Error.html即使在coloumn CODES中存在用户安全代码 任何帮助都会非常感谢。

2 个答案:

答案 0 :(得分:2)

UPDATE/INSERT/DELETE 未提供结果集,因此您无法使用mysql_fetch_assoc检索结果。

SELECT 查询仅提供结果集。

你必须以这种方式检查

if($query) {
    // query executed successfully
} else {
    // query not executed successfully
}

OR

if(mysql_affected_rows() > 0) {
    // query executed successfully
} else {
    // query not executed successfully
}

答案 1 :(得分:0)

$pass = some_type_of_security($_POST['pass']);

SELECT ... FROM ... WHERE codes=:codes AND user=:user

如果行数等于1则

UPDATE table SET pass=:pass WHERE user=:user

我建议将PDO用于数据库操作