Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#38 used as offset, casting to integer (38) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Замена HTML кода в переменной
ТвойWeb » WebMaster класс » PHP/Perl » Замена HTML кода в переменной

Страниц (1): [1]
 

1. 4c005 - 06 Августа, 2005 - 06:58:59 - перейти к сообщению
Вопрос такой: Есть форма в которой юзер вводит текст (злобный юзер текст с HTML тэгами), как заменить введенные им тэги на безопасные символы? Перерыл несколько исходников но так и не понял. Однако

Решил что вот этот вариант работает:
CODE:
$message[0]=htmlspecialchars($message[0]);
Нет... Нахмурился

Попробовал менять только некоторые символы:
CODE:
$message[0]=str_replace("<","(",$message[0]);
$message[0]=str_replace(">",")",$message[0]);
И так тоже ничего не получилось... Огорчение

Спасибо.
2. Ray Wen - 06 Августа, 2005 - 10:53:38 - перейти к сообщению
CODE:
function code($val) {
$val = str_replace( " " , ' ' , $val );
$val = str_replace( "&" , '&amp;' , $val );
$val = str_replace( "<!--" , '<!--' , $val );
$val = str_replace( "-->" , '-->' , $val );
$val = preg_replace( "/<script/i" , '<script' , $val );
$val = str_replace( ">" , '>' , $val );
$val = str_replace( "<" , '<' , $val );
$val = str_replace( "\"" , '"' , $val );
$val = preg_replace( "/\\\$/" , '$' , $val );
$val = preg_replace( "/\r/" , '' , $val );
return $val;
}
Примерно так на этом форуме.
3. Ray Wen - 06 Августа, 2005 - 10:55:59 - перейти к сообщению
Вот блин... не хочет рисовать как есть...
[pre]function code($val) {
$val = str_replace( " " , ' ' , $val );
$val = str_replace( "&" , '&' , $val );
$val = str_replace( "<!--" , '<!--' , $val );
$val = str_replace( "-->" , '-->' , $val );
$val = preg_replace( "/<script/i" , '<script' , $val );
$val = str_replace( ">" , '>' , $val );
$val = str_replace( "<" , '<' , $val );
$val = str_replace( "\"" , '"' , $val );
$val = preg_replace( "/\\\$/" , '$' , $val );
$val = preg_replace( "/\r/" , '' , $val );
return $val;
}[/pre]

Ну хоть частично... в исходном коде должно быть все нормально...
4. 4c005 - 06 Августа, 2005 - 13:32:03 - перейти к сообщению
Ха-ха Заработало!!! Спасибо!Радость

Сначала не получалось, а потом поковырявшись в коде выяснил, что писал этот кусок не в том месте. Не понял
5. TvoyWeb - 06 Августа, 2005 - 18:29:59 - перейти к сообщению
Ray Wen
Вообще htmlspecialchars самое то что нужно. А код из форума... это честно говоря г.... Просто не переделываю его потому что придется все файлы пересобачить.
6. Ray Wen - 07 Августа, 2005 - 01:50:02 - перейти к сообщению
TvoyWeb
Хм... а в какой версии php это появилось и что именно это сделает? Все тоже самое или что-то лишнее или наоборот не доделает?
7. 4c005 - 07 Августа, 2005 - 03:44:42 - перейти к сообщению
TvoyWeb
Ну вот и я решил, что это круто... но не заработало у меня... На сервере PHP 4.1. На локальной машине Денвер...

Если знаешь как правильно написать, подскажи жалста...
8. FROZEN - 07 Августа, 2005 - 11:48:26 - перейти к сообщению
CODE:
$message[0]=htmlspecialchars(stripslashes($message[0]));


Вроде так, просто уже не помню (хорошо отдохнул).
9. TvoyWeb - 07 Августа, 2005 - 16:52:42 - перейти к сообщению
Выдержка из мануала PHP
CODE:
htmlspecialchars
(PHP 3, PHP 4 , PHP 5)

htmlspecialchars -- Преобразует специальные символы в HTML сущности
Описание
string htmlspecialchars ( string string [, int quote_style [, string charset]])


В HTML некоторые символы имеют специальное значение и для сохранения своего значения должны быть преобразованы в HTML сущности. Эта функция возвращает строку, над которой проведены некоторые из таких преобразований. Этих преобразований достаточно для большинства задач веб-программирования. Если вам нужно преобразовать все возможные сущности, используйте htmlentities().

Эта функция полезна при отображении данных, введенных пользователем, которые могут содержать нежелательные HTML тэги, например в форуме или гостевой книге. Необязательный второй аргумент quote_style определяет режим обработки одиночных и двойных кавычек. В режиме по умолчанию, ENT_COMPAT, преобразуются двойные кавычки, одиночные остаются без изменений. В режиме ENT_QUOTES преобразуются и двойные, и одиночные кавычки. а в режиме ENT_NOQUOTES и двойные, и одиночные кавычки остаются без изменений.

Производятся следующие преобразования:


'&' (амперсанд) преобразуется в '&'

'"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.

''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.

'<' (знак "меньше чем") преобразуется в '&­lt;'

'>' (знак "больше чем") преобразуется в '&­gt;'

Пример 1. Пример использования htmlspecialchars()

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &­lt;a href='test'&­gt;Test&­lt;/a&­gt;
?>


Как видно из мануала эта функция поддерживается начиная с третьей версии пхп. Есть еще функция
CODE:
htmlentities
(PHP 3, PHP 4 , PHP 5)

htmlentities -- Преобразует символы в соответствующие HTML сущности.
Описание
string htmlentities ( string string [, int quote_style [, string charset]])


Эта функция идентична htmlspecialchars() за исключением того, что htmlentities() преобразует все символы в соответствющие HTML сущности (для тех символов, для которых HTML сущности существуют).
10. 4c005 - 08 Августа, 2005 - 01:13:32 - перейти к сообщению
Исчерпывающще. Все написал, все работает, очередное спасибо! Радость

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0453]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33