json_decode не будет работать без полосок (magic_quotes в Wordpress)

На стороне клиента я работаю с массивом объектов JavaScript. При отправке мне нужно отправить его в PHP с формой и далее манипулировать данными на стороне сервера.

Поэтому при создании или изменении массива объектов на стороне JavaScript я сохраняю его для скрытого ввода. Это проходит с формой, как и ожидалось, но проблема в том, что json_decode возвращается NULL если я не stripslashes перед расшифровкой.

Magic Quotes отключены, так как я использую PHP > 5.5 и get_magic_quotes_gpc() всегда возвращается FALSE,

Кто-нибудь может объяснить мне, почему в этом случае мне нужны полосатые черты, и будет ли это так на любом производственном сервере с отключенными магическими кавычками?

PS В настоящее время я все еще работаю над средой разработки на Windows и локальным сервером EasyPHP.

ОБНОВЛЕНИЕ: размещенные данные на стороне сервера выглядят как (var_dump):

ОБНОВЛЕНИЕ 2: я использую Wordpress как контейнер моего приложения.

string(5045) "[{\"address_components\":[{\"long_name\":\"Flughafenstrasse\",\"short_name\":\"Flughafenstrasse\"...

1 ответ

Решение

Поэтому после дальнейшей отладки я обнаружил проблему самостоятельно. Оставив здесь ответ в качестве ссылки для других, мне потребовалось 2 дня, чтобы найти основную причину проблемы.

Приложение, над которым я работал, было плагином Wordpress, так как оно было интегрировано в Wordpress. И оказывается, что Wordpress (по состоянию на текущую версию: 3.8.1) добавляет косые черты (кавычки) к данным GET и POST при загрузке. И даже с PHP > 5.4 и get_magic_quotes_gpc возврате 0 данные все еще экранированы.

Решение просто stripslashes если вы используете Wordpress, но кто знает, когда Wordpress отключит такое поведение, и у вашего приложения снова возникнут проблемы:)

Некоторые ссылки на проблему:
wp_magic_quotes ()
stripslashes_deep ()
Аналогичная проблема в стеке

Другие вопросы по тегам