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

Форум PHP

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

 

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

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

тема: Обратный слеш добавляется к символам-разделителям
 
 автор: blackcement   (22.02.2009 в 19:14)   письмо автору
 
 

Есть форма с текстовым полем и кнопкой, по нажатию на которую текст (а именно код HTML) в текстовом поле сохраняется в файл 1.html на сервере. Всё бы ничего, да только после сохранения в документе 1.html перед символами раздельтелями " \ ' добавляется ещё один обратный слеш. Приведу примеры:
_________________________________
Текстовое поле
<p>\<p> 


1.html
<p>\\<p> 

_________________________________
Текстовое поле
<p>123\456<p> 


1.html
<p>123\\456<p>

_________________________________
Текстовое поле
<p>"привет!"<p> 


1.html
<p>\"привет!\"<p> 

_________________________________

Как с этой напастью бороться? Выручайте Люди Добрые...

  Ответить  
 
 автор: Trianon   (22.02.2009 в 20:34)   письмо автору
 
   для: blackcement   (22.02.2009 в 19:14)
 

это происходит не после сохранения, а раньше.

как правило, из-за включенного magic_quotes_gpc в php.ini
выход - выключить.

  Ответить  
 
 автор: blackcement   (22.02.2009 в 20:58)   письмо автору
 
   для: Trianon   (22.02.2009 в 20:34)
 

А где это выключается? На моём серваке или ещё дописать что-нибудь надо в пхп код?
Другой выход из этой ситуации есть?

  Ответить  
 
 автор: Trianon   (22.02.2009 в 21:08)   письмо автору
 
   для: blackcement   (22.02.2009 в 20:58)
 

Выключается, как я написал уже, в php.ini .
если нет доступа к php.ini, то допишите строку в .htaccess
php_flag magic_quotes_gpc Off

в php код при этом ничего дописывать не нужно.

  Ответить  
 
 автор: blackcement   (22.02.2009 в 21:16)   письмо автору
 
   для: Trianon   (22.02.2009 в 21:08)
 

.htaccess тот который лежит в папке со скриптом сохранения?

  Ответить  
 
 автор: Trianon   (22.02.2009 в 21:22)   письмо автору
 
   для: blackcement   (22.02.2009 в 21:16)
 

да.
Хотя можно и выше.
Я бы добавил в тот, который в корне документов.

  Ответить  
 
 автор: blackcement   (23.02.2009 в 12:11)   письмо автору
 
   для: Trianon   (22.02.2009 в 21:22)
 

Создал файл:

.htaccess
php_flag magic_quotes_gpc Off


Запихал его в каталог с ПХП скриптом сохранения, всё работает!
Trianon, выражаю огромную благодарность! Спасибо!

  Ответить  
 
 автор: Slo_Nik   (23.02.2009 в 12:47)   письмо автору
 
   для: Trianon   (22.02.2009 в 21:08)
 

ну а если без отключения, просто применить stripslashes()?

  Ответить  
 
 автор: Trianon   (23.02.2009 в 13:05)   письмо автору
 
   для: Slo_Nik   (23.02.2009 в 12:47)
 

зачем?
Если можно сделать по-человечески?

  Ответить  
 
 автор: Slo_Nik   (23.02.2009 в 13:49)   письмо автору
 
   для: Trianon   (23.02.2009 в 13:05)
 

а если не разрешено использования файлов .htaccess?
и почему это не по человечески?

  Ответить  
 
 автор: Trianon   (23.02.2009 в 14:02)   письмо автору
 
   для: Slo_Nik   (23.02.2009 в 13:49)
 

>а если не разрешено использования файлов .htaccess?

достаточно редкая ситуация.
тогда помимо stripslashes() нужно использовать get_magic_quotes_gpc(), и array_map()/array_walk_recursive
ко всем $_GET, $_POST, $_COOKIE и $_REQUEST

>и почему это не по человечески?

потому что сами magic quotes - это ошибка.
И чем устранять последствия, логичнее устранить ошибку.

  Ответить  
 
 автор: Slo_Nik   (23.02.2009 в 14:18)   письмо автору
 
   для: Trianon   (23.02.2009 в 14:02)
 

>достаточно редкая ситуация.
вот на такую ситуацию и нарвался на бесплатном.
по поводу остального....
сваял функцию, выложу позже, что бы люди глянули, может не заплюют её, а может.... :)

  Ответить  
 
 автор: Loki   (23.02.2009 в 17:40)   письмо автору
 
   для: Slo_Nik   (23.02.2009 в 14:18)
 

Все уже сваяно до Вас:)
<?
function stripslashes_deep($value)
{
    if( 
is_array($value) )
    {
        
$value array_map('stripslashes_deep'$value);
    }
    elseif ( !empty(
$value) && is_string($value) )
    {
        
$value stripslashes($value);
    }
    return 
$value;
}

if (
get_magic_quotes_gpc())
{
    
$_POST stripslashes_deep($_POST);
    
$_GET stripslashes_deep($_GET);
    
$_COOKIE stripslashes_deep($_COOKIE);
    
$_REQUEST stripslashes_deep($_REQUEST);
}

  Ответить  
 
 автор: blackcement   (14.04.2009 в 10:50)   письмо автору
 
   для: Loki   (23.02.2009 в 17:40)
 

Круто! Но не понятно... Мой хостинг ПХП поддерживает, неужели Вы думаете, что .htaccess файл создать не смогу?

  Ответить  
 
 автор: Николай2357   (14.04.2009 в 11:55)   письмо автору
 
   для: blackcement   (14.04.2009 в 10:50)
 

Если PHP подключен не как модуль Аппача, то создать то вы сможете, но попытка установить флаги неизбежно вызовет 500-ю ошибку. Но в таком случае обычно есть локальный ini, что в принципе хоть какая то, но замена.

  Ответить  
Rambler's Top100
вверх

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