Гостевая книга PHP на файлах без MySQL

  Александр Маврин   10 комментариев

Гостевая книга на PHP

Здравствуйте. друзья! Представляю вашему вниманию самый простой скрипт гостевой книги, написанный на PHP без использования базы данных MySQL. Чисто на файлах, вернее все данные хранятся в одном текстовом файле .txt. Поймет даже чайник, никакого ООП, только процедурный подход. Достаточно скачать скрипт, установить на хостинг и он уже будет работать. И естественно код будет отрытым и совершенно бесплатным. Чтобы написать сообщение не нужна авторизация, поэтому хакеры не смогут получить к ней доступ, так как взламывать нечего. Предлагаю посмотреть пример и протестировать гостевую книгу.

Демо

Скрипт гостевой книги на PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
< ?php
$file = "book.txt";
$data = date('d.m.Y H:i'. ' мск');
$text = $_REQUEST['text'];
$name = $_REQUEST['name'];
if (@$_REQUEST['add']) {
  $f = fopen($file, "a");
  if (@$_REQUEST['text']) fputs($f, '<span class="date-mess">'.$name.' '.$data. " <br />". " <span class='message'>" .$text ."</span>"."\n");
  fclose($f);
  $random = time();    // случайный параметр, чтоб не кешировалось
  Header("Location: //{$_SERVER['SERVER_NAME']}{$_SERVER['SCRIPT_NAME']}?$random#form");
  exit();
}
$gb = @file($file);
if (!$gb) $gb = [];

Как видите, всего 15 строчек кода позволяют волшебству случиться. Теперь добавим форму отправки и цикл вывода записей и гостевой книги. Ну и так как у нас сам скрипт вынесен в отдельный файл, то его необходимо подключить в файле, где будут выводиться публикации.

1
2
3
4
5
6
7
8
9
10
< ?php
include 'book.php';
foreach($gb as $text) {?>
  < ?=($text)?><br /><br />
< ?}?>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="POST" id="form">
  <input type="text" name="name" placeholder="Имя" id="name"/>
  <textarea name="text" placeholder="Текст"></textarea><br />
  <input type="submit" name="add" value="Добавить запись"/>
</form>

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

1
2
3
4
5
6
7
<script>
var i2 = document.querySelector('#name');
i2.value = localStorage.getItem('names');
i2.oninput = function() {
  localStorage.setItem('names', i2.value);
}
</script>

Кстати, то ж самое можно сделать с помощью cookie на PHP. Теперь, когда вы покинете страницу после написания сообщения и зайдете спустя какое-то время, то обнаружите, что поле Имя будет по-прежнему заполнено. Это удобно. Хранится будет до тех пор, пока вы не очистите локальное хранилище браузера. Гостевую книгу можно установить в качестве модуля для написания отзывов на одностраничном сайте или в качестве системы комментирования. Но нужно быть внимательным, ведь защиты от ботов здесь никакой нет. Они могут достучаться до формы и выливать огромное количество спама, что приведет к увеличению объема текстового файла. Поэтому за этим нужно следить. на этом все, вы можете свободно скачать скрипт гостевой книги по прямой ссылке.

СКАЧАТЬ

Добавить страницу в закладки

10 комментариев
  1. Антон:

    Странно, но, у меня не пашет…
    в book.txt заносит,но, не отображает…

  2. Арина Журавлева:

    не запускается, может неправильно запускаю
    выдает ошибку: Parse error: syntax error, unexpected ‘[‘ in Z:\home\localhost\www\chat\book.php on line 15
    в 15 строке: if (!$gb) $gb = [];

    • Александр Маврин:

      Попробуйте так:

      1
      2
      3
      
       if (!$gb){
        $gb = [];
      }
      • Арина Журавлева:

        теперь ругается на 16 строку: $gb = [];
        ошибка: Parse error: syntax error, unexpected ‘[‘ in Z:\home\localhost\www\chat\book.php on line 16

      • Арина Журавлева:

        можно с вами как-то связаться? очень нужна гостевая книга и ваш вариант ее представление идеально подходит для моей работы

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *