Простой пример создания гостевой книги

Thursday, 17 December 2009 | Автор: programmer

Помню далекий конец 2000 года, когда мой знакомый попросил написать ему гостевую книгу на сайт. Тогда я был еще совсем неопытен в PHP'шных делах, только начинал его изучать, не знал что такое базы данных (БД). Так что сейчас рассмотрим пример создания гостевой книги с использование файлов в качестве базы хранения информации.

 

Предположим структура нашего сайта с гостевой книгой будет следующей:

</p>
<p>/www</p>
<p>  index.php</p>
<p>  database.txt</p>
<p>

 

где index.php - это файл самой гостевой книги, а database.txt - это текстовая база данных.

 

Делаем файл index.php со следующим кодом (комментарии внутри кода):

</p>
<p><?php
    // Если была нажать кнопка "Отослать"
    if (isset($_POST['save'])) {
        $text = str_replace("n", "<BR/>", $_POST['text']); // заменяем все переводы строк на <BR/>.
        $name = $_POST['name'];
        $date = time(); // Это переменная будет принимать значение времени в секундах в unix формате
        
        $fp = fopen("database.txt", "a"); // открываем файл для записи. В отличии от второго парамета "w", который перезаписывает файл, параметр "a" записывает данные в конец файла не перезатирая его
        fwrite($fp, $date."|".$name."|".$text."n"); // записываем данные в нашу импровизированную базу данных. Получается, что каждая строка в этом файле будет представлять одну запись, оставленную посетителями
        fclose($fp);
    }

    // делаем блок вывода уже оставленных сообщений
    $fp = fopen("database.txt", "r"); // открываем файл с сообщениями
    while (!feof($fp)) { // идем по файлу, пока не достигнем его конца
        $record = fgets($fp); // функция fgets берет одну строку из файла и перемещает курсор на следующую строку
        if (trim($record) != "") { // если полученная строка из файла не пустая
            $data = explode("|", $record); // функция разделяем строку на составляющие, раздеоенные символом |, т.о. получается массив, нулевой элемент которого дата, первый - имя, второй - сообщение
            echo date("d.m.Y H:i:s", $data[0]).". "; // выводим дату и представляем ее в виде ДД.ММ.ГГГГ ЧЧ:ММ:СС.
            echo $data[1]."<BR/>"; // выводим имя
            echo $data[2]."<BR/><HR/><BR/>"; // выводим сообщение
        }
    }
    
    // Выводим форму добавления записи в гостевую книгу
    echo "<form method="POST">n";
    echo "<table border="0" cellpadding="5" cellspacing="5">n";
    echo "<tr><td>Ваше имя</td><td><input type="text" name="name" /></td></tr>n";
    echo "<tr><td>Текст сообщения</td><td><textarea name="text"></textarea></td></tr>n";
    echo "<tr><td colspna="2"><input type="submit" name="save" value="Отослать"/></td></tr>n";
?></p>
<p>

 

В итоге получаем следующую картину:

Создание гостевой книги на PHP

 

Сам проект можете скачать по ссылке(1.1 Кб)

Посмотреть работу скрипты можно по ссылке


 
Tweet


Категория(и): Изучаем PHP, Скрипты

Комментарии


Thursday, 17 December 2009 | 15:45:41 | Автор: dan
А как парсить файл и искать чего-нибудь нужное?
Thursday, 17 December 2009 | 15:53:59 | Автор: programmer
dan, что именно парсить?
Thursday, 17 December 2009 | 16:04:19 | Автор: dan
ну слово нужное, или выражение.

А ещё лучше, как проверить наличие определённого файла на удалённом веб сервере!
Thursday, 17 December 2009 | 16:06:32 | Автор: programmer
dan, перенесите данный вопрос на форум, я там отвечу
Friday, 16 July 2010 | 14:47:33 | Автор: alex

пишет ошибку гдето тут   echo "<form method="POST">n";

Friday, 24 September 2010 | 18:17:33 | Автор: mrxh8

2 alex:

echo "<form method="POST">n";

экранировать нужно

Monday, 20 December 2010 | 06:49:38 | Автор: nucleon

Гиганское спасибо за не правильно написаный урок по созданию гостевой)))

Это помогло мне найти ошибку, что заставила меня поломать голову в чём проблема при записи 1-й и более в БД.

а что тут надо писать?
Monday, 20 December 2010 | 07:01:33 | Автор: nucleon

Ошибка вот:

fwrite( $fp, $date. "|" .$name."|".$text."n");

А надо писать: fwrite( $fp, $date. "|" .$name. "|" .$text. "rn")

 

Советую в будущих уроках, заключённые в (") скрипты, отделять с (") отделять слэшем. и записывать перенос строки во время записи, как надо! а не как попало.

а что тут надо писать?
Monday, 20 December 2010 | 07:02:29 | Автор: nucleon

нужные слэеши вырезаны... перед и после (n) в моём примере стоит слэш вправо

а что тут надо писать?
Добавить комментарий
Чтобы оставить комментарий, Вам необходимо зарегистрироваться или авторизироваться