Делаем простую гостевую книгу на 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>


Ниже в этом же файле нам надо написать небольшой скрипт, с помощью которого будет размещаться введенные данные.

Code
$filename = "email.dat";
$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 "Ошибка!!!
Не все данные введенны, либо в одном из полей формы слишком символов.";
  }
  }
   
}
?>


Это очень простой пример гостевой книге, в ней отсутствует защита от спама, редактирование и удаление размещенных сообщений, однако на этом примере можно хорошо понять логику работы php.

  • FalleN

  • 3161

  • 1

  • 0
Теги:

Ссылки на статью:

Похожие статьи: