Написать письмо авторам  
 

УЧЕБНИК PHP


справочник функций <Оnline>

Об учебнике

Обновление

Оглавление

  1. Основы PHP
  2. Операторы языка PHP
  3. Строковые функции

Продолжение следует




Строковые функции PHP

Предыдущая Следующая

Функция htmlspecialchars

htmlspecialchars() 

Вообще говоря, эта функция относится к функциям преобразования символов, о которых мы тоже будем говорить в этой главе. Эту функцию мы вынесли в самое начало из-за того, что она делает одну простую, но важную вещь – производит преобразование спецсимволов в их HTML эквиваленты. Попросту говоря, эта функция гарантирует, что если Вы вдруг вздумаете написать в гостевой книге или на форуме какой-то код (php, javascript и т.д.) он отобразиться совершенно нормально, но выполняться не будет! Т.е. функцию надо применять, если нужно вывести в броузере какой-то код. Кроме того, эта функция избавляет Вас от всяких кретинов, которым нечем заняться кроме как писать в Ваших гостевых книгах (и любых формах ввода) какие либо скрипты. Ну а теперь, собственно, о функции.

Синтаксис:

string htmlspecialchars(string str [, int quote_style [, string charset]]);

Первый аргумент – строка, в которой надо выполнить преобразование. В качестве второго необязательного аргумента принимается одна из двух констант: ENT_QUOTES или ENT_QUOTES. Первая константа передается если надо транслировать кавычки, а вторая, если этого делать не надо. Третий необязательный аргумент принимает строку, представляющую набор символов, используемых в преобразовании (по умолчанию ISO-8859-1).

К примеру, если Вы обрабатываете какое-то сообщение $msg формы, то обработка его функцией htmlspecialchars() возможна следующим образом:

$msg = htmlspecialchars($msg);

Как видите, все просто.

А для того, чтобы у Вас все это хорошенько запомнилось приведем такой поучительный примерчик, который, надеемся, заставит Вас не забывать об этой функции.

Давайте напишем примитивный php скриптик, который будет отображать данные, вводимые в форме.

<?
   $action = $HTTP_POST_VARS["action"];
   if ( empty($action) )
   {
   ?>
      <HTML>
      <HEAD>
      <TITLE>Примерчик</TITLE>
      </HEAD>
      <BODY>
      <center>
      <table width=1 border=0>
      <form action=test1.php method=post>
         <input type=hidden name=action value=post>
         <tr><td colspan=2>Сообщение<br><textarea cols=50 rows=8 name=msg>
         <? echo $msg; ?>
         </textarea></td></tr>
         <tr><td colspan=2><input type=submit value='Добавить'></td></tr>
      </form>
      </table>
      </center>
      </BODY>
      </HTML>
   <?
   }
?>

Ничего сложного, просто форма для ввода сообщения. Выводится и обрабатывается введенное сообщение файлом, указанным action’е формы (test1.php). Код, написанный в этом файле тоже прост:

<?
   $msg = substr($HTTP_POST_VARS["msg"],0,1024);
   $msg = htmlspecialchars($msg);
   print "<P>".$msg."</P>\n";
?>

Вроде как все понятно. Выделяем из переменной $HTTP_POST_VARS сообщение (о функции substr() смотрите чуть ниже), обрабатываем это сообщение функцией htmlspecialchars() и выводим.

А теперь давайте немного пошутим, и введем в форму для вода сообщения вместо безобидного текста вот такой javascript-код (пока тоже безобидный):

<Script Language="JavaScript">
   alert("Приветик!"); // функция вывода в JavaScript
</Script>

Т.е. наша форма примет следующий вид:

В случае, если при обработке сообщения мы использовали эту чудо-функцию, ничего страшного не произойдет и мы просто увидим текст, который набрали:


<Script Language="JavaScript">alert("Приветик!");</Script>

А вот если, мы не обработали сообщение функцией htmlspecialchars() (закомментарьте строку $msg = htmlspecialchars($msg); в test1.php), то мы увидим уже не текст скрипта, а результат его выполнения:

Как понимаете, "приветик" может быть совсем не таким безобидным.

Предыдущая Следующая

 
  Наверх