- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 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();