嗨,伙计们,我正在我的项目中实现一个密码验证。
验证当前密码以更改新密码。
以下是我的疑问:
$res=mysql_query("SELECT * FROM users WHERE id=".$_SESSION['user']);
$userRow=mysql_fetch_array($res);
$pass = $userRow['password'];
if(isset($_POST['update'])){
$id = $_SESSION['user'];
$new_pass = md5(mysql_real_escape_string($_POST['new_pass']));
if($_POST['old_pass'] != $pass){
?>
<script>alert('Wrong Old Password');</script>
<?php
}else if(mysql_query("UPDATE users SET password='$new_pass' WHERE id=$id")){
?>
<script>alert('Password Successfully Updated');</script>
<?php
}else{
?>
<script>alert('Failed');</script>
<?php
}
}即使我输入了正确的旧密码,“错误的旧密码”总是会弹出警报。那怎么解决这个问题?
发布于 2016-02-02 12:28:04
您是否将旧密码保存为md5?如果是这样,则不能将旧的pass (尚未加密的md5 )与从数据库检索到的经过md5加密的pass相等。
PLease还作为一个附带说明查看这个线程,解释为什么不使用md5
发布于 2016-02-02 12:33:51
您的旧密码是以加密格式存储的。试试这个:
f(md5($_POST['old_pass']) != $pass)https://stackoverflow.com/questions/35153232
复制相似问题