我正在尝试制作一个简单的重置密码表单,用户可以在其中输入用户名、电子邮件地址、新密码并确认新密码。但是,当我运行该页面时,没有任何反应。下面是我正在使用的表单以及 PHP 脚本。
表格:
<form method="POST" action="password.php">
<table>
<tr>
<td>Enter your Email</td>
<td><input type="text" size="60" name="email"></td>
</tr>
<tr>
<td>Enter your UserName</td>
<td><input type="text" size="30" name="username"></td>
</tr>
<tr>
<td>Enter your new password:</td>
<td><input type="password" size="30" name="newpassword"></td>
</tr>
<tr>
<td>Re-enter your new password:</td>
<td><input type="password" size="30" name="confirmnewpassword"></td>
</tr>
</table>
<p><input type="submit" value="Update Password">
</form>
PHP 脚本
<?php require_once('Connections/register.php'); ?>
<?php
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$confirmnewpassword = $_POST['confirmnewpassword'];
// Redirect links for when password reset is successful or not.
$MM_passwordResetSuccess = "password-updated.php";
$MM_passwordResetFailed = "reset-password.php";
$result = mysql_query("SELECT * FROM register WHERE
username='$username' AND email='$email'");
if(!$result)
{
echo "The username or email you entered does not exist";
}
if($password == $confirmnewpassword)
$sql=mysql_query("UPDATE register SET password='$password' where
username='$username' AND email='$email'");
if($sql)
{
header("Location: " . $MM_passwordResetSuccess );
//echo "Congratulations You have successfully changed your password";
}
else
{
header("Location: ". $MM_passwordResetFailed );
//echo "Passwords do not match";
}
?>
有人可以帮忙吗?
最佳答案
您有这个输入元素<td><input type="password" size="30" name="newpassword"></td>
名称为“newpassword”,但随后您尝试获取 $password = $_POST['password']
- 仅“密码”。
因此将其更改为 $password = $_POST['newpassword'];
但是:
第一:从不将纯密码存储到数据库中。使用password_hash()
和 password_verify()
第二:使用准备好的语句。现在这个脚本非常不安全。
第三:您还需要询问旧密码。
第四:您应该首先检查是否获得了值,因此执行
if(!isset($_POST['email']) {
// show an error, exit script
echo "ERROR"
}
对于每个后置变量。否则您可能会收到错误(就像您现在所做的那样)。
第五:开机error_reporting(E_ALL);
关于PHP MySQL 密码重置表单未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49957130/