我是php的新手,我在使用以下代码时遇到了一些问题:
$code = $_COOKIE['user'];
$db=mysql_connect ("XXX.XXX.XXX", "XXX", "XXX") or die ('I cannot connect to the database because: ' . mysql_error());
$mydb=mysql_select_db("XXX");
$sql="SELECT * FROM accounts WHERE UserCode = '$code'";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
$current = $row['Userpassword'];
};
$toldcurr = $POST["oldpass"];
$pass1 = $_POST["newpass1"];
$pass2 = $_POST["newpass2"];
if ($current !== $toldcurr) {
header ('Location: changepasserror1.html');
};
if ($pass1 !== $pass2) {
header ('Location: changepasserror2.html');
};
$timywhimy = gmdate('Y-m-d H:i:s e');
$query1 = "UPDATE accounts SET Userpassword='$pass2' WHERE UserCode='$code'";
$query2 = "INSERT INTO accountupdate (`User`, `Change`, `From`, `To`, `Time`)
VALUES ('$code', 'Password', '$current', '$pass2', '$timywhimy')";
mysql_query($query1);
mysql_query($query2);
header ('Location: changepass.html');
我遇到的问题是
if ($current !== $toldcurr) {
header ('Location: changepasserror1.html');
};
if ($pass1 !== $pass2) {
header ('Location: changepasserror2.html');
};
无效。当我知道这两个变量不相等时,它仍然继续脚本并更改MySQL数据库中的数据。
感谢任何帮助。
我已将代码更新为
if ($current !== $toldcurr) {
header ('Location: changepasserror1.html');
exit();
}
if ($pass1 !== $pass2) {
header ('Location: changepasserror2.html');
exit();
}
除此之外,唯一的变化是mysql_
到mysqli_
。
我遇到的问题是,即使changepasserror2.html
和$pass1
相同,也始终会将我发送给$pass2
。
此外,它永远不会将我发送到changepasserror1.html
,即使$current
和$toldcurr
不同。
如果$pass1
= $pass2
和$current
= $toldcurr
会发生什么,那么应该更新数据库并重定向到成功页面。如果其中一个变量彼此不相等,那么它将重定向到错误页面,并且不会对数据库进行更新。
答案 0 :(得分:-1)
首先将此$toldcurr = $POST["oldpass"];
更改为$toldcurr = $_POST["oldpass"];
答案 1 :(得分:-2)
只需使用下面的语句就可以了解
if ($current !== $toldcurr) {
header ('Location: changepasserror1.html');
return false;
}
if ($pass1 !== $pass2) {
header ('Location: changepasserror2.html');
return false;
}
使用上面的代码,当你用oops风格编写代码时,它会很清楚并帮助你 尝试写出适当的条件