Десятая часть перевода документации библиотеки авторизации DX Auth для фреймворка CodeIgniter.
Рассмотрим расширенный пример контроллера Auth, демонстрирующий возможность использования reCAPTCHA с библиотекой DX Auth. Убедитесь, что вы указали общий и личный ключ в файле конфигурации, иначе пример не будет работать.
Часть контроллера Auth (controllers/auth.php) демонстрирующая работу reCAPTCHA:
class Auth extends Controller { // Используется для проверки форм регистрации и смены пароля var $min_username = 4; var $max_username = 20; var $min_password = 6; var $max_password = 10; function Auth() { parent::Controller(); $this->load->library('Form_validation'); $this->load->library('DX_auth'); } function index() { $this->login(); } /* Функции обратного вызова */ function username_check($username) { $result = $this->dx_auth->is_username_available($username); if ( ! $result) { $this->form_validation->set_message('username_check','Имя пользователя уже используется. Пожалуйста, выберите другое имя.'); } return $result; } function email_check($email) { $result = $this->dx_auth->is_email_available($email); if ( ! $result) { $this->form_validation->set_message('email_check', ''Адрес электронной почты используется другим пользователем. Пожалуйста, выберите другой адрес электронной почты.'); } return $result; } function recaptcha_check() { $result = $this->dx_auth->is_recaptcha_match(); if ( ! $result) { $this->form_validation->set_message('recaptcha_check','Ваш код подтверждения не совпадает с изображением. Попробуйте ещё раз.'); } return $result; } /* Конец функций обратного вызова */ function register_recaptcha() { if ( ! $this->dx_auth->is_logged_in() AND $this->dx_auth->allow_registration) { $val = $this->form_validation; // Set form validation rules $val->set_rules('username', 'Имя пользователя', 'trim|required|xss_clean|min_length['.$this->min_username.']|max_length['.$this->max_username.']|callback_username_check|alpha_dash'); $val->set_rules('password', 'Пароль', 'trim|required|xss_clean|min_length['.$this->min_password.']|max_length['.$this->max_password.']|matches[confirm_password]'); $val->set_rules('confirm_password', 'Подтверждение пароля', 'trim|required|xss_clean'); $val->set_rules('email', 'Электронная почта', 'trim|required|xss_clean|valid_email|callback_email_check'); // Проверяем используется ли при регистрации captcha if ($this->dx_auth->captcha_registration) { // Устанавливаем правила reCAPTCHA // ВАЖНО: Не меняйте 'recaptcha_response_field' потому что оно используется reCAPTCHA API, // Это ограничение reCAPTCHA, не библиотеки DX Auth $val->set_rules('recaptcha_response_field', 'Код подтверждения', 'trim|xss_clean|required|callback_recaptcha_check'); } // Выполняем проверку формы и регистрируем пользователя, если он прошёл проверку if ($val->run() AND $this->dx_auth->register($val->set_value('username'), $val->set_value('password'), $val->set_value('email'))) { // Устанавливаем сообщение об успешной регистрации if ($this->dx_auth->email_activation) { $data['auth_message'] = 'Вы успешно зарегистрировались. Проверьте вашу электронную почту для активации учётной записи.'; } else { $data['auth_message'] = 'Вы успешно зарегистрировались. '.anchor(site_url($this->dx_auth->login_uri), 'Login'); } // Загружаем отображение страницы успешной регистрации $this->load->view($this->dx_auth->register_success_view, $data); } else { // Загружаем отображение страницы регистрации $this->load->view('auth/register_recaptcha_form'); } } elseif ( ! $this->dx_auth->allow_registration) { $data['auth_message'] = 'Регистрация отключена.'; $this->load->view($this->dx_auth->register_disabled_view, $data); } else { $data['auth_message'] = 'Перед тем как зарегистрироваться, необходимо выйти.'; $this->load->view($this->dx_auth->logged_in_view, $data); } } }
Файл отображения формы регистрации с использованием reCAPTCHA (auth/register_recaptcha_form).
<?php $username = array( 'name' => 'username', 'id' => 'username', 'size' => 30, 'value' => set_value('username') ); $password = array( 'name' => 'password', 'id' => 'password', 'size' => 30, 'value' => set_value('password') ); $confirm_password = array( 'name' => 'confirm_password', 'id' => 'confirm_password', 'size' => 30, 'value' => set_value('confirm_password') ); $email = array( 'name' => 'email', 'id' => 'email', 'maxlength' => 80, 'size' => 30, 'value' => set_value('email') ); ?> <html> <body> <fieldset><legend>Регистрация</legend> <?php echo form_open($this->uri->uri_string())?> <dl> <dt><?php echo form_label('Имя пользователя', $username['id']);?></dt> <dd> <?php echo form_input($username)?> <?php echo form_error($username['name']); ?> </dd> <dt><?php echo form_label('Пароль', $password['id']);?></dt> <dd> <?php echo form_password($password)?> <?php echo form_error($password['name']); ?> </dd> <dt><?php echo form_label('Подтверждение пароля', $confirm_password['id']);?></dt> <dd> <?php echo form_password($confirm_password);?> <?php echo form_error($confirm_password['name']); ?> </dd> <dt><?php echo form_label('Электронная почта', $email['id']);?></dt> <dd> <?php echo form_input($email);?> <?php echo form_error($email['name']); ?> </dd> <?php if ($this->dx_auth->captcha_registration): ?> <dt></dt> <dd> <?php // Показываем изображение reCAPTCHA echo $this->dx_auth->get_recaptcha_image(); // Показываем ссылку обновления reCAPTCHA echo $this->dx_auth->get_recaptcha_reload_link(); // Показываем переключатель на изображение или аудио reCAPTCHA echo $this->dx_auth->get_recaptcha_switch_image_audio_link(); ?> </dd> <dt><?php echo $this->dx_auth->get_recaptcha_label(); ?></dt> <dd> <?php echo $this->dx_auth->get_recaptcha_input(); ?> <?php echo form_error('recaptcha_response_field'); ?> </dd> <?php // Получаем reCAPTCHA JavaScript и HTML код для браузеров с отключенным JavaScript echo $this->dx_auth->get_recaptcha_html(); ?> <?php endif; ?> <dt></dt> <dd><?php echo form_submit('register','Регистрация');?></dd> </dl> <?php echo form_close()?> </fieldset> </body> </html>
Этот пример вы можете найти в файлах controllers/auth.php и views/auth/register_recaptcha_form.php, которые включены в пакет поставки библиотеки DX Auth.
- CodeIgniter: библиотека DX Auth
- DX Auth: руководство пользователя. Начало
- DX Auth: Руководство пользователя. Справочник по функциям
- DX Auth: Руководство пользователя. События
- DX Auth: Руководство пользователя. Конфигурация
- DX Auth: Руководство пользователя. Модели
- DX Auth: Руководство пользователя. Анатомия таблиц
- DX Auth: Примеры. Простой пример
- DX Auth: Примеры. Расширенный пример
- DX Auth. Примеры. Пример использования reCAPTCHA
Комментариев нет:
Отправить комментарий