По какой-то причине все мои кавычки экранируются и отображаются как \ ". Раньше это было нормально. Затем я посмотрел на 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); }
Но тем не менее, «и» на моих страницах все еще имеют обратную косую черту.
Что я делаю не так?
Попробуйте этот код, он работал для меня в прошлом.
<?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); }
Какую версию PHP вы используете?
Если вы используете версию больше 5.2
, чем вы можете использовать filter_input()
или filter_input_array()
. Похоже, что он игнорирует настройку magic_quotes_gpc
-directive и использует необработанные данные (фильтр по умолчанию FILTER_UNSAFE_RAW
)