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 나는 mysql_로 코드가 구식 것을 알고
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();
}
, 그러나 PDO를 사용하려고하면 오류가 발생하며 구성 요소 또는 그와 관련된 것입니다.
제공 할 수있는 도움 주셔서 감사합니다.
편집 :가 일치로 업데이트 스크립트에 전달해야한다, 변화하지 않는 한, 순수 PDO에 기능을 변경하고, 여기에 당신이 암호 해시로 저장되는 것을 볼 수 있도록 데이터 그리드의 이미지이며, 데이터베이스에있는 내용. 당신의 validatePass()
기능에
http://www.bolinconstruction.com/timeclock/datagrid.png
어떤 오류가 있습니까? 우리에게 단서를 줄 수 없다면 많은 도움을 줄 수는 없습니다. – Brad
어, 미안. 이 코드는 패스워드가 일치하는 것을 결코 보여주지 않으며, 대신 md5() 패스워드를 항상 되돌려 주므로, 어떤 세부 사항이라도 편집했다면 사용자가 로그인 할 수 없게된다. – FireCrakcer37
db의 md5와 양식의 일반 텍스트 비밀번호를 비교하지 않습니까? –