Научная работа

Дураков Р. Написание гостевой книги на языке PHP, с использованием базы данных MySQL. Физико-математический факультет

Практически каждый из нас хотя бы раз путешествовал по сети Internet, переходя с сайта на сайт. Редко найдется человек, у которого рано или поздно не возникает желание сделать свой сайт или домашнюю страницу.
Для многих это не будет очень трудно. Однако сделать полученное представительство интерактивным является сложным для многих. Одним из способов «оживления» своего сайта является размещение на нем «гостевой книги». Гостевая книга – это страница, на которой каждый посетитель в режиме on-line может оставить свое сообщение. Это может быть и пожелание разработчику и обсуждение какого-либо вопроса. Существует несколько способов реализации гостевой книги. В своем докладе я приведу один из них. Весь код пишется на языке PHP, а сама гостевая хранится в таблице базы данных MySQL. Чтобы она работала необходимо, чтобы ваш хостинг поддерживал язык PHP и предоставлял вам базу MySQL.
Всю работу условно можно разбить на четыре этапа:
1. Создание базы данных и необходимой таблицы, написание функций по работе с введёнными данными;
2. Написание процедуры добавления записей в гостевую книгу (проверка корректности данных);
3. Написание процедуры вывода сообщений гостевой книги;
4. Авторизация администратора и удаление записей.


Этап первый.
Создание таблицы, в которой будут храниться данные нашей гостевой книги. Будем спрашивать у пользователя имя, собственно сообщение, адреса электронной почты и дата. Для администрирования книги нам понадобится еще одно поле, уникальное для каждой записи, - идентификатор. . В итоге получаем:
ID (тип Int) – порядковый номер сообщения;
Data (тип Datetime) – дата и время добавления;
Message (тип Text) – собственно само сообщение;
Name (тип Varchar) – имя посетителя;
Email (тип Varchar) – электронная почта посетителя

Теперь можно приступать к программированию.
Для начала определим константы, которые понадобятся нам в дальнейшем и вынесем их отдельный «конфигурационный» файл, в нём же будем подключаться к базе данных:
Файл config.php
Теперь создадим файл strings.php и опишем там функции проверки корректности данных:

Второй этап
Создадим файл design.php в котором будет шаблон нашей гостевой книги (форма, формат вывода записей), чтобы его потом было удобно использовать.

Теперь непосредственно файл гостевой книги (добавление записей)

Третий этап
Файл с процедурой удаления записей положим в другую папку, чтобы запретить к нему доступ. Но об этом подробно рассказано ниже.
Процедура удаления выглядит (работает) следующим образом.

Четвёртый этап:
Авторизацию администратора можно реализовать несколькими способами:
1) Средствами Web-сервера
2) С помощью скрипта, используя авторизацию по протоколу HTTP
3) Только средствами скрипта
Рассмотрим первый из этих способов, т.е. используя средства Web-сервера Apache. В этом случае злоумышленнику, чтобы взломать скрипт придётся взломать сначала защиту вашего хостинга.

Сначала создаём текстовый файл .htaccess следующего содержания:
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
Require user billy

Первая строка указывает на тип авторизации (пока поддерживается только Basic) . Далее идёт строка с указанием заголовка окна авторизации, которое появится при попытке зайти на защищенную страницу. В третьей строке указываем путь к файлу, в котором хранятся пользователи и их пароли. Как создать этот файл расскажу ниже. В заключении идёт директива о том, что доступ получит только пользователь billy(существует возможность также описать различные группы пользователей и предоставлять им доступ). Более подробно о содержании этого файла можно почитать в документации к серверу Apache. Теперь сгенерируем файл password.file. Заходим в каталог в который был поставлен сервер и ищем там папочку bin. В ней находим файл htpasswd.exe. Запускаем этот файл со следующими параметрам:

htpasswd.exe -c <путь и имя файла с логином и паролем> <логин>

Например:
htpasswd.exe -c c:\www\passwords\password.file billy
Программа попросит вас ввести пароль для данного пользователя и повторить его. После этого она создаст тестовый файл в указанной директории, в котором хранится логин пользователя и зашифрованный пароль.
Например:
billy:$apr1$ak1.....$wamoeEEzaIT6q..RHex2n.

Вот собственно говоря и всё. Теперь чтобы всё это заработало нужно сделать следующее. На удалённом сервере(где будет размещаться сайт) создаём папку защищён и помещаем в нее файл .htaccess и файлы страниц, доступ к которым мы ограничили. В нашем случае это страница с возможностью удаления записей из гостевой. Далее файл с паролями помещаем в отведенную для него папку (необходимо чтобы она была выше на один уровень чем весь сайт дабы в неё не могли попасть другие) . Итак получается вот такая структура:

/www/homepage/ - основные страницы сайта
/www/homepage/admin/ -защищенная папка
/www/passwords/password.file – файл с пользователями и паролями

В файле .htaccess в соответствии с расположением папок на сервере необходимо поменять путь к файлу с паролями (и заменить все обратные слеши на прямые (т.к. на сервере система Unix)

Схема работы скрипта