Я здесь не буду рассматривать именно вариант с форумом, мы поговорим о форме отправки сообщения, т.е. в принципе любую форму которую вы создаёте на сайте, для отправки данных. Например для обратной связи,
сейчас часто стало модным делать подразделы на сайте, типа "Вопрос - Ответ". Где вы задаёте вопрос администрации
сайта или менеджеру, например интернет магазина в котором хотите, что-то приобрести, при ответе менеджера
вопрос и ответ показываются на странице. Тем самым самостоятельно сайт формирует рубрику "Часто задаваемые вопросы"
. Ну и вы помогаете набивать новый контент на сайт. Не большую кучку зайцев завалили. ))
Так вот чтоб этой формой можно было пользоваться только на сайте, а не с локального сервера у себя на компьютере.
В форму добавляется скрытый тег input со значением автоматически сформированного id - сессии пользователя.
Который при нажатии кнопки Отправить, отправляется со всеми данными на страницу обработчика, где и проверяется
его принадлежность к текущей сессии. Если вы пока не знакомы с сессиями в PHP, ни чего страшного, всё значительно проще, чем может показаться, прочитав FAQ по сессиям.
Листинг № 1 - Форма для отправки сообщения защищённая сессией.
Code
<?php
session_start();
echo '<form action="page2.php" method="post">
<input name="" type="text"><br>
<input name="idses" type="hidden" value="'.session_id().'">
<input name="go" type="submit" value="Отправить">
</form>';
?>
Листинг № 2 - Файл page.php, принимающий данные из формы на обработку.
Code
<?php
session_start();
// Проверяем наличие одной сессии.
if(session_id() != $_POST['idses']) exit("Все в поле, курить бамбук!");
// Здесь пишем любой код который должен следовать после идентификации сессии...
// ...
?>
Хотелось бы тут отметить, что функция session_start() - будет работать только
в том случаи, если первый дескриптор PHP (<?php) находится на первой строке файла.