Регистрация нового пользователя

Регистрация пользователя обеспечивается методом registration в контроллере users. Внешний вид формы регистрации:

Регистрация нового пользователя - student2.ru

Рисунок 9

Требование уникальности E-mail адреса проверяется в библиотеке From Validation, путем указания соответствующего ключа в конфигурации проверяемого поля:

// Определяем правила проверки

$config = array(

array(

'field' => 'email',

'label' => 'E-mail',

'rules' => '...|is_unique[users.email]'

)

...

Обработка ошибок осуществляется по такому же принципу, что и при процессе входа в систему. Внешний вид формы с ошибками ввода:

Регистрация нового пользователя - student2.ru

Рисунок 10

Вставка данных о новом пользователе происходит путем формирования массива, который в дальнейшем передается в метод insert модели db_model, в которой определены наиболее общие методы взаимодействия с БД:

if ( $id = $this->db_model->insert(USERS_TABLE, $user) )

{

$this->session->set_userdata("user_id", $id);

$this->setMessage("Вы успешно зарегистрированы", "users/user/$id");

}

else

{

$this->setError("Произошла ошибка при регистрации");

}

Редактирование профиля

Редактирование профиля контролируется методом edit контроллера users. Он загружает форму редактирования профиля:

Регистрация нового пользователя - student2.ru

Рисунок 11

Перед загрузкой формы, происходит проверка данных сессии, и, если пользователь не авторизован, то выводится стандартная ошибка, возникающая при неудачной проверке данных авторизации:

Регистрация нового пользователя - student2.ru

Рисунок 12

В остальном же, процесс изменения информации мало чем отличается от процесса регистрации, за исключением того, что вместо вставки новых данных происходит их обновление:

if ( $id = $this->db_model->update( USERS_TABLE,

$user,

array("id" => $this->user['id'])) )

{

$this->setMessage(

"Информация изменена",

"users/user/" . $this->user['id']

);

}

else

$this->setError("Информация не изменена");

Удаление профиля

Удаление профиля происходит в методе delete контроллера users. Физически это происходит установкой флага active таблицы users в 0. Ссылка на удаление расположена на странице редактирования профиля в боковой панели:

Регистрация нового пользователя - student2.ru

Рисунок 13

Код обработчика удаления:

/**

* Деактивация профиля

*/

public function delete()

{

$this->checkAuthorization();

if ( $this->db_model->update( USERS_TABLE,

array('active'=>'0'),

array('id' => $this->user['id'])) )

{

$this->setMessage("Профиль удален", "users/logout");

}

else

{

...

}

}

После удаления аккаунта, войти в него уже невозможно. При попытке входа система выдает следующую ошибку:

Регистрация нового пользователя - student2.ru

Рисунок 14

Восстановление пароля

Восстановление пароля обрабатывается методом restore, который принимает E-mail адрес пользователя, генерирует новый пароль и отсылает его на введенный E-mail.

Форма восстановления пароля имеет вид:

Регистрация нового пользователя - student2.ru

Рисунок 15

Если введенный E-mail имеется в базе данных, то новый пароль отправляется на него:

Регистрация нового пользователя - student2.ru

иначе система выдает ошибку

Регистрация нового пользователя - student2.ru

При удачном восстановлении на указанный ящик придет сообщение следующего содержания:

Уважаемый Павел, ваш новый пароль 1401096180

Данный механизм восстановления забытого пароля является более чем примитивным, но для учебных целей это вполне достаточно.

Категории

Категории управляются классом-контроллером categories, который имеет следующие функции, представленные методами:

Действие Метод
Просмотр категорий пользователя user
Добавление новой категории add
Редактирование категории edit
Удаление категории delete

Для манипулирования данными в БД используется модель categories_model, содержащая несколько специфических методов для категорий.

Структура контроллера categories

<?php

/**

* Контроллер категорий

*/

class Categories extends MY_Controller

{

/**

* Количество категорий на странице

*/

private $_categories_per_page = 2;

public function __construct()

{

parent::__construct();

}

/**

* Вывод списка категорий определенного пользователя

*/

public function user( $user_id, $page = 1 ) {}

/**

* Добавление новой категории

*/

public function add() {}

/**

* Редактирование категории

*/

public function edit( $category_id ) {}

/**

* Удаление категории

*/

public function delete( $category_id ) {}

}

Наши рекомендации