Функция 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.// <a href='url'>Test</a>
4.echo $new;
5.?>
Заметьте что в браузере выдаст:
1.
2.<a href=\'url\'>Test</a>
3.
А если вы посмотрите HTML-код страницы, то увидите:
1.
2.<a href='url'>Test</a>
3.
Если без использования функции выведете обычную ссылку. Можете попробовать.
Еще один важный момент функция работает с:
& (амперсанд) преобразуется в \'&\'
« (двойная кавычка) преобразуется в \'"\' в режиме ENT_NOQUOTES is not set.
\' (одиночная кавычка) преобразуется в \''\' только в режиме ENT_QUOTES.
< (знак \"меньше чем\" преобразуется в \'<\'
> (знак \"больше чем\" преобразуется в \'>\'
и что числа фильтрует тоже??? PS вопрос к автору
Чтобы в гет типа user.php?id=1 не было такого
user.php?id=lal
там только ид показываются в числах. Вот и нужна фильтрация
Mark, блин ну я тебя спрашивал??? ты тоже хотел как сказано выше выипнутся???
все ясно с тобой! на будущее...не знаешь о чем пишешь, не пиши лучше!