|
|
|
| Проблема вот в чем, мне необходимо записать в БД строку, содержащую код на javascript, при попытке записать его как есть, выдается ошибка, после обработки htmlspecialchars он выводится на странице, не как скрипт.Подскажите, пожалуйста, существует ли в пхп хункция, обртная функции htmlspecialchars. Я пытался использовать функцию htmlspecialchars_decode, которая занесена в список функций PHPXEditor 3.3, но она не опознается PHP4.4.0 | |
|
|
|
|
|
|
|
для: NickCo
(13.03.2006 в 10:31)
| | можно обработать mysql_escape_string, а перед выводом: stripslashes | |
|
|
|
|
|
|
|
для: Loki
(13.03.2006 в 10:39)
| | stripslashes перед выводом не нужен.
MySql сделает stripslashes сам | |
|
|
|
|
|
|
|
для: Trianon
(13.03.2006 в 10:42)
| | Большое спасибо, все заработало, но stripslashes все-каки нужен, без него результат не тот. | |
|
|
|
|
|
|
|
для: NickCo
(13.03.2006 в 10:58)
| | Может быть и нужен, но не потому, что Вы извлекли поле из БД, а с тем, допустим, чтобы вписать его в значение атрибута value тега input. Или чтобы сформировать из него строковый литерал javascript'a.
Чтобы просто выплюнуть хранящийся в MYSQL базе JS-код в HTML-поток вызов stripslashes() мало того , что не нужен, он даже вреден. Он уберет Вам все экранировки из кода, после чего тот станет неработоспособным. | |
|
|
|
|
|
|
|
для: Trianon
(13.03.2006 в 11:10)
| | Мне кажется что вы ошибаетесь: при экранировании, экранирующие слеши экранируются так же, так что после stripslashes убираются не все слеши, а только те, которые не дублируются. В общем, без этого, как уже упоминалось, работать не будет (Но я вполне допускаю, что эту работу на себя может взять сервер, как и в случае с магическими кавычками.) | |
|
|
|
|
|
|
|
для: Loki
(13.03.2006 в 12:56)
| | Я спорил совершенно не с этим. Может быть имеет смысл рассмотреть пример?
Функция сервера, которая в этом случае называется magic_quotes_runtime, к счастью обычно отключена. | |
|
|
|
|
|
|
|
для: Trianon
(13.03.2006 в 14:13)
| | в сомнениях полез на сервер... а magic_quotes оказывается включены...
Значит вы правы. я ошибся. | |
|
|
|
|
|
|
|
для: NickCo
(13.03.2006 в 10:31)
| | Вам нужно пропустить загружаемый текст через эту функцию,
<?PHP
//*****Слеши для SQL*****
function add_slashes($st)
{
if(get_magic_quotes_gpc()){
return $st;
}else{
return addslashes($st);
}
return $st;
}
?>
|
а потом при выводе JS кода удалять обратные слеши функцией stripslashes() | |
|
|
|
|
|
|
|
для: Artemy
(13.03.2006 в 10:39)
| | Насколько я понял, эта ф-ция просто вставляет слеши. Она тоже работает , Спасибо. | |
|
|
|
|
|
|
|
для: NickCo
(13.03.2006 в 10:31)
| | Возможно, Вам поможет эта тема. В ней я попытался подробно описать, когда, как и что следует экранировать. | |
|
|
|