Уроки PHP для начинающих


Скрипт добавления комментариев на сайте: отделяем форму от скрипта-обработчика

Начнём с простейшего: разлучим форму с обработчиком.

Форма, как вы помните, у нас изначально задумана на странице index.php, которая в папке www, которая в папкеcomment, которая в папкеhome на Денвере. А сам скрипт должен быть в файле comments.php.

Поэтому код формы (всё, что выделено синим) оставляем на index.php, а остальное копируем в comments.php.

<?php
$gbpath="gb.dat";// Путь к файлу с записями
if(!file_exists($gbpath))// проверяем есть ли файл $gbpath 
{
// если отсутствует, то создаем его
$f=fopen($gbpath,"w") or die ("Не могу создать файл"); // создание файла
flock($f,2) or die("Невозможно заблокировать файл"); // блокируем файл
fwrite ($f,"",0); // имитация записи в него
@chmod($f, 0664); // установка прав на запись
fclose($f); // Закрытие созданного файла
}
if(getenv("REQUEST_METHOD")=="POST"){// проверяем, если метод запроса POST
// то значит скрипт вызван формой записи сообщения
$f=fopen($gbpath,"r") or die("Не могу открыть файл"); // Открываем файл для чтения
$oldData = fread($f, filesize ($gbpath)); // считываем данные
fclose($f); // закрываем файл
$f=fopen($gbpath,"w+") or die("Не могу открыть файл"); // открываем файл для дописи
flock($f,2) or die("Невозможно заблокировать файл"); // блокируем файл
fputs($f,"$name\n"); // записываем имя автора
fputs($f,"$email\n"); // его e-mail
$text=ereg_replace("\n"," ",$text);// убираем возвраты каретки из сообщения
fputs($f,"$text\n"); // записываем сообщение
fwrite($f,$oldData); // записываем прежние данные
fclose($f); // закрываем файл
}
// Вывод заголовка гостевой
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="undefined">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Гостевая книга - Добавляем комментарии на сайте.</title>
</head>
<body>


<?php


$f=fopen($gbpath,"r") or die("Не могу открыть файл");// открываем файл с записями
while(1){// вырожденный цикл, для чтения записей из файла
$name=fgets($f,1000);// считываем имя автора
$email=fgets($f,1000);// его e-mail
$text=fgets($f,1000);// сообщение
if(feof($f)) break; // если записей больше нет выходим из цикла
// Выводим данные
echo "<hr>Автор:<a href=mailto:$email>$name</a><br>";
echo "Сообщение:<br>$text<br>";
}
fclose($f);// закрываем файл
// форма для записи сообщения
?>

<p align="center">Разбираюсь со скриптом для добавления комментариев.</p>
<div align="center">
<form action="" method="post">
<p> <label> Ваше имя <font color="#FF0000">* </font>:</label> <br>
<input type="text" name="name"></p>
<p> <label> E-mail: </label><br>
<input type="text" name="email"></p>
<p> <label> Сообщение <font color="#FF0000">* </font>:<br>
<textarea name="text" cols="40" rows="5"></textarea></label></p>
<p> Введите сумму чисел с картинки <font color="#FF0000">* </font>:<br>
<img src="images/sum.gif" width="80" height="50" border="1"> =
<input name="summa" type="text" size="10" maxlength="5"></p>
<p><input type="submit" value="Добавить комментарий"></p>
</form>
</div>
</body>
</html>

* Форма в этом скрипте уже заменена на созданную в позапрошлом уроке. Как и названия всех переменных.

Вот, что теперь в файле comments.php:

<?php
$gbpath="gb.dat";// Путь к файлу с записями
if(!file_exists($gbpath))// проверяем есть ли файл $gbpath 
{
// если отсутствует, то создаем его
$f=fopen($gbpath,"w") or die ("Не могу создать файл"); // создание файла
flock($f,2) or die("Невозможно заблокировать файл"); // блокируем файл
fwrite ($f,"",0); // имитация записи в него
@chmod($f, 0664); // установка прав на запись
fclose($f); // Закрытие созданного файла
}
if(getenv("REQUEST_METHOD")=="POST"){// проверяем, если метод запроса POST
// то значит скрипт вызван формой записи сообщения
$f=fopen($gbpath,"r") or die("Не могу открыть файл"); // Открываем файл для чтения
$oldData = fread($f, filesize ($gbpath)); // считываем данные
fclose($f); // закрываем файл
$f=fopen($gbpath,"w+") or die("Не могу открыть файл"); // открываем файл для дописи
flock($f,2) or die("Невозможно заблокировать файл"); // блокируем файл
fputs($f,"$name\n"); // записываем имя автора
fputs($f,"$email\n"); // его e-mail
$text=ereg_replace("\n"," ",$text);// убираем возвраты каретки из сообщения
fputs($f,"$text\n"); // записываем сообщение
fwrite($f,$oldData); // записываем прежние данные
fclose($f); // закрываем файл
}
$f=fopen($gbpath,"r") or die("Не могу открыть файл");// открываем файл с записями
while(1){// вырожденный цикл, для чтения записей из файла
$name=fgets($f,1000);// считываем имя автора
$email=fgets($f,1000);// его e-mail
$text=fgets($f,1000);// сообщение
if(feof($f)) break; // если записей больше нет выходим из цикла
// Выводим данные
echo "<hr>Автор:<a href=mailto:$email>$name</a><br>";
echo "Сообщение:<br>$text<br>";
}
fclose($f);// закрываем файл
?>

Идём дальше

Автор: Андрей Чернобай

P. S. Подпишитесь на безплатную рассылку Вокруг Сайта и получайте на свой электронный адрес новые уроки по созданию сайта.

Оставьте свой отзыв о статье:



Введите цифровой код с картинки*:


Комментарий добавил(а): Сергей
17-04-2012
13 час. 26 мин.

Комментарий:
А можно это реализовать на простом HTML сайте?

Ответ: Если сайт сделан из обычных html-файлов, то php-скрипты работать на нём не будут. Можно изменить расширения всех файлов с html на php - тогда будет работать.

Новое на сайте

Другие статьи...

Видеокурсы

Рассылки

"Вокруг Сайта"
подпишитесь и получайте на свой e-mail уроки, книги, статьи, скрипты, а также подарки и скидки на товары, продаваемые с сайта

SmartResponder.ru
Ваше имя: *
Ваш e-mail: *

"PHP-песочница"
- PHP для начинающих: уроки с подробным анализом скриптов, необходимых для вашего сайта:

PHP-песочница
Подписаться письмом

Разделы Сайта