Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запись в MySQL JavaScript-кода с сохранением его работоспособности
 
 автор: NickCo   (13.03.2006 в 10:31)   письмо автору
 
 

Проблема вот в чем, мне необходимо записать в БД строку, содержащую код на javascript, при попытке записать его как есть, выдается ошибка, после обработки htmlspecialchars он выводится на странице, не как скрипт.Подскажите, пожалуйста, существует ли в пхп хункция, обртная функции htmlspecialchars. Я пытался использовать функцию htmlspecialchars_decode, которая занесена в список функций PHPXEditor 3.3, но она не опознается PHP4.4.0

   
 
 автор: Loki   (13.03.2006 в 10:39)   письмо автору
 
   для: NickCo   (13.03.2006 в 10:31)
 

можно обработать mysql_escape_string, а перед выводом: stripslashes

   
 
 автор: Trianon   (13.03.2006 в 10:42)   письмо автору
 
   для: Loki   (13.03.2006 в 10:39)
 

stripslashes перед выводом не нужен.
MySql сделает stripslashes сам

   
 
 автор: NickCo   (13.03.2006 в 10:58)   письмо автору
 
   для: Trianon   (13.03.2006 в 10:42)
 

Большое спасибо, все заработало, но stripslashes все-каки нужен, без него результат не тот.

   
 
 автор: Trianon   (13.03.2006 в 11:10)   письмо автору
 
   для: NickCo   (13.03.2006 в 10:58)
 

Может быть и нужен, но не потому, что Вы извлекли поле из БД, а с тем, допустим, чтобы вписать его в значение атрибута value тега input. Или чтобы сформировать из него строковый литерал javascript'a.

Чтобы просто выплюнуть хранящийся в MYSQL базе JS-код в HTML-поток вызов stripslashes() мало того , что не нужен, он даже вреден. Он уберет Вам все экранировки из кода, после чего тот станет неработоспособным.

   
 
 автор: Loki   (13.03.2006 в 12:56)   письмо автору
 
   для: Trianon   (13.03.2006 в 11:10)
 

Мне кажется что вы ошибаетесь: при экранировании, экранирующие слеши экранируются так же, так что после stripslashes убираются не все слеши, а только те, которые не дублируются. В общем, без этого, как уже упоминалось, работать не будет (Но я вполне допускаю, что эту работу на себя может взять сервер, как и в случае с магическими кавычками.)

   
 
 автор: Trianon   (13.03.2006 в 14:13)   письмо автору
 
   для: Loki   (13.03.2006 в 12:56)
 

Я спорил совершенно не с этим. Может быть имеет смысл рассмотреть пример?
Функция сервера, которая в этом случае называется magic_quotes_runtime, к счастью обычно отключена.

   
 
 автор: Loki   (13.03.2006 в 14:35)   письмо автору
 
   для: Trianon   (13.03.2006 в 14:13)
 

в сомнениях полез на сервер... а magic_quotes оказывается включены...
Значит вы правы. я ошибся.

   
 
 автор: Artemy   (13.03.2006 в 10:39)   письмо автору
 
   для: 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()

   
 
 автор: NickCo   (13.03.2006 в 11:00)   письмо автору
 
   для: Artemy   (13.03.2006 в 10:39)
 

Насколько я понял, эта ф-ция просто вставляет слеши. Она тоже работает , Спасибо.

   
 
 автор: Trianon   (13.03.2006 в 10:45)   письмо автору
 
   для: NickCo   (13.03.2006 в 10:31)
 

Возможно, Вам поможет эта тема. В ней я попытался подробно описать, когда, как и что следует экранировать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования