PHP - решение для более коротких магических кавычек

Я пишу приложение, которое должно быть портативным. Я знаю, что должен отключить магические кавычки в конфигурации PHP, но в этом случае я нене знаю, смогу ли я сделать это, поэтому яиспользуя следующий код:

if (get_magic_quotes_gpc() === 1)
{
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);

    while (list($key, $val) = each($process))
    {
        foreach ($val as $k => $v)
        {
            unset($process[$key][$k]);

            if (is_array($v))
            {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            }

            else
            {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }

    unset($process);
}

Чтобы упростить процесс отключения магических кавычек, у меня возникла следующая идея:

if (get_magic_quotes_gpc() === 1)
{
    foreach (array('GET', 'POST', 'COOKIE', 'REQUEST') as $array)
    {
        ${'_'.$array} = unserialize(stripslashes(serialize(${'_'.$array})));
    }
}

Но я попытался, и я получил ошибку, яя не могу понять, например, с помощью:?name=O'Reilly

serialize($_GET); // a:1:{s:4:"name";s:9:"O\'Reilly";}
stripslashes(serialize($_GET)); // a:1:{s:4:"name";s:9:"O'Reilly";}

Ноunserialize(stripslashes(serialize($_GET))) дает мне эту странную ошибку:

Примечание: unserialize (): ошибка по смещению 30 из 32 байтов

РЕДАКТИРОВАТЬ: из-за атрибута длины вserialize() Я изменил код для использования функций JSON:

if (get_magic_quotes_gpc() === 1)
{
    foreach (array('GET', 'POST', 'COOKIE', 'REQUEST') as $array)
    {
        ${'_' . $array} = json_decode(stripslashes(json_encode(${'_' . $array})), true);
    }
}

Однако сейчас$_GET массив пустуетМожет кто-нибудь объяснить мне, почему?

Ответы на вопрос(3)

Ваш ответ на вопрос