Функция аутентификации не работает - CodeIgniter

У меня есть приведенный ниже код для аутентификации пользователя в приложении. Мне удалось зарегистрировать пользователя в системе, но мой код аутентификации не может перенаправить пользователя в приложение после попытки входа в систему с правильными данными. Страница только перенаправляет пользователя обратно на страницу входа, даже если я использую правильные данные пользователя.

Контроллер

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

Очень сложно сказать, что не так (помимо использования операторов присваивания вместо операторов сравнения), не видя еще немного кода. Вы просто возвращаете значение true/false, но мы понятия не имеем, что вы с ним делаете потом. Вы создаете сеанс с данными пользователя, вошедшего в систему? Ваши контроллеры проверяют эти данные, чтобы «решить», разрешают ли они вам доступ к своим методам? Кроме того, я настоятельно рекомендую изменить очень небезопасный способ, который вы выбрали для хеширования паролей (используйте password_hash вместо crypt+md5+static salt, который на самом деле настолько небезопасен, насколько это возможно)

Javier Larroulet 03.05.2019 15:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

вы присваиваете, а не сравниваете, вы должны использовать == вместо =

if ($query->num_rows == 1) {
}

Хорошо..Спасибо, но я все еще не могу перенаправиться в приложение. Он перенаправляет меня обратно на страницу входа

RoboPHP 03.05.2019 11:38

распечатайте запрос и проверьте, все ли сделано правильно, как вы ожидаете.

Devsi Odedra 03.05.2019 11:41

когда я печатаю query, я не получаю никаких результатов, но я получаю 1, когда я повторяю $query->num_rows перед оператором if ()

RoboPHP 03.05.2019 11:44

Не используйте 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;
    }

Хорошо..Спасибо, но я все еще не могу перенаправиться в приложение. Он перенаправляет меня обратно на страницу входа

RoboPHP 03.05.2019 11:38

каков результат этого echo $query->num_rows перед if () утверждением?

Danish Ali 03.05.2019 11:40

Результат 1

RoboPHP 03.05.2019 11:42

@RoboPHP должно быть $query->num_rows() не $query->num_rows

Danish Ali 03.05.2019 11:45

Хорошо, если вы напрямую публикуете свои данные, я имею в виду, что вы не вызываете функцию из ajax, тогда вы можете использовать: redirect('Имя вашего контроллера') вместо оператора return true;

Alok Mali 03.05.2019 11:45

Даже после замены на redirect('Your controller name') проблема остается.

RoboPHP 03.05.2019 12:00

Вы указали имя своего контроллера вместо «Имя вашего контроллера»?

Alok Mali 03.05.2019 12:14

Другие вопросы по теме