{% else-1 %}
Samurai * 0.28
(5 фев 2014, 18:54) (0/0) [0]
The_Red, А смысл их фильтровать?
Samurai * 0.28
(5 фев 2014, 18:29) (1/0) [1]
Функция htmlspecialchars - функция выполняют очень важную работу, она преобразует специальные символы в HTML-сущности.
Что вообще такое HTML-сущности? Это специальные символы типа: < > » \' и т. д.

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

Синтаксис функции:

1.
2.htmlspecialchars ( входная строка, [flags - название константы ] )
3.

Константы бывают:

ENT_COMPAT - Преобразует двойные кавычки, одинарные кавычки не изменяются.

ENT_QUOTES - Преобразует как двойные, так и одинарные кавычки.

ENT_NOQUOTES - Оставляет без изменения как двойные, так и одинарные кавычки.

ENT_IGNORE - Молча отбрасывает некорректные кодовые последовательности вместо возврата пустой строки. Данная возможность предоставляется в целях обратной совместимости, избегайте ее использования, т.к. она может внести уязвимости в ваш код.

ENT_SUBSTITUTE - Заменяет некорреткные кодовые последовательности символом замены Юникода U+FFFD в случае использования UTF-8 и &#FFFD; при использовании другой кодировки, вместо возврата пустой строки.

ENT_DISALLOWED - Заменяет кодовые последовательности, несоответствующие указанному типу документа символом замены Юникода U+FFFD в случае использования UTF-8 и &#FFFD; при использовании другой кодировки.

ENT_HTML401 - Обработка кода в соответствии с HTML 4.01.

ENT_XML1 - Обработка кода в соответствии с XML 1.

ENT_XHTML - Обработка кода в соответствии с XHTML.

ENT_HTML5 - Обработка кода в соответствии с HTML 5.



Важный момент, если параметр не указать, то по-умолчанию будет ENT_COMPAT

ENT_IGNORE — работает начиная с php 5.3

ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML и ENT_HTML5 — работают начиная с php 5.4

В основном на всех серверах стоит php 5.2 ил 5.3 , но то что введено позже Вам врядли понадобятся.

Рассмотрим функцию на примере:

1.

<?php
2.$new = htmlspecialchars(\"<a href=\'url\'>Test</a>\", ENT_QUOTES);
3.// &lt;a href=&#039;url&#039;&gt;Test&lt;/a&gt;
4.echo $new;
5.?>




Заметьте что в браузере выдаст:

1.
2.<a href=\'url\'>Test</a>
3.

А если вы посмотрите HTML-код страницы, то увидите:

1.
2.&lt;a href=&#039;url&#039;&gt;Test&lt;/a&gt;
3.

Если без использования функции выведете обычную ссылку. Можете попробовать.

Еще один важный момент функция работает с:
& (амперсанд) преобразуется в \'&amp;\'
« (двойная кавычка) преобразуется в \'&quot;\' в режиме ENT_NOQUOTES is not set.
\' (одиночная кавычка) преобразуется в \'&#039;\' только в режиме ENT_QUOTES.
< (знак \"меньше чем\"* преобразуется в \'&lt;\'
> (знак \"больше чем\"* преобразуется в \'&gt;\'
  • 1 из 1