Рыцарь
Группа: Пользователи
|
Сейчас мы разработаем приложение "Гостевая книга на PHP".
Сообщения будут храниться в файлах, которые расположены в директории RECORDS (позже мы разработаем вариант гостевой книги, основанный на хранении сообщений в базе данных). Код размещен в двух файлах: index.php (отображение сообщений) и addrec.php (добавление сообщений, их проверка и запись в файл).
Итак, создайте файл addrec.php и в той же директории, в которой расположен этот файл создайте директорию RECORDS.
Сначала проверяем, ввел ли пользователь данные и правильно ли он их ввел: <? $error = ""; $action = $_POST["action"]; if (!empty($action)) { $name = trim($name); $msg = trim($msg); if (empty($msg)) // если не введено сообщение { $action = ""; $error = $error."<LI>Вы не ввели сообщение\n"; } if (empty($name)) // если не введено имя { $action = ""; $error = $error."<LI>Вы не ввели имя\n"; } if (!empty($email)) /* если введен e-mail, то проверяем с помощью регулярного выражения правильность ввода */ { if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)) { $action = ""; $error = $error."<LI> Неверно введен е-mail.&nbsр Введите e-mail в виде <i>softtime@softtime.ru</i> \n"; } }
Теперь обрабатываем введенный пользователем текст функциями удаления HTML-тегов и обратных слешей: $name = substr($_POST["name"],0,32); $name = htmlspecialchars(stripslashes($name)); // обрабатываем имя $city = substr($_POST["city"],0,32); $city = htmlspecialchars(stripslashes($city)); // обрабатываем город $email = substr($_POST["email"],0,32); $email = htmlspecialchars(stripslashes($email)); // обрабатываем e-mail $url = substr($_POST["url"],0,36); $url = htmlspecialchars(stripslashes($url)); // обрабатываем url-адрес $msg = substr($_POST["msg"],0,1024); $msg = htmlspecialchars(stripslashes($msg)); // обрабатываем сообщение
В нашей гостевой книге поддерживается полужирное начертание, курсив, подчеркивание, верхние и нижние индексы. Для того, чтобы пользователь мог, к примеру, выделить блок текста в сообщении курсивом, его необходимо заключить в теги <i></i> и т.д. Поэтому для после того, как текст введен, нужно заменить эти искусственные теги на их реальное HTML-представление: if (empty($error)) // если ошибок нет, обрабатываем сообщение { $msg = nl2br($msg); $msg = str_replace("","<u>",$msg); $msg = str_replace("","<u>",$msg); $msg = str_replace("","<i>",$msg); $msg = str_replace("","<i>",$msg); $msg = str_replace("","<B>",$msg); $msg = str_replace("","<B>",$msg); $msg = str_replace("","<SUB>",$msg); $msg = str_replace("","<SUB>",$msg); $msg = str_replace("","<SUP>",$msg); $msg = str_replace("","<SUP>",$msg); $msg = str_replace("","</u>",$msg); $msg = str_replace("","</u>",$msg); $msg = str_replace("","</i>",$msg); $msg = str_replace("","</i>",$msg); $msg = str_replace("","</B>",$msg); $msg = str_replace("","</B>",$msg); $msg = str_replace("","</SUB>",$msg); $msg = str_replace("","</SUB>",$msg); $msg = str_replace("","</SUP>",$msg); $msg = str_replace("","</SUP>",$msg); $msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a href=\\2>\\2</a>\\3",$msg); $msg = str_replace("\n"," ",$msg); $msg = str_replace("\r"," ",$msg);
Открываем файл и добавляем в него, введенную пользователем информацию: /* создаем файл с именем вида "rec.+время добавления сообщения" */ $file = fopen("records/rec.".time(),"w"); // записываем информацию в файл, по одной строчке на каждое поле fputs($file,$name."\n"); fputs($file,$city."\n"); fputs($file,$email."\n"); fputs($file,$url."\n"); fputs($file,$msg."\n"); // закрываем файл fclose($file);
Вызываем скрипт index.php, ответственный за отображение сообщений: print "<HTML><HEAD>\n"; print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n"; print "</HEAD></HTML>\n"; } }
Добавляем код вывода сообщений об ошибках и HTML-код формы добавления сообщения: if (empty($action)) { ?> <HTML> <HEAD> <TITLE>Гостевая книга - добавление записи</TITLE> </HEAD&tg; <BODY> <H3> <? print "<center>"; ?> <font color=#1E90FF>Добавление записи</font> </H3> <? if (!empty($error)) /* если есть ошибки, выводим сообщение об ошибках */ { print "<P><font color=green>Во время добавления записи произошли следующие ошибки:</font></P>\n"; print "<UL>\n"; print $error; print "</UL>\n"; } ?> <!-- пишем HTML-код формы добавления сообщений !--> <center> <table width=1 border=0> <form action=addrec.php method=post> <input type=hidden name=action value=post> <tr> <td width=50%>Имя:<font color=red><sup>*</sup><font></td> <td align=right> <input type=text name=name maxlength=32 value='<? echo $name; ?>'> </td> </tr> <tr> <td width=50%>Город:</td> <td align=right> <input type=text name=city maxlength=32 value='<? echo $city;; ?>'> </td> </tr> <tr> <td width=50%>E-Mail:</td> <td align=right> <input type=text name=email maxlength=32 value='<? echo $email; ?>'> </td> </tr> <tr> <td width=50%>URL:</td> <td align=right> <input type=text name=url maxlength=36 value='<? echo $url; ?>'> </td> </tr> <tr> <td colspan=2>Сообщение:<font color=red<sup>*</sup></font><br> <textarea cols=50 rows=8 name=msg><? echo $url; ?> </textarea> </td> </tr> <tr> <td colspan=2><input type=submit value='Добавить'></td> </tr> </form> <tr> <td colspan=2><font color=red><sup>*</sup></font> - поля, обязательные для заполнения </td><td align=left> </table> </center> </BODY> </HTML> <? } ?>
[Warning] [/Warning]
|