2014-02-18 2 views
0

На стороне клиента я работаю с массивом объектов javascript. На отправке мне нужно отправить его на PHP с формой и обработать данные дальше на стороне сервера.json_decode не работает без stripslashes (magic_quotes в Wordpress)

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

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

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

P.S. В настоящее время я все еще работаю над средой dev на локальном сервере Windows и EasyPHP.

UPDATE: размещены данные на стороне сервера выглядит (var_dump):

UPDATE2: Я использую Wordpress в качестве контейнера моего приложения.

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

Как именно вы создаете строку JSON? – haim770

+0

@ haim770 Объект - это в основном карты google placeResult-объект с некоторой модификацией (пара полей добавляется к объекту), а затем я использую 'JSON.stringify' перед сохранением значения для скрытого ввода. –

+0

Если вы 'console.log (json)' перед добавлением к скрытому вводу, есть ли какие-либо косые черты? – haim770

ответ

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()
Similiar issue on stackoverflow

+0

Это спасло меня, я боролся пару дней с ним. Отличная находка! –