|
|
|
| Как-то давненько читал статью, где описывалось применение функции, которая меняет так называемые "опасные" символы (%,$,@,&, и т.д.), введеные пользователем в форме на странице, - на спецсимволы (те же символы, но под специальным кодом). Вопросы:
1. В каких случаях целесообразно применять подобную функцию?
2. Нужно ли применять эту функцию для строк-аргументов функции "mail"?
3. Какой синтаксис этой функции? | |
|
|
|
|
|
|
|
для: Sanych
(28.07.2004 в 14:16)
| | Везде где пользователь может ввести текст, исключая случаи, когда пользователем может быть только администратор. Тогда применение спецсимволов в умелых руках может быть полезною
Htmlspecialchars() - преобразует спецсимолы в HTML сущности
|
http://www.softtime.ru/dic/id_dic=28&id_group=11 | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(28.07.2004 в 14:41)
| | Ну и еще немного по поводу удаления тегов и обратных слешей и по синтаксису функций, с помощью которых это делается.
К примеру, если переменная $name содержит текст с именем пользователя, то обработка этого текста может выглядеть следующим образом:
<?php
$name = htmlspecialchars(stripslashes($_POST['name']));
?>
|
Применение функции htmlspecialchars гарантирует, что любой введенный пользователем код (php, javascript и т.д.) будет отображен, но выполняться не будет. Функция имеет следующий синтаксис:
string htmlspecialchars (string str [, int quote_style [, string
charset]])
|
Через первый обязательный параметр str, функции передается обрабатываемый текст, который возвращается после преобразования как результат работы.
Второй необязательный параметр quote_style задаёт режим обработки одинарных и двойных кавычек. По умолчанию, данный параметр соответствует константе ENT_COMPAT, в данном режиме двойные кавычки заменяются символом """, при этом одиночные остаются без изменений. Кроме этого параметр может принимать два других значения: ENT_QUOTES и ENT_NOQUOTES. В первом случае, помимо двойных, кавычек преобразованию подвергаются так же одинарные кавычки, которые заменяются символом "'". Значение параметра ENT_NOQUOTES задаёт режим, в котором не один из видов кавычек не подвергается преобразованию.
Последний параметр charset определяет кодировку, например "cp1251" или "KOI8-R".
Функция stripslashes предназначена для удаления обратных слешей и имеет следующий синтаксис:
string stripslashes (string str)
|
Функция принимает единственный параметр str, с обрабатываемой строкой. Результатом работы функции является строка str в которой удаляются экранирующие бэкслэши (\' преобразуется в ', двойные бэкслэши (\\) преобразуется в одиночные(\) и т.д.). | |
|
|
|
|
|
|
|
для: Sanych
(28.07.2004 в 14:16)
| | Я еще немного добавлю.
Действительно, проверке корректности данных, вводимых посетителем, необходимо уделять большое внимание, поскольку необработанные ошибки, возникающие при неправильном вводе данных, приводят к серьёзным ошибкам в работе скрипта. Допустим, в HTML-форме для отправки пользователем письма, посетителю необходимо ввести адрес электронной почты. В этом случае, для корректной работы Web-приложения нужно удостоверится в следующем:
- Проверить, тот факт что поле, в которое заносится электронный адрес непустое;
- Проверить соответствие введенного адреса с помощью регулярного выражения.
Кроме случайных ошибок посетителя (которые мы рассмотрели выше), необходимо также исключить ситуации, в которых возможно злонамеренное введение некорректных данных, к примеру, различных скриптов. Для этого вводимый текст необходимо обработать функциями удаления HTML-тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). Т. о. минимальный набор действий, необходимый для проверки корректности данных, вводимых пользователем, включает следующие этапы:
- проверка заполнения посетителем обязательных для ввода полей;
- проверка допустимости вводимых данных (как правило, осуществляется при помощи регулярных выражений);
- обработка введенного текста функцией htmlspecialchars для удаления HTML-тегов;
- обработка введенного текста функцией stripslashes для удаления обратных слешей. | |
|
|
|