- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
PHP. Разработка модуля комментариев для сайта - Дмитрий Приходько
Шрифт:
Интервал:
Закладка:
Запускаем. Если все сделано без ошибок, то при запущенном на «Open Server» тестовом сайте при переходе по адресу: news/chat/admin/comment.php видим страницу статистики комментариев (см. рис. 15)
Рис. 18. Вид страницы статистики комментариев
На этом этапе необходимо заняться контроллером 2 и кнопками авторизации, так как опробовать работу страницы в деле пока нельзя в связи с отсутствием комментариев и ответов на них.
10. Контроллер 2
Контроллер 2 будет заниматься контролем авторизации пользователей и их возможностям для работы с комментариями.
Напишем код для входа на страницу личного кабинета и связанных с ней страниц. Контроллер 2 назовем «login_controller.php» и разместим в корне папки «chat», т.е. там же, где и контроллер 1 (createbase_controller.php)
Листинг 21. login_controller.php Путь: news/chat/ login_controller.php
<?php
error_reporting(E_ALL);
/* Проверяем данные пользователя, устанавливаем данные сессии */
include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/access.php';
userIsLoggedIn();
userId();
if (isset($_SESSION['login'])) {
echo '<div class="welcom">Welcome '.$_SESSION['login'].'</div>'; //Выводим "Привет юзер"
/* Вставляем кнопки "Кабинет" и "Выход" */
include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/button_cabinet.html';
include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/button_logout.html';
} else {
include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/users/input_button_block.html';
if (!empty($_GET['name'])) {
include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/form_login.php';
}
}
В подключаемом файле access.php проверяем данные пользователя и устанавливаем данные сессии.
После проверки данных функциями userIsLoggedIn() и userId()если пользователь авторизован приветствуем его и вставляем кнопки «Кабинет» и «Выход». Если нет, выводим блок кнопок «Вход», «Регистрация», «На главную» и форму авторизации.
Напишем коды кнопок и опробуем его в деле, это можно будет сделать после добавления файлов рассматриваемых в следующем разделе.
11. Кнопки раздела администрирования
11.1 Кнопки вход и регистрация
Кнопки «Вход» «Регистрация» и «На главную» сгруппированы в одном файле «input_button_block.html»
Листинг 22. input_button_block.html Путь: news/chat/admin/ users/ input_button_block.html
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="/chat/style.css" />
</head>
<div class="inputbutton">
<div class="ingress">
<a href="?name=door">Вход</a>
</div>
<div class="ingress">
<a href="admin/users/reg.php">Регистрация</a>
</div>
<div class="ingress">
<a href="/">На главную</a>
</div>
</div>
</html>
Назначаем обработчик нажатия кнопки «Вход».
11.2 Обработчик кнопки вход
Для обработки нажатия кнопки вход используем метод GET передавая в нем переменную «door». При нажатии кнопки происходит перезагрузка страницы и если контроллер видит переменную door то вставляет файл form_login.php
Листинг 23. form_login.php Путь: news/chat/admin/ form_login.php
<?php include_once $_SERVER['DOCUMENT_ROOT'].'/chat/admin/clean.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="/style.css" />
<title>Авторизация</title>
</head>
<body>
<?php if (isset($loginError)): ?>
<p><?php htmlout($loginError); ?></p>
<?php endif; ?>
<form action="" method="post">
<h4 class="formname">Авторизация</h4>
<hr>
<div>
<label for="email">Логин:
<input type="text" name="login" id="login" class="inputs">
</label>
</div>
<hr>
<div>
<label for="password">Пароль:
<input type="password" name="password" id="password">
</label>
</div>
<hr>
<div>
<input type="hidden" name="action" value="out">
<input type="submit" value="Отправить">
</div>
</form>
</body>
</html>
В эту форму пользователь вставляет свои логин и пароль и отправляет дальше на проверку.
11.3 Кнопки кабинет и выход
Страница опять перегрузилась. Если логин и пароль введены корректно, то выводим кнопки «Кабинет» и «Выход», а заодно напечатаем в контроллере 2 приветствие:«Welcome $user».
Кнопка «Кабинет» файл «button_cabinet.html».
Листинг 24. button_cabinet.html Путь: news/chat/admin/ button_cabinet.html
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="/chat/style.css" />
</head>
<div class="cabinets">
<form action="/chat/admin/index.php" method="post" class="cabinet">
<input type="submit" name="action" value="Кабинет" />
</form>
</div>
</html>
Кнопка «Выход» файл «button_logout.html» рассмотрена ранее в Листинге 16.
Обработчик события кнопки «Выйти» файл «logout.php»
Листинг 25. logout.php Путь: news/chat/admin/ logout.php
<?php
if (session_id() == '') {
session_start();
}
/* Проверяем была ли нажата кнопка "Выйти" если 'Да' уничтожаем сессию */
if (isset($_POST['action']) and $_POST['action'] == 'Выйти') {
unset($_SESSION['loggedIn']);
unset($_SESSION['login']);
unset($_SESSION['password']);
}
header("Location: " . $_SERVER["HTTP_REFERER"]);
При нажатии кнопки «Выйти» идет переход на страницу logout.php, где происходит сброс значений сессии, а затем делается редирект обратно на исходную страницу.
Для того чтобы вывести кнопки и формы необходимо в исходный текст стартовой страницы вставить (инклюдить) следующий код
<?php include_once $_SERVER['DOCUMENT_ROOT'].'/chat/login_controller.php'?>
Листинг 26. index.html
Вставка контроллера 2: login_controller.php в файл: news/index.html
<?php include_once $_SERVER['DOCUMENT_ROOT'].'/chat/createbase_controller.php'?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NEWS</title>
</head>
<body>
<?php include_once $_SERVER['DOCUMENT_ROOT'].'/chat/login_controller.php'?>
<p>Значимость этих проблем настолько очевидна, что начало повседневной работы по формированию позиции способствует
подготовке и реализации новых предложений!
<br>
Значимость этих проблем настолько очевидна, что повышение уровня гражданского сознания влечет за собой процесс
внедрения и модернизации модели развития.
<br> Практический опыт показывает, что рамки и место обучения кадров способствует повышению актуальности
соответствующих условий активизации.</p>
</body>
</html>
Код строк вставок контроллера1 и контроллера 2 выделен цветом.
кнопки будут выведены в том месте документа, где вставлен код строки подключения login_controller.php.
Можете поэкспериментировать с местом размещения «инклюда» в документ. Далее приведены скриншоты, иллюстрирующие работу контроллеров 2 и 1.
Начинают появляться выводимые элементы, поэтому понемногу надо задавать им стили css. Дальнейшие скриншоты работы программы будут с использованием стилей, но сама итоговая страница стилей будет приведена в конце книги, чтобы не было лишней путаницы.
Рис. 19. Пользователь не авторизован
Рис. 20. Пользователь авторизовался
12. Страница панель управления
На страницу «Панель управления» попадаем при нажатии кнопки «Кабинет». За вывод страницы отвечает файл index.php в папке «users».
Листинг 27. index.php Путь: news/chat/admin/users/index.php
<?php
error_reporting(E_ALL);
include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/access.php';
/*.........Проверяем полномочия пользователя..............*/
if (!userIsLoggedIn()) {
include $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/form_login.php';
exit();
}
if (!userHasRole('admin') and !userHasRole('user')) {
exit('Доступ только для Администратора');
}
/*..........Если admin разрешаем все. Start admin..........*/
//Начинаем основной цикл для администратора
if (userHasRole('admin')) {
/*.....Подключение нового пользователя.................*/
if (isset($_GET['add'])) {
include $_SERVER['DOCUMENT_ROOT'] . '/chat/dsn.php';
$pageTitle = 'Подключение нового пользователя';
$action = 'addform';
$name = '';
$email = '';
$id = '';
$button = 'Добавить пользователя';
// Выводим уровни доступа
try {
$result = $dsn->query('SELECT id, description FROM role');
} catch (pdoException $e) {
$error = 'Ошибка при получении списка ролей.';
include $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/users/error.html.php';
exit();

