我正在使用 PHP 和 mysqli,该程序正在做的是,如果在它设置密码的数据库中找到电子邮件添加和重置代码,它会要求重置代码和电子邮件地址,这部分功能正在工作,
我需要这部分的帮助:我需要做的是告诉用户是否设置了密码,以及更新是否成功。
我正在做什么:
$uinsert = "UPDATE member SET password = '$password' WHERE emailadd = '$emailadd' AND resetCode = '$resetcode'";
$update = mysqli_query($mysqli, $uinsert) or die(mysqli_error($mysqli));
if(mysqli_affected_rows($update) == 1 ){ //ifnum
header("location: ../index.php"); // Redirecting To Other Page
}
else{
echo "<script> alert('Incorrect code, try again!');</script>";
}
注意:$mysqli是我的连接字符串
“@Fred-ii-非常感谢你的工作! – 咖啡编码员 58 秒前”
Use if(mysqli_affected_rows($mysqli) >0 )
或者根本没有比较。
边注:==1
仅比较 1,而不是>0
您可能正在尝试更新多行。然而,在极少数情况下,>0
如果我以前也发生过这种情况,则需要这样做;这就是我回答的原因。
affected_rows()
使用连接,而不是用于查询的连接。
- http://php.net/manual/en/mysqli.affected-rows.php
另外,如果您要存储纯文本密码,请使用password_hash()
因为它更安全:
- http://php.net/manual/en/function.password-hash.php
旁注:如果您确实决定转向该功能,请确保您根本不会操纵密码。散列/验证它可以解决这个问题,这样做和限制密码可能弊大于利。
即:有效密码test'123
将被解释为test\'123
并在使用时呈现 FALSEreal_escape_string()
例如。
或者您可能仍在使用hash_hmac
根据你的其他问题比较/检查 mysqli 数据库 [hash_hmac] 中的密码是否正确
和一份准备好的声明:
- https://en.wikipedia.org/wiki/Prepared_statement
最好还加上exit;
在标头之后。否则,您的代码可能需要继续执行。
header("location: ../index.php");
exit;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)