|
|
Почти на каждом более-менее популярном сайте есть форум или гостевая книга, эти элементы нужны для постоянного общения автора сайта с его пользователями.
Но многие начинающие веб-мастера не
знают, как реализовать гостевую книгу или форум самостоятельно. Некоторые
веб-мастера прибегают к использованию специальных интернет-сервисов, которые
предоставляют уже готовый продукт в виде гостевых или форумов,
расположенных на сайте этих сервисов и показывающих всем пользователям, которые
заходят в вашу гостевую\форум свою рекламу. Это не лучший
вариант, поэтому попробуем написать свою собственную гостевую книгу на php.
Для начала разберем
порядок работы любой гостевой книги или форума:
<form name="gbook" target="_self" method="post" action="gbook_add.php">
<table border="1" width="90%" align="center">
<tr>
<td width="50%" align="right" valign="top">Ваше имя: </td>
<td width="50%" align="left"><input type="text" name="username"></td>
</tr>
<tr>
<td width="50%" align="right" valign="top">Ваш e-mail: </td>
<td width="50%" align="left"><input type="text" name="email"></td>
</tr>
<tr>
<td width="50%" align="right" valign="top">Ваше сообщение: </td>
<td width="50%" align="left"><textarea name="message" rows="6" cols="37"></textarea></td>
</tr>
<tr>
<td width="50%" colspan="2" align="center"><input type="submit" name="send" value="Добавить сообщение"></td>
</tr>
</table>
</form>
имя пользователя n<|-|>e-mail пользователя n<|-|>сообщение n<|-|>дата n
...
имя пользователя 2<|-|>e-mail пользователя 2<|-|>сообщение 2<|-|>дата 2
имя пользователя 1<|-|>e-mail пользователя 1<|-|>сообщение 1<|-|>дата 1
<?php
$filename = "messages.dat";
$delitmer = "<|-|>";
$shablon = '
<table border="1" width="100%">
<tr>
<td width="100%">Имя пользователя: <a href="mailto:%email%">%username%</a></td>
</tr>
<tr>
<td width="100%">%message%</td>
</tr>
<tr>
<td width="100%" align="right">%add_date%</td>
</tr>
</table>
<br>';
$data = @file($filename);
foreach($data as $val)
{
list($username, $email, $message, $date) = explode($delitmer, trim($val));
$tmp_message = str_replace("%username%", $username, $shablon);
$tmp_message = str_replace("%email%", $email, $tmp_message);
$tmp_message = str_replace("%message%", $message, $tmp_message);
$tmp_message = str_replace("%add_date%", $date, $tmp_message);
echo $tmp_message;
}
?>
<?php
$filename = "messages.dat";
$delitmer = "<|-|>";
$username_limit = 50;
$email_limit = 80;
$message_limit = 500;
if (isset($_POST))
{
if (isset($_POST['username']) & isset($_POST['email']) & isset($_POST['message']))
{
if (((strlen($_POST['username'])>0) & (strlen($_POST['username'])<=$username_limit)) &
((strlen($_POST['email'])>0) & (strlen($_POST['email'])<=$email_limit)) &
((strlen($_POST['message'])>0) & (strlen($_POST['message'])<=$message_limit)))
{
$username = str_replace("\r\n", "<br>", htmlspecialchars($_POST['username']));
$email = str_replace("\r\n", "<br>", htmlspecialchars($_POST['email']));
$message = str_replace("\r\n", "<br>", htmlspecialchars($_POST['message']));
$arr = array($username, $email, $message, date("d.m.Y"));
$new_message = implode($delitmer, $arr) . "\r\n";
$messages_arr = @file($filename);
$messages_str = $new_message;
$messages_str .= trim(implode("", $messages_arr));
$fp = fopen($filename, "w+");
fwrite($fp, $messages_str);
fclose($fp);
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"2; URL=index.php\">";
echo "Ваше сообщение добавленно!";
}
else
{
echo "Ошибка!!!<br>Не все данные введенны, либо в одном из полей формы слишком символов.";
}
}
}
?>