Удаление HTML - тегов и обратных слешей 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Удаление HTML - тегов и обратных слешей



Как уже говорилось, вводимый пользователем текст необходимо обработать функциями удаления 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-представление:

if ( empty ( $error )) // если ошибок нет, обрабатываем сообщение { $msg = nl2br ( $msg ); $msg = str_replace ( "[u]","<u>", $msg ); $msg = str_replace ( "[U]","<u>", $msg ); $msg = str_replace ( "[i]","<i>", $msg ); $msg = str_replace ( "[I]","<i>", $msg ); $msg = str_replace ( "[b]","<B>", $msg ); $msg = str_replace ( "[B]","<B>", $msg ); $msg = str_replace ( "[sub]","<SUB>", $msg ); $msg = str_replace ( "[SUB]","<SUB>", $msg ); $msg = str_replace ( "[sup]","<SUP>", $msg ); $msg = str_replace ( "[SUP]","<SUP>", $msg );     $msg = str_replace ( "[/u]","</u>", $msg ); $msg = str_replace ( "[/U]","</u>", $msg ); $msg = str_replace ( "[/i]","</i>", $msg ); $msg = str_replace ( "[/I]","</i>", $msg ); $msg = str_replace ( "[/b]","</B>", $msg ); $msg = str_replace ( "[/B]","</B>", $msg ); $msg = str_replace ( "[/SUB]","</SUB>", $msg ); $msg = str_replace ( "[/sub]","</SUB>", $msg ); $msg = str_replace ( "[/SUP]","</SUP>", $msg ); $msg = str_replace ( "[/sup]","</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 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, форма для добавления сообщений должна иметь следующий вид:

Добавление записи

Имя:*  
Город:  
E-Mail:  
URL:  

Сообщение:*

 

* - поля, обязательные для заполнения

 

Листинг файла 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>

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

 

Если ввести сообщение, то оно отобразится следующим образом:

Предыдущие Добавить запись Следующие

 

  авторы  Нижний Новгород   http://www.softtime.ru 20-03-04 15 - 00

Мы рады приветствовать Вас!

admin:

 

Предыдущие Добавить запись Следующие

При неправильном заполнении полей гостевой книги отобразится сообщение об ошибке:

Добавление записи

Во время добавления записи произошли следующие ошибки:

1. Вы не ввели сообщение

2. Вы не ввели имя

3. Неверно введен е-mail. Введите e-mail в виде: softtime@softtime.ru

Имя:*  
Город:  
E-Mail:  
URL:  

Сообщение:*

 

* - поля, обязательные для заполнения

 



Поделиться:


Последнее изменение этой страницы: 2020-11-28; просмотров: 119; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.66.206 (0.024 с.)