Если посмотреть на название этой директивы, можно подумать, что magic_quotes применяются только к $_COOKIE $_GET , $_POST и $_COOKIE но есть один возмущающий комментарий к PHP Manual :
Обратите внимание, что когда
magic_quotes_gpcустановлен не только значения$_POST,$_GET,$_COOKIEзначения массива$_COOKIE. Фактически каждое строковое значение в массиве$GLOBALSсокращается, т.е.$GLOBALS['_SERVER']['PATH_INFO'](или$_SERVER['PATH_INFO']).
- Использование get_magic_quotes_gpc в PHP версии 5.2.14 или эквивалент для PHP версии 6
- Антидот для magic_quotes_gpc ()?
- Невозможно обновить функциональную ошибку
- получить un espeded POST, а не магические цитируемые значения в wordpress?
- Как удалить магические кавычки, если php.ini / .htaccess не редактируются?
Может ли кто-нибудь подтвердить, что это правда? $_ENV влияют $_ENV $GLOBALS , $_SERVER , $_FILES , $_SESSION и $_ENV ?
Еще один вопрос: если я повторяю stripslashes() над массивами $_GET , $_POST и $_COOKIE , мне также нужно перебирать массив $_REQUEST ? Или изменения автоматически отражаются?
В любом случае я бы посоветовал вам не полагаться на GPC, поскольку он устарел на новых версиях PHP …
Возможно, это не слишком актуально для вашего вопроса, но по поднятой проблеме альтернатив безопасности SQL я обычно использую подготовленные операторы + mysql_real_escape_string для MySQL.
Чтобы сделать его близким к совершенству, он включает в себя несколько функций, так как он также должен поддерживать целочисленные, логические и нулевые значения, но вы можете взглянуть на исходный код в классах Database и Database_mysql на NaturePhp .
Я провел несколько тестов на LightTPD 1.4.20 и PHP 5.3.0 с magic_quotes_gpc = On и $_SERVER не был изменен (по крайней мере [SERVER_NAME] => local'host не был). $_SESSION не влияет на $_SESSION .
Были затронуты $_GET , $_POST , $_COOKIE и $_COOKIE (и их $GLOBALS аналоги).
Кроме того, изменения в суперглобалях GPC автоматически не отражаются в $_REQUEST .
Что касается $_FILES и $_ENV я не могу проверить их ATM.
Я, наконец, прошел этот тест, и, к моему удивлению, $_FILES как $_FILES и php://input .