PHP MySQL 密码重置表单未执行

标签 php html mysql

我正在尝试制作一个简单的重置密码表单,用户可以在其中输入用户名、电子邮件地址、新密码并确认新密码。但是,当我运行该页面时,没有任何反应。下面是我正在使用的表单以及 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/

相关文章:

python - (Python/JSON/MySQL) 关于 JSON 格式的财务数据不会传输到数据库的建议

php - 添加、删除和更新网页中评论的标签

php - 使用 UNION ALL 时出现问题

c# - 从 https 页面链接

html - 网页的CSS布局?

javascript - Python NetworkX/Mplleaflet : network to geojson

mysql - 查询求和mysql中不同表的不同列

javascript - 同一页面上的多个表单 AJAX

php - GD 绘制带半径的矩形

php - 数据库中表的表