Гостевая книга на PHP 7 + MySQLi
Идут годы, но вопросы о "прикручивании" куда-нибудь, в том числе, и на статические сайты, несложной, но современной гостевой книги, остаются для начинающих или просто "любителей" вечно актуальными.
В сети достаточно примеров гостевых на PHP, но большей частью они устарели или излишне громоздки. Простейший сервис такого рода, по-моему, должен:
- работать на PHP7 с MySQLi вместо MySQL и в кодировке Юникода UTF-8;
- иметь простой код, построенный на небольших файлах и общий небольшой объём (у меня это менее 20 Кб);
- иметь очень простую регистрацию и авторизацию, но всё-таки их иметь для уменьшения спама;
- с той же целью защищать формы регистрации и отправки сообщений простой капчей, мы будем подгружать её яваскриптом после загрузки страницы, что сведёт вероятность автоматического заспамливания почти до нуля;
- делать вывод ленты сообщений "порциями" по убыванию времени, использовать минимум таблиц (у нас две - "Сообщения" и "Пользователи");
- позволять иметь статические ссылки на сообщения;
- иметь разумные ограничения на содержание сообщений (у нас это будет объём текста до 2 Кб, длина слова до 60 символов, защита от тегов и лишних переводов строки в сообщениях). При этом пользователь должен видеть, сколько символов он уже ввёл;
- иметь одного администратора, который может удалять или править сообщения (например, приписать с новой строки "Ответ: "). Удалением автор и дата сообщения не меняются, а стираются только заголовок и содержимое (благодаря чему разбиение записей на страницы останется постоянным);
- иметь инсталлятор, который сможет сработать и на реальном хостинге - к сожалению, пару операций пользователю всё равно придётся выполнить "вручную", так уж обычно настраивают хостинги из соображений безопасности;
- иметь хотя бы простой поиск, потому что сложным можно нагрузить сервер и создать там "дыру", так что пусть авторизованные пользователи смогут поискать по одному введённому слову, а об остальном позаботятся "большие" поисковики;
- не иметь собственного стилевого оформления, но быть легко встраиваемым на любой сайт.
Собственно, для всех этих целей подойдёт мой учебный пример на PHP, который я сюда и прикреплю. На идеальность он не претендует, так как писался где-то за две-три пары, но, как будто, всё нормально. Вот алгоритм работы с этим архивом.
Скачать архив с гостевой книгой на PHP7 + MySQLi (13 Кб)
1. Развернуть файлы из архива у себя на компьютере, папка gb
уже создана внутри архива.
2. Настройте скрипт правкой файла config.php
, по сути, вам понадобится поменять только первые пять строк:
define ('DB_HOST','localhost'); //хост define ('DB_LOGIN','root'); //логин define ('DB_PASS',''); //пароль define ('ADMIN_LOGIN','Admin'); //логин админа define ('ADMIN_PASS','123'); //пароль админа
Три настройки в начале вам обязательно должен дать провайдер или их можно найти в личном кабинете хостинга, ну а логин и пароль администратора выберите сами.
В файлы head.php
и foot.php
вы можете, соответственно, поместить любую разметку HTML, образующую "шапку" и "подвал" гостевой, сейчас там просто синтаксически правильные начало и конец пустого документа HTML5.
Важно! Не правьте файлы
.php
стандартным "Блокнотом" Windows. Для шага 1 подойдёт Notepad++, а встроенные текстовый редактор и ftp-клиент файлового менеджера Far (ссылка та же) подойдут для всех действий из статьи, рекомендуется освоить этот бесплатный продукт.
2. Провайдер предоставил вам ссылку для доступа к удалённым файлам сайта по протоколу ftp, откройте главную папку своего сайта, она может называться htdocs
, wwwroot
или как-то ещё в зависимости от используемого сервера, и скопируйте туда папку gb
со всеми файлами.
3. Провайдер предоставил также ссылку для доступа к утилите управления базами данных phpMyAdmin, на локальном хосте XAMPP эта ссылка выглядит как http://localhost/phpmyadmin/
, а на реальном сервере вместо localhost
будет адрес вашего домена.
Открываем phpmyadmin, жмём "Создать БД". В поле "имя базы данных" вводим guestbook
, в списке кодировок выбираем utf8_general_ci
, жмём ОК. Пустая база создана.
Если у вас уже была база, имя которой вы указали в настройке DB_NAME
файла config.php
, можно и просто выполнить к ней SQL-запрос вида
CREATE TABLE `messages` (id int PRIMARY KEY auto_increment, title varchar(80), message text, date int, login varchar(32)); INSERT INTO `messages` (`id`, `title`, `message`, `date`, `login`) VALUES (1, 'Admin', 'Hello, world!', 0, ''); CREATE TABLE `users` (id int PRIMARY KEY auto_increment, login varchar(32), password varchar(32)); INSERT INTO `users` (`id`, `login`, `password`) VALUES (1, 'Admin', '202cb962ac59075b964b07152d234b70');
Здесь в таблицу users
заносится запись с логином Admin
и паролем "123", зашифрованным алгоритмом md5.
Чтобы получить другой пароль администратора, достаточно выполнить на локальном хосте файл такого вида:
<?php echo md5('Привет'); ?>Конечно, файл должен быть создан в той же кодировке Юникода UTF-8, что и все остальные файлы.
Выведенную в браузер строку (в ней будет тоже 32 символа) достаточно вставить в апострофы вместо
202cb962ac59075b964b07152d234b70
, чтобы предустановленный пароль администратора сталПривет
(кириллицей, с большой буквы).В реальности, конечно же, выбирайте пароли потолковее, даты рождения, простые слова и т.п. очень ненадёжны.
4. Теперь вводим в браузере ссылку вида http://localhost/gb/
где вместо localhost
опять может быть адрес вашего сайта, попадаем на страницу, где кроме вашей "шапки" и "подвала" есть только строчка
Выполните install.php из папки скрипта или удалите его, если Вы выполняли этот файл ранее. Обновить эту страницу
Кликнув по ссылке на имени файла install.php
, выполните его, он откроет новую вкладку и предоставит кнопку для создания базы.
Я специально закомментировал в файле install.php
строчки с автоматическим удалением и новым созданием базы, так как обычно это запрещено на хостингах.
Программно удалять файлы на реальном хостинге тоже может быть запрещено, поэтому "вручную" удалите или переименуйте файл install.php
через ftp-менеджер, которым вы его туда закачали.
После этого всё работает, вот вид "голого" скрипта на локальном хосте:
скрипт в работе на локальном хосте (фрагмент экрана)
Ну а чтобы сослаться на гостевую, достаточно поставить там, где нужно, ссылку вида <a href="http://www.вашсайт.домен/gb/index.php">Гостевая</a>
Разумное дополнение скрипта - предусмотреть при регистрации нигде не публикуемое поле ввода "E-mail", а при авторизации - кнопку "Восстановить пароль", по которой зашифрованный пароль в базе "зануляется" и с помощью функции mail отправляется письмо со ссылкой на модуль восстановления пароля (предварительно можно попросить пользователя ввести указанный при регистрации адрес E-mail). Правда, это раза в полтора увеличит объём кода.
10.07.2020, 00:25 [3479 просмотров]