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

    13 комментариев 19142

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

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

Телеграм-канал serblog.ru

Демо Демо Bootstrap

Скрипт гостевой книги на 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. Теперь, когда вы покинете страницу после написания сообщения и зайдете спустя какое-то время, то обнаружите, что поле Имя будет по-прежнему заполнено. Это удобно. Хранится будет до тех пор, пока вы не очистите локальное хранилище браузера. Гостевую книгу можно установить в качестве модуля для написания отзывов на одностраничном сайте или в качестве системы комментирования. Но нужно быть внимательным, ведь защиты от ботов здесь никакой нет. Они могут достучаться до формы и выливать огромное количество спама, что приведет к увеличению объема текстового файла. Поэтому за этим нужно следить. на этом все, вы можете свободно скачать скрипт гостевой книги по прямой ссылке.

СКАЧАТЬ

Любая сумма на развитие сайта

13 комментариев
  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

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

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

  3. А тяжеловесную гостевую можно слепить с помощью генератора гостевых (работает под виндой или Wine). Но его, конечно, не уместить в 15 строк кода. К тому же, генерирует на Perl, а не на пхп, как здесь. Кстати, бесплатный он, генератор мой.
    А заместо $gb = []; можно влепить $gb = array(); Всех благ!

  4. Слава:

    Скрипт рабочий. Только в строках text и name ошибку выдает.
    Что не так в переменных, почему браузер тявкает на локале.
    Notice: Undefined index: text in C:\Ampps\www\book.php on line 5
    Notice: Undefined index: name in C:\Ampps\www\book.php on line 6

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

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