我制作了一个脚本,可以让用户更改密码。但我得到错误 确认密码和新密码不匹配.. 这是代码
<?
session_start();
include 'db.php';
if($_POST['username']!="") {
$username = $_POST['username'];
}
else die("No Username was passed");
if($_POST['password']!="") {
$password = $_POST['password'];
}
else die("No Password was passed");
if($_POST['newpassword']!="") {
$newpassword = $_POST['newpassword'];
}
else die("No NewPassword was passed");
if($_POST['confirmnewpassword']!="") {
$newpassword = $_POST['confirmnewpassword'];
}
else die("No Confirm Password was passed");
$username = $_POST['username'];
$password = $_POST['password'];
$newpassword = $_POST['newpassword'];
$confirmnewpassword = $_POST['confirmnewpassword'];
$result = mysql_query("SELECT password FROM users WHERE username='$username'");
if(!$result){
echo "The username entered does not exist!";
}
else
if($password != mysql_result($result, 0)){
echo "Entered an incorrect password";
}
if($newpassword == $confirmnewpassword){
$sql = mysql_query("UPDATE users SET password = '$newpassword' WHERE username = '$username'");
}
if(!$sql){
echo "Congratulations, password successfully changed!";
}
else{
echo "New password and confirm password must be the same!";
}
?>
这里是表格代码
<form action="lostpw.php" method="post" name="" id="">
<table width="50%" border="0" align="center" cellpadding="4" cellspacing="0">
<tr>
<td width="22%">Username</td>
<td width="78%"><input name="username" type="text" id="username" value="<? echo "". $_SESSION['username'] ."" ?>"></td>
</tr>
<tr>
<td width="22%">Old password</td>
<td width="78%"><input name="password" type="text" id="password"></td>
</tr>
<td>New Password</td>
<td><input name="newpassword" type="newpassword" value=""></td>
</tr>
<tr>
</tr>
<td>Confirm </td>
<td><input name="confirmnewpassword" type="confirmnewpassword" value=""></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="update"></td>
</tr>
<tr>
<td><a href="home.php">Back</a></td>
</tr>
</table>
</form>
我在哪里做错了。
答案 0 :(得分:1)
在任何不良行为的情况下,你都不会停止。在以下情况之后,您不会停止执行脚本:
if(!$result){
echo "The username entered does not exist!";
} else if($password != mysql_result($result, 0)){
echo "Entered an incorrect password";
}
因此:
if($newpassword == $confirmnewpassword){
$sql = mysql_query("UPDATE users SET password = '$newpassword' WHERE username = '$username'");
}
将始终进行评估。
另外
if(!$sql){
echo "Congratulations, password successfully changed!";
} else {
echo "New password and confirm password must be the same!";
}
表示:查询失败时($sql = false
,!$sql = true
)打印成功消息,否则打印失败消息。我不认为这就是你想要的。您可能想要反转这两个块。
答案 1 :(得分:0)
你不应该有这个感叹号,这是一个逆变器。这就是说'如果查询没有工作,请说祝贺,否则如果DID工作,则给出错误信息。'以下内容:
if(!$sql){
echo "Congratulations, password successfully changed!";
}
else{
echo "New password and confirm password must be the same!";
}
应该是:
if($sql){
echo "Congratulations, password successfully changed!";
}
else{
echo "New password and confirm password must be the same!";
}