Пароль CodeIgniter не проверяется по базе данных - PullRequest
1 голос
/ 02 января 2012

Я настроил свои функции входа в систему в CodeIgniter (электронная почта / пароль).Поле электронной почты корректно проверяется по базе данных, но до тех пор, пока электронная почта проверена, любой пароль принимается - даже пустые пароли.

Мне нужно выяснить, почему только поле электронной почты проверяется по базе данныхи как получить поле пароля для проверки по базе данных.

Боковая панель: я планирую зашифровать пароли затем, но хочу убедиться, что поле проверяется сначала по базе данных.Затем я добавлю уровни безопасности.

Из контроллера входа в систему:

 function login_validation()

{
    $this->load->model('foo_model');
    $query = $this->foo_model->validate();

    if($query) 
    {
        $data = array(
            'email' => $this->input->post('email'),
                            'password' => $this->input->post('password'),
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        redirect('foodash');
    }
    else
    {
        $this->index(); // login page
    }
}

Из модели foo:

function validate()
{
    $this->db->where('email', $this->input->post('email'));
    $this->db->where('password', $this->input->post('password'));

    $query = $this->db->get('footable');

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

}

ВЫИГРАЛ ЭТО: Я маскировал свое поле пароля с помощью jquery, чтобы текст не отображался при вводе.Мне пришлось изменить имя моего поля пароля - как только я изменил его в модели, все работало отлично.

Ответы [ 3 ]

1 голос
/ 05 января 2012

выяснил это:

Я маскировал свое поле пароля с помощью jquery, чтобы текст не отображался при вводе.Мне пришлось изменить имя моего поля пароля - как только я изменил его в модели, все работало отлично.

0 голосов
/ 02 января 2012

Пароль проверяется по базе данных, но возвращаемое значение validate() не определено, если адрес электронной почты или пароль неверны.Это может привести к непредсказуемым результатам.Я рекомендую:

function validate()
{
    $this->db->where('email', $this->input->post('email'));
    $this->db->where('password', $this->input->post('password'));

    $query = $this->db->get('footable');

    return ($query->num_rows() == 1);
}
0 голосов
/ 02 января 2012

Попробуйте вернуть false в функции validate() после оператора IF.

Также попробуйте другой синтаксис:

$query = $this->db->get_where('footable', array(
    'email' => $this->input->post('email'),
    'password' => $this->input->post('password')
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...