У меня есть приведенный ниже код для аутентификации пользователя в приложении. Мне удалось зарегистрировать пользователя в системе, но мой код аутентификации не может перенаправить пользователя в приложение после попытки входа в систему с правильными данными. Страница только перенаправляет пользователя обратно на страницу входа, даже если я использую правильные данные пользователя.
Контроллер
var $salt = '%&)#$sfsf(abm@009011';
function authenticate() {
$username = $this->input->post('username');
$this->db->where('phone', $username);
$password = $this->db->where('password', md5(crypt($this->input->post('password'), $this->salt)));
$query = $this->db->get('user_login');
if ($query->num_rows = 1) {
//echo "success";
return true;
} else
return false;
}
Что еще я могу сделать неправильно в коде? PS: новичок с CodeIgniter






вы присваиваете, а не сравниваете, вы должны использовать == вместо =
if ($query->num_rows == 1) {
}
Хорошо..Спасибо, но я все еще не могу перенаправиться в приложение. Он перенаправляет меня обратно на страницу входа
распечатайте запрос и проверьте, все ли сделано правильно, как вы ожидаете.
когда я печатаю query, я не получаю никаких результатов, но я получаю 1, когда я повторяю $query->num_rows перед оператором if ()
Не используйте var и используйте == для сравнения значений в выражении if ()
$salt = '%&)#$sfsf(abm@009011';
function authenticate() {
$username = $this->input->post('username');
$this->db->where('phone', $username);
$password = $this->db->where('password', md5(crypt($this->input->post('password'), $this->salt)));
$query = $this->db->get('user_login');
if ($query->num_rows() == 1) {
//echo "success";
return true;
} else
return false;
}
Хорошо..Спасибо, но я все еще не могу перенаправиться в приложение. Он перенаправляет меня обратно на страницу входа
каков результат этого echo $query->num_rows перед if () утверждением?
Результат 1
@RoboPHP должно быть $query->num_rows() не $query->num_rows
Хорошо, если вы напрямую публикуете свои данные, я имею в виду, что вы не вызываете функцию из ajax, тогда вы можете использовать: redirect('Имя вашего контроллера') вместо оператора return true;
Даже после замены на redirect('Your controller name') проблема остается.
Вы указали имя своего контроллера вместо «Имя вашего контроллера»?
Очень сложно сказать, что не так (помимо использования операторов присваивания вместо операторов сравнения), не видя еще немного кода. Вы просто возвращаете значение true/false, но мы понятия не имеем, что вы с ним делаете потом. Вы создаете сеанс с данными пользователя, вошедшего в систему? Ваши контроллеры проверяют эти данные, чтобы «решить», разрешают ли они вам доступ к своим методам? Кроме того, я настоятельно рекомендую изменить очень небезопасный способ, который вы выбрали для хеширования паролей (используйте password_hash вместо crypt+md5+static salt, который на самом деле настолько небезопасен, насколько это возможно)