Суббота, 19.07.2025, 12:08 Приветствую Вас Гость

On-line: Книги, учебники, статьи

Главная | Регистрация | Вход | RSS

Функция htmlspecialchars

htmlspecialchars() 



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

Синтаксис:
string htmlspecialchars(string str [, int quote_style [, string charset]]);

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

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

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

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

Давайте напишем примитивный php скриптик, который будет отображать данные, вводимые в форме.
  $action = $_POST["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>
 
  </textarea></td></tr>
  <tr><td colspan=2><input type=submit value='Добавить'></td></tr>
  </form>
  </table>
  </center>
  </BODY>
  </HTML>
    }
?>

Ничего сложного, просто форма для ввода сообщения. Выводится и обрабатывается введенное сообщение файлом, указанным action’е формы (test1.php). Код, написанный в этом файле тоже прост:
  $msg = substr($_POST["msg"],0,1024);
  $msg = htmlspecialchars($msg);
  print "

".$msg."

\n";
?>

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

А теперь давайте немного пошутим, и введем в форму для вода сообщения вместо безобидного текста вот такой javascript-код (пока тоже безобидный):
<Script Language="JavaScript">
  alert("Приветик!"); // функция вывода в JavaScript
</Script>

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

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


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

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

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











Вход на сайт
Поиск
Календарь
«  Июль 2025  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Наш опрос
Как Вам удобнее??
Всего ответов: 341
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0