我在 php 登录系统中的 ResetPassword.php 出现错误,因为您的旧密码错误
Posted
技术标签:
【中文标题】我在 php 登录系统中的 ResetPassword.php 出现错误,因为您的旧密码错误【英文标题】:My ResetPassword.php in php login system is giving error as Your old password is wrong 【发布时间】:2018-09-13 14:33:21 【问题描述】:<?php
if(isset($_POST['re_password']))
if (isset($_GET["token"]) && isset($_GET["email"]))
$connection = new mysqli("localhost", "id4767104_root1", "Deepak@1",
"id4767104_phpusernameconfirmation");
$email = $connection->real_escape_string($_GET["email"]);
$token = $connection->real_escape_string($_GET["token"]);
$data = $connection->query("SELECT id FROM users WHERE email='$email'
AND token='$token'");
if ($data->num_rows > 0)
$old_pass=$_POST['cpass'];
$new_pass=$_POST['newpass'];
echo "$old_pass";
$re_pass=$_POST['newpass1'];
$chg_pwd=mysqli_query("select id, password from users where
email='$email'");
$chg_pwd1=mysqli_fetch_array($chg_pwd);
echo "$chg_pwd1";
$data_pwd=$chg_pwd1['password'];
if($data_pwd==$old_pass)
if($new_pass==$re_pass)
$hashedPassword = password_hash($new_pass, PASSWORD_BCRYPT);
$update_pwd=mysql_query("UPDATE users SET password='$new_pass',
token = '' WHERE email='$email'");
echo "<script>alert('Update Sucessfully');
window.location='index.php'</script>";
else
echo "<script>alert('Your new and Retype Password is not match');
window.location='index.php'</script>";
else
echo "<script>alert('Your old password is wrong');
window.location='register.php'</script>";
else
echo "Please check your link!";
else
header("Location: login.php");
exit();
?>
【问题讨论】:
$data_pwd 是散列密码吗? 您的脚本存在SQL Injection Attack 的风险。看看Little Bobby Tables 发生了什么。甚至if you are escaping inputs, its not safe!。请改用prepared parameterized statements。 是的 $data_pwd 是散列密码 比你需要使用password_verify 让它与你的新密码比较 嗨,J.Ende,作为我的初学者,你能否详细说明一下,因为我在这段代码中坚持了几天,谢谢! 【参考方案1】:当您使用password_hash
存储密码时。您需要将密码与password_verify
进行比较。更改您的条件if($data_pwd==$old_pass)
如下:
if(password_verify($old_pass,$data_pwd))
【讨论】:
作为初学者,请您详细说明一下! 正如我已经提到的,每当您使用password_hash
方法存储密码时。它将存储在 hash 中,不会存储为普通文本。所以你需要在比较密码的同时使用password_verify
。你可以得到通知php.net/manual/en/function.password-verify.php和php.net/manual/en/function.password-hash.php以上是关于我在 php 登录系统中的 ResetPassword.php 出现错误,因为您的旧密码错误的主要内容,如果未能解决你的问题,请参考以下文章