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 );
}