БлогNot. Гостевая книга на PHP 7 + MySQLi

Гостевая книга на 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');

4. Теперь вводим в браузере ссылку вида http://localhost/gb/ где вместо localhost опять может быть адрес вашего сайта, попадаем на страницу, где кроме вашей "шапки" и "подвала" есть только строчка

Выполните файл install.php из папки скрипта или удалите его, если Вы выполняли этот файл ранее. Обновить эту страницу

Выполните install.php, он откроет новую вкладку и предоставит кнопку для создания базы.

Я специально закомментировал в файле install.php строчки с автоматическим удалением и новым созданием базы, так как обычно это запрещено на хостингах.

Программно удалять файлы на реальном хостинге тоже может быть запрещено, поэтому "вручную" удалите или переименуйте файл install.php через ftp-менеджер, которым вы его туда закачали.

После этого всё работает, вот вид "голого" скрипта на локальном хосте:

скрипт в работе на локальном хосте (фрагмент экрана)
скрипт в работе на локальном хосте (фрагмент экрана)

Ну а чтобы сослаться на гостевую, достаточно поставить там, где нужно, ссылку вида <a href="http://www.вашсайт.домен/gb/index.php">Гостевая</a>


теги: учебное сервер программирование php mysql хостинг

10.07.2020, 00:25; рейтинг: 101