Я не могу найти в Интернете никакой ссылки на get_magic_quotes_gpc()
, возвращающей неверный результат где-либо в Интернете, поэтому вместо этого я дам вам контрольный список, чтобы попытаться сузить проблему (вероятно, это должен быть комментарий, но это слишкомдолго для этого):
Первое, что я хотел бы сделать, это попытаться отредактировать файл php.ini
, чтобы убедиться, что magic_quotes_gpc действительно отключен.Лучшее место, чтобы попробовать это - создать / отредактировать файл php.ini
в том же каталоге, что и скрипт, в котором возникают проблемы, так как это последнее место, где вы можете переопределить настройку INI перед тем, как перейти к скрипту (а global_quotes_gpc не может бытьпереопределяется ниже этого значения, поскольку к моменту запуска сценария ущерб уже нанесен).
В файле php.ini
добавьте следующие строки:
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
Только первый изони будут влиять на переменные POST («gpc» означает «Get, Post и Cookies»), но хорошо установить их все, так как они все отстой.
После установки этих строк,Вы можете быть уверены, что магические цитаты действительно отключены.Если это решит проблему, то вам нужно пройтись по структуре каталогов в первую очередь, чтобы найти, где она была включена.Это может быть файл php.ini
более высокого каталога, файл .htaccess
или даже файл http.conf
.Возможно, вы захотите подключить ваш хост, если не уверены, что делаете здесь.
Если проблема не устранена, вам следует проверить наличие вызовов функции addslashes()
в вашем скрипте.Это легко, если вы работаете в Linux, так как вы можете запустить команду grep -ir "addslashes" *
из корневого каталога вашего проекта.Если вы работаете в Windows, вам следует обратиться к Cygwin, unxutils или другому unix-слою.Я абсолютно люблю unxutils, и это одна из первых вещей, которую я устанавливаю при установке Windows или на новом задании.
Хотя я не понимаю, почему какой-либо фреймворк будет иметь что-то подобноевстроенный, я полагаю, возможно, что какой-то идиот может попробовать это.По этой причине вам, вероятно, следует убедиться, что вы grep
также над своими файлами фреймворка.Обязательно проверьте все файлы php.ini
, поставляемые с платформой, хотя это должно быть рассмотрено в том, что я уже описал выше.
Наконец, вы должны обязательно установить error_reporting
вE_ALL | E_STRICT
.Это можно сделать из файла php.ini
или с помощью функции error_reporting()
.Убедитесь, что это установлено до запуска любого другого PHP.Вы всегда должны разрабатывать с самой высокой настройкой отчетов об ошибках, чтобы вы могли видеть каждую ошибку, независимо от того, насколько она мала, до того, как она появится перед пользователем.Чтобы убедиться, что вы видите эти ошибки, также убедитесь, что отображать ошибки также включены.
Хотя пример кода, который вы вставили в свой вопрос, действителен, я упомянул только error_reportingв случае, если это не прямое копирование / вставка из вашего кода, или если нет, есть другой код, который вызывает ошибку.Установив отчет об ошибках, вы можете увидеть любые ошибки, которые могут блокировать правильное функционирование get_magic_quotes_gpc()
или stripslashes()
.Если вы сможете исправить эти ошибки, остальная часть вашего кода будет работать так, как задумано.
Удачи.