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 ()
Аналогичная проблема в стеке