«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему данные POST автоматически экранируются в PHP, даже если магические кавычки отключены?

Почему данные POST автоматически экранируются в PHP, даже если магические кавычки отключены?

Опубликовано 20 ноября 2024 г.
Просматривать:519

Why is POST Data Auto-Escaping in PHP Even When Magic Quotes are Disabled?

Раскрытие загадочного автоматического экранирования данных публикации в PHP с отключенными магическими кавычками

При работе с данными POST в PHP, особенно внутри В среде WordPress можно столкнуться с неожиданным поведением автоматического экранирования, несмотря на то, что волшебные кавычки отключены. Эта непростая проблема возникает, когда данные POST подвергаются автоматическому экранированию, даже несмотря на то, что магические кавычки, как сообщается, отключены (get_magic_quotes_gpc() возвращает 0).

Влияние WordPress

При более глубоком копании Вникнув в эту проблему, становится очевидным, что WordPress играет решающую роль в запуске этого механизма автоматического экранирования. Когда WordPress загружается как часть процесса инициализации вашего приложения, его код мешает естественному поведению магических кавычек PHP.

WordPress включает в себя функции, которые перехватывают данные запроса, включая данные POST, и выполняют определенные операции, одна из которых экранируется одинарными кавычками ('). Такое поведение сохраняется, даже если в php.ini отключены волшебные кавычки.

Источник ошибки

Более внимательное изучение кодовой базы WordPress выявило ошибку, описанную в разделе система WordPress Core Trac (билет 18322). Эта проблема связана с неправильной обработкой данных запроса, что приводит к нежелательному экранированию.

Решение

К счастью, существует решение, позволяющее решить эту дилемму автоматического экранирования. . Кодекс WordPress рекомендует использовать функцию Stripslashes_deep(), чтобы «отменить экранирование» данных POST перед выполнением каких-либо операций с ними. Используя эту функцию, вы можете эффективно переопределить автоматическое экранирование WordPress и получить данные в исходном формате.

Чтобы реализовать это решение, добавьте следующий код в свой PHP-скрипт:

$_GET       = array_map('stripslashes_deep', $_GET);
$_POST      = array_map('stripslashes_deep', $_POST);
$_COOKIE    = array_map('stripslashes_deep', $_COOKIE);
$_SERVER    = array_map('stripslashes_deep', $_SERVER);
$_REQUEST   = array_map('stripslashes_deep', $_REQUEST);

Этот код удаляет косые черты из всех суперглобальных переменных, гарантируя, что данные POST не будут автоматически экранироваться при доступе к PHP.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3