wp_magic_quotes()
Змінює глобальні змінні $_GET , $_POST , $_REQUEST , $_COOKIE , $_SERVER – додає їх значення чарівні лапки.
Примусово оновлює змінну $_REQUEST роблячи з неї об’єднаний масив $_GET + $_POST .
Функція видаляє екрановані слеші, якщо сервер встановлює і потім додає їх знову за допомогою функції add_magic_quotes() .
Коли спрацьовує
Ця функція спрацьовує при кожному запиті WordPress. Тому в середовищі WordPress усі дані вказаних у глобальних змінних завжди екрановані!
Функція спрацьовує відразу після події init .
Що таке чарівні лапки?
Чарівні лапки (Magic Quotes) – це процес автоматичного екранування вхідних даних PHP-скрипту. Мета такого екранування – спростити розробку для новачків.
Автоматичне екранування застаріло за версією PHP 5.3. та було видалено з версії PHP 5.4. Однак у середовищі WordPress таке екранування працює досі. Це зроблено з метою дотримання єдиного стандарту для вхідних даних.
Чарівні лапки екранують зворотним слешем такі символи: ' "
і NULL
. Також поводиться функція addslashes() або її аналог WordPress wp_slash() .
Це внутрішня функція WP
Ця функція не має прикладів використання. Тому що її не потрібно використовувати деінде, вона автоматично викликається відразу після події plugins_loaded .
Цю особливість WordPress потрібно знати, щоб розуміти як виглядатимуть вхідні дані при розробці тем і плагінів.
(дуже швидко) | 50000 разів – 1.83 сек
(швидко) |
PHP 7.0.8, WP 4.6.1
Хуків немає.
Повертає
null
. Нічого
Використання
wp_magic_quotes();
Приклади
#1 Видалимо зворотні слеші там де вони не потрібні
При отриманні JSON рядка її потрібно очистити, щоб надалі розпарсувати і використовувати в коді.
$json = strval( $_POST['urls'] ); // Unfortunately, WP applies magic quotes to POST data. if ( function_exists('wp_magic_quotes') && did_action('plugins_loaded') ) { $ json = stripslashes ($ json); }
список змін
З версії 3.0.0 | Введено. |
Код wp_magic_quotes() wp magic quotes WP 6.0.2
function wp_magic_quotes() { // 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 ); }