ДОБРО ПОЖАЛОВАТЬ НА САЙТ PHPLIST Всё о PHP |
Написать письмо авторам |
Функция 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), то мы увидим уже не текст скрипта, а результат его выполнения: Как понимаете, "приветик" может быть совсем не таким безобидным.
|
Наверх |