Intereting Posts
как удалить заголовок со страницы регистрации? Экспортировать пользователей и их дополнительные пользовательские поля Индивидуальная панель администратора для каждого пользователя $ wpdb query выводит php-код вместо его выполнения Я ищу плагин для выполнения определенной задачи в определенное время Как добавить класс в мета-окно Есть ли крючок фильтра, который я могу использовать, чтобы изменить, как отображаются имена терминов таксономии? Удалить слово «Категории» из wp_list_categories выдержка в символах Странные проблемы после восстановления после нарушения безопасности Содержимое вытащили из шаблона страницы вместо редактора Сортировка моего календаря событий по дате Создание различных размерных изображений при загрузке файла изображения с пользовательской страницы плагина Engadget Как и большинство прокомментированных плагинов Водяные знаки с помощью WordPress с WP_Image_Editor

WordPress и магические цитаты

Я писал некоторые плагины WordPress, и у меня была некоторая проблема с WordPress, помещая магические кавычки в данные POST и GET.

В частности, функция wp_magic_quotes в \ wp-includes \ load.php, которая называется (предположительно на каждом ответе) в wp-settings.php. Эта функция добавляет магические кавычки к данным, даже если я отключу магические кавычки в настройках PHP.

/** * Add magic quotes to $_GET, $_POST, $_COOKIE, and $_SERVER. * * Also forces $_REQUEST to be $_GET + $_POST. If $_SERVER, $_COOKIE, * or $_ENV are needed, use those superglobals directly. * * @access private * @since 3.0.0 */ function wp_magic_quotes() { // If already slashed, strip. if ( get_magic_quotes_gpc() ) { $_GET = stripslashes_deep( $_GET ); $_POST = stripslashes_deep( $_POST ); $_COOKIE = stripslashes_deep( $_COOKIE ); } // Escape with wpdb. $_GET = add_magic_quotes( $_GET ); $_POST = add_magic_quotes( $_POST ); $_COOKIE = add_magic_quotes( $_COOKIE ); $_SERVER = add_magic_quotes( $_SERVER ); // Force REQUEST to be GET + POST. $_REQUEST = array_merge( $_GET, $_POST ); } 

Безопасно ли мне просто прокомментировать вызов wp_magic_quotes () в wp-settings.php? То есть, это отрицательно повлияет на обычный код WordPress и / или откроет какой-нибудь вектор разработки? Если да, есть ли другой способ сделать это, кроме изменения кода WP (так что я не должен иметь дело с этим каждый раз, когда есть обновление)?

Solutions Collecting From Web of "WordPress и магические цитаты"

Проще говоря, WP превращает неопределенную ситуацию (магические кавычки могут или не могут быть включены в конфигурации сервера) в детерминированные (магические кавычки всегда присутствуют, а конфигурация сервера не имеет значения).

Вместо того, чтобы возиться с этим для всего ядра WP, гораздо разумнее просто сбрасывать косые черты вашего кода на ваши собственные переменные, когда вам это нужно.

Текущее поведение в WordPress – лучшая практика, основанная на совместимости всех систем и конфигураций PHP. WordPress всегда нормализовал $ _GET, $ _POST, $ _COOKIE и $ _SERVER для сокращения и ожидает, что он будет продолжать это делать.

Итак, чтобы извлечь параметр POST или GET, мы должны написать:

$value = stripslashes_deep($_POST['name']); или

 $value = stripslashes_deep($_GET['name']); 

Я думаю, что следующие ссылки могут помочь:

Я написал решение для работы с этими суперглобальными массивами в аналогичном вопросе в Stack Overflow.

Он состоит из написания одного «метода доступа» (get / set) для каждого суперглобала, разрезания и снятия прозрачности. Таким образом, вы должны использовать, например:

 echo _get('username'); // echo stripslashes_deep($_GET['username']); _cookie('name', 'value'); // $_COOKIE['name'] = addslashes_deep('value'); 

Таким образом, вы можете воздерживаться от беспорядка еще больше с суперглобалами и наслаждаться решением, которое будет работать «локально» для вашего кода без каких-либо побочных эффектов. Для меня это было окончательное решение.

У меня недавно была эта проблема, и я, наконец, понял это. В основном я искал почти каждый сайт по волшебным цитатам в WordPress, и ни один из них не помог.

Вот как это исправить:

1) зайдите в свой wp-settings.php

2) найдите wp_magic_quotes ();

3) просто прокомментируйте это, и он должен работать сейчас

причина, по которой это работает

Это работает, потому что если вы посмотрите на этот код, вы увидите:

// Отключить магические кавычки во время выполнения. Магические кавычки добавляются с помощью wpdb позже в //wp-settings.php.

@ini_set ('magic_quotes_runtime', 0); @ini_set ('magic_quotes_sybase', 0);

Котировки Magic, которые добавляются позже при использовании wpdb, – это то, что вызывает большинство людей, и это wp_magic_quotes (). Просто комментируя это, вы не позволите волшебным котировкам запутать вас.