Как удалить магические кавычки, если php.ini / .htaccess не редактируются? - PullRequest
1 голос
/ 26 сентября 2011

По какой-то причине все мои кавычки экранируются и отображаются как \ ". Раньше все было в порядке. Затем я посмотрел на phpinfo () и увидел, что мой magic_quotes_gpc включен. Однако я не могу найти каталог / usr / local / lib /, где находится файл php.ini, и я не могу редактировать свой файл .htaccess (получает 500 Internal Server Error).

Я попытался поместить это вместо моего файла сценариев (который включен во все страницы):

if (get_magic_quotes_gpc()) {
    $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);
}

Но, тем не менее, "и" на моих страницах по-прежнему содержат обратную косую черту.

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 03 марта 2012

Какую версию PHP вы используете?

Если вы используете версию больше 5.2, чем вы можете использовать filter_input() или filter_input_array(). Кажется, что он игнорирует настройку magic_quotes_gpc -директивы и использует необработанные данные (фильтр по умолчанию FILTER_UNSAFE_RAW)

2 голосов
/ 26 сентября 2011

Попробуйте этот код, у меня он работал в прошлом.

<?php
if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
        $quotes_sybase = strtolower(ini_get('magic_quotes_sybase'));
        $unescape_function = (empty($quotes_sybase) || $quotes_sybase === 'off') ? 'stripslashes($value)' : 'str_replace("\'\'","\'",$value)';
    $stripslashes_deep = create_function('&$value, $fn', '
        if (is_string($value)) {
            $value = ' . $unescape_function . ';
        } else if (is_array($value)) {
            foreach ($value as &$v) $fn($v, $fn);
        }
    ');

    // Unescape data
    $stripslashes_deep($_POST, $stripslashes_deep);
    $stripslashes_deep($_GET, $stripslashes_deep);
    $stripslashes_deep($_COOKIE, $stripslashes_deep);
    $stripslashes_deep($_REQUEST, $stripslashes_deep);
}
...