我正在使用jQuery datagrid插件来制作一个简单的工具来编辑我的用户在网站的管理区域的表。当用户注册时,我将密码存储为md5()。当我尝试更新表时,它会重新调整密码,从而使其无法使用。我已经尝试了几种验证密码的方法与数据库中的方法相同,但它们都没有工作。不匹配md5密码
这里是我的更新代码:
PHP
<?php
require_once("../class/TimeClock.class.php");
$tc = new TimeClock();
$id = $_POST['id'];
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$active = $_POST['active'];
$role = $_POST['role'];
$emp_id = $_POST['emp_id'];
if($tc->validatePass($id, $password)) {
try {
$tc->connect();
$query = $tc->dbh->prepare("UPDATE us_users SET username=:username,email=:email,active=:active,role=:role,emp_id=:emp_id WHERE id=:id");
$query->execute(array(':username' => $username, ':email' => $email, ':active' => $active, ':role' => $role, ':emp_id' => $emp_id, ':id' => $id));
$tc->close();
} catch (PDOException $e) {
throw new Exception('Something bad happened' . $e->getMessage());
}
} else {
try {
$password = md5($password);
$tc->connect();
$query = $tc->dbh->prepare("UPDATE us_users SET username=:username,password=:password,email=:email,active=:active,role=:role,emp_id=:emp_id WHERE id=:id");
$query->execute(array(':username' => $username, ':password' => $password, ':email' => $email, ':active' => $active, ':role' => $role, ':emp_id' => $emp_id, ':id' => $id));
$tc->close();
} catch (PDOException $e) {
throw new Exception('Something bad happened' . $e->getMessage());
}
}
echo json_encode(array(
'id' => $id,
'username' => $username,
'password' => $password,
'email' => $email,
'active' => $active,
'role' => $role,
'emp_id' => $emp_id
));
?>
我validatePasss()函数:
PHP
function validatePass($id, $pass) {
try {
$this->connect();
$result = $this->dbh->prepare("SELECT username, password FROM us_users WHERE id=:id");
$result->execute(array(':id' => $id));
$userObj = $result->fetch(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
throw new Exception('Something bad happened' . $e->getMessage());
die();
}
if($pass == $userObj['password']) {
return true;
} else {
return false;
}
$this->close();
}
我知道mysql_代码过时,然而,当我尝试使用PDO时会抛出错误,我认为它与组件或其他东西有关。
感谢您提供任何帮助。
编辑:更改函数为纯PDO,这里是一个数据网格的图像,所以你看到密码存储为一个散列,并且,除非改变,应作为匹配传递给更新脚本到数据库中的内容。
http://www.bolinconstruction.com/timeclock/datagrid.png
什么错误?如果你不能给我们提供线索,不能提供很多帮助。 – Brad
杜,对不起。代码永远不会显示密码匹配,而是始终返回md5()密码,因此,如果我编辑了任何详细信息,用户就无法登录。 – FireCrakcer37
是不是比较明文密码从形式与md5存储在数据库? –