Удалите ненужное сообщение об ошибке с проверкой формы - PullRequest
3 голосов
/ 14 февраля 2010

Используя Codeigniter, я могу создать функцию для аутентификации пользователя. У меня есть функция, которую я вызываю, чтобы проверить, правильно ли указаны имя пользователя и пароль. Проблема в том, что я не хочу, чтобы код отображал «Неверный логин», если пароль не указан. Должно быть написано «Требуется пароль» или что-то в этом роде.

Полагаю, я НЕ мог бы требовать поле пароля, в этом случае пустой пароль в любом случае приведет к неудачной регистрации. Тем не менее, я хочу убедиться, что SQL инъекций не происходит.

$this->form_validation->set_rules('username','username','required|callback_authenticate');
$this->form_validation->set_rules('password','password','required');

$this->form_validation->set_message('authenticate','Invalid login. Please try again.');

функция аутентификации

function authenticate() {

    return Current_User::checkLogin($this->input->post('username'),
                                          $this->input->post('password'));
}

1 Ответ

1 голос
/ 14 февраля 2010

Я предлагаю вам создать функцию обратного вызова, которую вы можете использовать, как правило, которую вы можете добавить к функции set_rules() следующим образом:

$ this-> form_validation-> set_rules ( 'пароль', 'Пароль', 'требуется | your_callback_function');

Таким образом, правило required обязательно будет вызвано первым. Когда пользователь вводит пароль, проверяется следующее правило. В этом случае он проходит через вашу функцию проверки обратного вызова. Если пользователь ничего не вводит в поле вашего пароля, то в сообщении об ошибке должно автоматически отображаться, что пароль требуется.

Если вы хотите предотвратить внедрение SQL в поле пароля, добавьте правило sha1 или md5 в поле пароля.

Ознакомьтесь с обратными вызовами: ваши собственные функции проверки в библиотеке проверки формы .

Кроме того, если вы будете использовать класс Active Record вместо того, чтобы вручную вводить в запросе, ваши запросы будут безопаснее, так как значения автоматически экранируются системой. У вас также есть возможность использовать подготовленные операторы для предотвращения внедрения SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...