Делаем простую гостевую книгу на PHP
Пишем с нуля самую простую версию гостевой книги на php.
Почти на каждом более-менее популярном сайте есть форум или гостевая книга, эти элементы нужны для постоянного общения автора сайта с его пользователями. Практически каждый серьезный проект имеет форум, обратную связь или гостевую книгу. Все эти жлементы на сайте нужны дял удобства общения посетителей с авторами сайтов.
Данная статья ориентирована на тех, кто только начинает изучать php. Постараемся быстро разобраться с работой небольшого скрипта, который мы будет писать.
Первым делом мы создаем обычную html форму, в которой пользователь будет вводить данные: имя, email адрес и сообщение, которое он хочет опубликовать. После того, как пользователь нажмет кнопку добавить — происходит генерация формы, проверка ее на правильность ввода данных (скрипт проверяет только, заполнены ли все поля и не превышает ли введенная информация лимита), и размещается внизу страницы.
Базу данных мы в данном случае применять не будем, будем записывать всю информацию в файл, размещенный на сервере.
Первое — создаем файл index.php и пишем форму:
Code
<form name="gbook" target="_self" method="post" action="gbook_add.php">
<fieldset>
<legend>Ваше имя:</legend>
<input type="text" name="username">
</fieldset>
<fieldset>
<legend>Ваш email адрес:</legend>
<input type="text" name="email">
</fieldset>
<fieldset>
<legend>Текстовое сообщение:</legend>
<textarea name="text" cols="50" rows="10"></textarea>
</fieldset>
<button type="submit">Отправить сообщение</button>
</form>
<fieldset>
<legend>Ваше имя:</legend>
<input type="text" name="username">
</fieldset>
<fieldset>
<legend>Ваш email адрес:</legend>
<input type="text" name="email">
</fieldset>
<fieldset>
<legend>Текстовое сообщение:</legend>
<textarea name="text" cols="50" rows="10"></textarea>
</fieldset>
<button type="submit">Отправить сообщение</button>
</form>
Ниже в этом же файле нам надо написать небольшой скрипт, с помощью которого будет размещаться введенные данные.
Code
$filename = "email.dat";
$delitmer = "<|-|>";
$shablon = '
';
$data = @file($filename);
foreach($data as $val)
{
list($username, $email, $text, $date) = explode($delitmer, trim($val));
$tmp_message = str_replace("%username%", $username, $shablon);
$tmp_message = str_replace("%email%", $email, $tmp_message);
$tmp_message = str_replace("%text%", $text, $tmp_message);
$tmp_message = str_replace("%add_date%", $date, $tmp_message);
echo $tmp_message;
}
?>
$delitmer = "<|-|>";
$shablon = '
Имя пользователя: %username% |
%text% |
%add_date% |
';
$data = @file($filename);
foreach($data as $val)
{
list($username, $email, $text, $date) = explode($delitmer, trim($val));
$tmp_message = str_replace("%username%", $username, $shablon);
$tmp_message = str_replace("%email%", $email, $tmp_message);
$tmp_message = str_replace("%text%", $text, $tmp_message);
$tmp_message = str_replace("%add_date%", $date, $tmp_message);
echo $tmp_message;
}
?>
Теперь осталось написать еще один скриптик, который будет проверять длину полученных данных. Для этого создаем еще один файл gbook_add.php и
пишем следующий код:
Code
$fileName = "email.dat";
$delimeter = "<|-|>";
$username_limit = 50;
$email_limit = 80;
$text_limit = 500;
if(isset($_POST)) {
if(isset($_POST['username']) & isset($_POST['email']) & isset($_POST['text']))
{
if(((strlen($_POST["username"]) >0) & (strlen($_POST["username"]) <= $username_limit)) &
((strlen($_POST["email"]) >0) & (strlen($_POST["email"]) <= $email_limit)) &
((strlen($_POST["text"]) >0) & (strlen($_POST["text"]) <= $text_limit))) {
$username = str_replace("\r\n", "
", htmlspecialchars($_POST["username"]));
$email = str_replace("\r\n", "
", htmlspecialchars($_POST["email"]));
$text = str_replace("\r\n", "
", htmlspecialchars($_POST["text"]));
$arr = array($username, $email, $text, date('d:m:Y'));
$new_message = implode($delimeter, $arr) . "\r\n";
$message_arr = @file($fileName);
$message_str = $new_message;
$message_str .= trim(implode("", $message_arr));
$fp = fopen($fileName, "w");
fwrite($fp, $message_str);
fclose($fp);
echo "";
echo "Ваше сообщение добавлено!";
} //end if
else {
echo "Ошибка!!!
Не все данные введенны, либо в одном из полей формы слишком символов.";
}
}
}
?>
$delimeter = "<|-|>";
$username_limit = 50;
$email_limit = 80;
$text_limit = 500;
if(isset($_POST)) {
if(isset($_POST['username']) & isset($_POST['email']) & isset($_POST['text']))
{
if(((strlen($_POST["username"]) >0) & (strlen($_POST["username"]) <= $username_limit)) &
((strlen($_POST["email"]) >0) & (strlen($_POST["email"]) <= $email_limit)) &
((strlen($_POST["text"]) >0) & (strlen($_POST["text"]) <= $text_limit))) {
$username = str_replace("\r\n", "
", htmlspecialchars($_POST["username"]));
$email = str_replace("\r\n", "
", htmlspecialchars($_POST["email"]));
$text = str_replace("\r\n", "
", htmlspecialchars($_POST["text"]));
$arr = array($username, $email, $text, date('d:m:Y'));
$new_message = implode($delimeter, $arr) . "\r\n";
$message_arr = @file($fileName);
$message_str = $new_message;
$message_str .= trim(implode("", $message_arr));
$fp = fopen($fileName, "w");
fwrite($fp, $message_str);
fclose($fp);
echo "";
echo "Ваше сообщение добавлено!";
} //end if
else {
echo "Ошибка!!!
Не все данные введенны, либо в одном из полей формы слишком символов.";
}
}
}
?>
Это очень простой пример гостевой книге, в ней отсутствует защита от спама, редактирование и удаление размещенных сообщений, однако на этом примере можно хорошо понять логику работы php.
-
FalleN -
3266 -
1 -
0
Но только нужно ставить наверное на те модули которые обновляться должны не раньше через пару тройку минут
С Уважением, Андрей...