Php “代码不回显”;“好的”;
我已经搜索了好几年了,我又被卡住了,当我为用户输入与数据库中的密码匹配的正确密码时,我的代码没有回显“ok” 其他一切都很好,我不确定我是否错过了一些愚蠢的事情;我可能有,所以为自己的愚蠢道歉:) PHP:Php “代码不回显”;“好的”;,php,database,login,hash,Php,Database,Login,Hash,我已经搜索了好几年了,我又被卡住了,当我为用户输入与数据库中的密码匹配的正确密码时,我的代码没有回显“ok” 其他一切都很好,我不确定我是否错过了一些愚蠢的事情;我可能有,所以为自己的愚蠢道歉:) PHP: class User { private $_db, $data; public function __construct($user = null) { $this->_db = DB::getInstance(); } publi
class User {
private $_db, $data;
public function __construct($user = null) {
$this->_db = DB::getInstance();
}
public function create($fields = array()) {
if(!$this->_db->insert('users', $fields)) {
throw new Exception('There was a problem registering');
}
}
public function find($user = null) {
if($user) {
$field = (is_numeric($user)) ? 'id' : 'username';
$data = $this->_db->get('users', array($field, '=', $user));
if($data->count()) {
$this->_data = $data->first();
return true;
}
}
return false;
}
public function login($username = null, $password = null) {
$user = $this->find($username);
if($user) {
if($this->data()->password === Hash::make($password, $this->data()->salt)) {
echo 'ok';
}
}
return false;
}
private function data() {
return $this->_data;
}
}
在您的登录()
时,您必须这样重写
public function login($username = null, $password = null) {
$user = $this->find($username);
if($user) {
if($this->data()->password === Hash::make($password, $this->data()->salt)) {
//echo 'ok';
return true;
}
}
else { return false; }
}
注释掉echo
,然后从那里返回true。因此,您将从实例调用函数,如
if($someinst->find('someuser'))
{
echo "User Found";
}
else { echo "Not Found"; }
尝试以下方法来解决您的问题:
public function login($username = null, $password = null)
{
$user = $this->find($username);
if($user) {
if($this->data()->password === Hash::make($password, $this->data()->salt)) {
echo 'User and password Ok!';
} else {
echo 'User and password do not match'; // Handle it
}
} else {
echo 'User not found'; // Handle it
}
return false;
}
此外,乍一看,这可能是个问题:
$this->data()->password
也许你应该使用类似于:
if($user->password === Hash::make($password ...
你检查过你的PHP日志了吗?看来要么你在注册和登录时使用了不同的哈希函数,要么你的凭证毕竟是错误的。