Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвБД_Курсовик_ОрищенкоТС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
895.63 Кб
Скачать

Выход пользователя из системы

Выход пользователя осуществляется вызовом метода контроллера users – logout, который уничтожает данные сессии для текущего пользователя. Данный метод не загружает ни один вид, но переадресовывает пользователя на главную страницу. Код метода logout:

/**

* Выход пользователя из системы

*/

public function logout()

{

// Вошел ли пользователь?

if ( $this->user )

{

$this->session->sess_destroy();

}

redirect("/");

}

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

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

Рисунок 9

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

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

$config = array(

array(

'field' => 'email',

'label' => 'E-mail',

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

)

...

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

Рисунок 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. Он загружает форму редактирования профиля:

Рисунок 11

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

Рисунок 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. Ссылка на удаление расположена на странице редактирования профиля в боковой панели:

Рисунок 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

{

...

}

}

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

Рисунок 14

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

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

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

Рисунок 15

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

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

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

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

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