我有一个更改密码脚本,该脚本应该使用假定匹配的用户密码重置用户提供的值,但是由于用户无法使用为其提供的密码登录,因此该脚本有一些缺陷。
我不确定有什么问题,因为我还有一个add_user脚本,该脚本用于创建用户帐户。生成密码(哈希)的代码是相同的,并且数据已成功放入数据库,所以我真的不知道是什么引起了问题。我猜想它与PHP哈希之前提供的数据有关,因此在数据库中看起来一切都很好,因为它已经被哈希了,但是我想如果我是以明文形式存储的话,那不是与用户输入的内容完全相同,否则脚本将正常工作...
我整天都在网站上工作,所以我真的很努力在这里发现错误。
我认为我的脚本曾经可以使用,因为这是我第一次注意到该问题,但是我不记得特别对该脚本进行过任何更改,因此无法弄清楚为什么它突然停止工作。
session_start();
define('MyConst', TRUE);
include "includes/server.php";
if (!(isset($_SESSION['name']) && $_SESSION['name'] != ''))
{
header("location:login.php");
}
$con = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME) or die(mysqli_error($con));
$password1 = mysqli_real_escape_string($con, $_POST['newPassword']);
$password2 = mysqli_real_escape_string($con, $_POST['confirmPassword']);
$username = mysqli_real_escape_string($con, $_SESSION['name']);
$passwordhashed = password_hash("$password1", PASSWORD_DEFAULT);
if ($password1 <> $password2)
{
echo "your passwords do not match";
$referrer = $_SERVER['HTTP_REFERER'];
header ("Refresh: 2;URL='$referrer'");
}
else if (mysqli_query($con, "UPDATE accounts SET password='$passwordhashed' WHERE username='$username'"))
{
echo "You have successfully changed your password.";
$referrer = $_SERVER['HTTP_REFERER'];
header ("Refresh: 2;URL='$referrer'");
}
else
{
mysqli_error($con);
}
mysqli_close($con);
如果更改成功,则应检查密码是否匹配并回显“您已成功更改密码”,然后重定向。
表单页面缺少一种方法,因为我忘记了添加一种方法,因此当脚本的其余部分引用_POST时,它默认为_GET。
修复只是将方法添加为发布。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句