Я использую codeigniter-bcrypt от https://github.com/dwightwatson/codeigniter-bcrypt, с codeigniter. У меня есть форма, которая отправляет данные на мой главный контроллер. Затем я проверяю через модель БД для записи. Я использовалCodeigniter login с codeigniter-bcrypt
$hash = $this->bcrypt->hash_password($password);
Хеш-пароль для создания счета. И это работает. Пароль правильно хэшируется в БД. Теперь, однако, я не уверен, где использовать обратный, чтобы проверить, введен ли пароль, введенный в форму для публикации, так же, как и хэшированный пароль БД.
if ($this->bcrypt->check_password($password, $stored_hash))
{
// Password does match stored password.
}
else
{
// Password does not match stored password.
}
Мой код в моей модели
function getUserByLogin($login, $password) {
$this->db->where('login',$login);
$this->db->where('password',$password);
$result = $this->getUsers();
if (count($result) > 0) {
return $result[0];
} else {
return null;
}
}
function getUsers() {
$query = $this->db->get('users');
if ($query->num_rows() > 0) {
return $query->result();
} else {
return array();
}
}
и мой контроллер
if (isset($_POST['email']) && isset($_POST['password'])) {
$login = $_POST['email'];
$password = $_POST['password'];
$user = $this -> user_model -> getUserByLogin($login, $password);
$this -> saveUserToSession($user);
$loggedIn = ($user == null ? false : true);
}
Любая помощь будет оценена.
проверка пароля является правильной, как по документации. с какими проблемами вы столкнулись? – tomexsans
где выполнить проверку. Я попытался использовать его на контроллере с данными post, которые, похоже, не работали, я тогда попытался проверить сразу после запроса БД, но переменные являются объектами в этой точке. – user1881482
выполните проверку на 'model', которая возвращает' true' или 'false'. Очевидно, что текущий запрос не проверяет имя пользователя и пароль. Включите имя пользователя и пароль в свой запрос. так что вы получите только пользователя, у которого есть как имя пользователя, так и пароль. Не все – tomexsans