Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > get_magic_quotes_gpc()


Автор: m1kle 23.12.2007, 15:49
Код

if (get_magic_quotes_gpc()) 
$nobot=stripslashes($nobot); 
$tim=stripslashes($tim); 
$o=stripslashes($o); 
$d=stripslashes($d);

Что означает такая запись и нужна ли она вообще?

M
skyboy
пользуемся кнопкой "код"

Автор: vasac 23.12.2007, 16:00
Сходите в документацию на предмет функции get_magic_quotes_gpc. Разберитесь что такое magic_quotes.
Сходите в документацию на предмет функции stripslashes.
Попытайтесь подумать, что делают эти 5 строчек и нужны ли они вообще.
Спасибо.

Автор: krundetz 24.12.2007, 12:05
Во первых правильно будет вот так:
Код

if (get_magic_quotes_gpc())
{ 
    $nobot=stripslashes($nobot); 
    $tim=stripslashes($tim); 
    $o=stripslashes($o); 
    $d=stripslashes($d);
}

а то код теряет свой смысл.
Делает же он следующее, при помощи функции get_magic_quotes_gpc() проверяет установлены ли волшебные кавычки и если да то при помощи функции stripslashes() раскавычивает её.
А вобще vasac прав прежде чем задавать вопрос попробуйте подумать сами! Отметьте пожалуйста тему как решенную. Спасибо за внимание.

Автор: MoLeX 24.12.2007, 12:43
меня вот это поразило:

Цитата(m1kle @  23.12.2007,  15:49 Найти цитируемый пост)

...stripslashes(...); 
...stripslashes(...);
...stripslashes(...);
...stripslashes(...);


зачем, просвятите не просвященного smile 

Автор: krundetz 24.12.2007, 13:17
Цитата(MoLeX @ 24.12.2007,  12:43)
меня вот это поразило:

Цитата(m1kle @  23.12.2007,  15:49 Найти цитируемый пост)

...stripslashes(...); 
...stripslashes(...);
...stripslashes(...);
...stripslashes(...);


зачем, просвятите не просвященного smile

Видимо когда данные приходят они проходят дальнейшую обработку в соответствие с какой-то логикой и экранирование может нарушить её. Чтобы логика не нарушалась устраняют возможную её причину -  экранирование.

Автор: SelenIT 24.12.2007, 13:42
у меня какое-то странное дежавю... первую половину темы я точно видел вчера, но начиная с 3-го поста пошло какое-то странное ветвление...

Цитата(MoLeX @  24.12.2007,  12:43 Найти цитируемый пост)
меня вот это поразило:

Имеется в виду повторение "разслешивания" для каждой переменной отдельно вместо цикла по $_GET/$_POST? Да, тут, похоже, кроме прочего еще register_globals=On предполагаются...

Добавлено через 1 минуту и 32 секунды
Ах да, ну и классическую ссылку по вопросу чуть не забыл - http://phpfaq.ru/slashes#off.

Автор: InfMag 24.12.2007, 17:04
m1kle, это делается для безопастности, обрабатываются $_GET $_POST $_COOKIE запросы, вобщем для того, чтобы сайты не взламывали, а если ты сам такой крутой и прохаваный и можешь ударить себя левой пяткой в грудь по знаниям безопастности веб-кодинга, то вот: Пишешь код в начале страницы:
Код

<?php
if (get_magic_quotes_gpc() == 1)
{
   while (list($ind, $val) = each($_POST)) $_POST[$ind] = stripslashes($val);
   while (list($ind, $val) = each($_GET)) $_GET[$ind] = stripslashes($val);
   while (list($ind, $val) = each($_COOKIE)) $_COOKIE[$ind] = stripslashes($val);
}
?>

Если этого не писать, то отправив пост запрос с таким текстом например как
Код

Превед "кросавчеги"
Превед 'кросавчеги'

То страница получающая этот пост запрос будет его видеть уже таким
Код

Превед \"кросавчеги\"
Превед \'кросавчеги\'

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)