Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Удаление HTML - тегов и обратных слешей⇐ ПредыдущаяСтр 14 из 14
Как уже говорилось, вводимый пользователем текст необходимо обработать функциями удаления HTML-тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). К примеру, если переменная $name содержит текст с именем пользователя, то обработка этого текста выглядит так: <? $name = substr ( $_POST["name"],0,32 ); $name = htmlspecialchars ( stripslashes ( $name ));?>
Пишем гостевую книгу на PHP (вариант на файлах) Сейчас мы разработаем приложение "Гостевая книга на 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-представление:
Открываем файл и добавляем в него, введенную пользователем информацию: /* создаем файл с именем вида "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 border=0> <form action=addrec.php method=post> <input type=hidden name=action value=post> <tr> <td 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> <? }?>После окончания работы с кодом, размещенным в файле addrec.php, форма для добавления сообщений должна иметь следующий вид:
Добавление записи
Листинг файла index.php, используемого для отображения сообщений: <HTML> <HEAD> <TITLE>Гостевая книга</TITLE> </HEAD> <BODY> <? /* открываем директорию и считываем из нее файлы */ $dir_rec = dir ( "records" ); $i = 0; while ( $entry = $dir_rec -> read ()) { if ( substr ( $entry,0,3 ) =="rec" ) { $names [ $i ] = substr ( $entry,4 ); $i ++ ; } } $dir_rec -> close (); // закрываем директорию @rsort ( $names ); // сортируем файлы /* определяем очередность сообщений и выводим их */ $count = $i; $count1 = $count; if ( empty ( $start )) { $start = 0 ; } $start = intval ( $start ); if ( $start < 0 ) { $start = 0 ; } print "<center>"; if ( $count > $start + 10 ) $count = $start + 10; if ( $start!= 0 ) { print "<A href=index.php?start=". ( $start - 10 ). ">Предыдущие</A>" ; } print "<a href=addrec.php>Добавить запись</A>"; if ( $count1 > $start + 10 ) { print "<A href=index.php?start=". ( $start + 10 ). ">Следующие</A> \n" ; } print "</center><br>" ; /* выводим все сообщения в цикле */ for ( $i = $start; $i < $count; $i ++ ) { $entry = $names [ $i ]; $data = file ( "records/rec.". $entry ); $date = $entry; $name = trim ( $data [0] ); $city = trim ( $data [1] ); $email = trim ( $data [2] ); $url = trim ( $data [3] ); $msg = trim ( $data [4] ); /* поле, в которое администратор может добавить ответ */ $answer = trim ( $data [5] ); print "<table border=0 cellspacing=0 cellpadding=2 width=100%> <tr bgcolor=#F0F0F0><td>&nbsр;" ; print "<b> $name </b>&nbsр;"; if (!empty ( $city )) print " $city &nbsр"; if (!empty ( $email )) print "<a href=mailto: $email ><i> $email </i></A>\n"; if (!empty ( $url )) print "<a href= $url > $url </a>" ; print "</td><td align=right>". date ( "<b>d-m-Y</b> H - i", $date ). " </td></tr>\n<tr><td colspan=2>\n" ; print "<P>". $msg. "</P>\n"; if (!empty ( $answer )) // если администратор что-то ответил { print "<P><font color=#1E90FF>admin:&nbsр $answer </font></P>\n" ; } print "</td></tr></table>\n<br><br>\n" ; } print "<center>"; if ( $start!= 0 ) { print "<A href=index.php?start=". ( $start - 10 ). ">Предыдущие</A>" ; } print "<a href=addrec.php>Добавить запись</A>"; if ( $count1 > $start + 10 ) { print "<A href=index.php?start=". ( $start + 10 ). ">Следующие</A> \n" ; } print "</center>" ;?> </BODY> </HTML>Гостевая книга написана.
Если ввести сообщение, то оно отобразится следующим образом: Предыдущие Добавить запись Следующие
Предыдущие Добавить запись Следующие При неправильном заполнении полей гостевой книги отобразится сообщение об ошибке: Добавление записи Во время добавления записи произошли следующие ошибки: 1. Вы не ввели сообщение 2. Вы не ввели имя 3. Неверно введен е-mail. Введите e-mail в виде: softtime@softtime.ru
|
||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2020-11-28; просмотров: 119; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.66.206 (0.024 с.) |