2013-04-11 9 views
0

Когда я отправляю данные json из сценария действия 3 в php с использованием URLVariables, строка json изменяется и не может использоваться как json внутри php. Как предотвратить это? Или как это исправить?Формат JSON, потерянный в PHP

след от Flash (отправить moethod POST, имя переменной myObject):

[{"data1":"value1","data2":"value2",...},{...},...] 

echo $_POST['myObject'] из PHP:

[{\"data1\":\"value1\",\"data2\":\"value2\",...},{...},...] 

echo json_decode($_POST['myObject']) из PHP ничего, когда var_dump(json_decode($_POST['myObject']):

NULL 
+3

Проверьте тип ошибки с помощью' эхо json_last_error(); '. – Rikesh

ответ

4

Th e автоматически удаляет данные POST (как я помню, это опция в php.ini). Для экранирования в, используйте функцию stripslashes, и после того, как декодировать строки;)

json_decode(stripslashes($_POST['myObject'])); 

Основываясь на комментарий @therefromhere «ы, лучшее решение, чтобы установить magic_quotes_gpc офф. Вы можете сделать это, если у вас есть корневой доступ для сервера, или у вас есть разрешение устанавливать флаги php во время выполнения. Вот некоторая помощь для этого: http://php.net/manual/en/security.magicquotes.disabling.php

на основе @ п-х «s комментарий, если вы хотите, чтобы решить эту проблему, undepended от конфигурации сервера:

$myObject = get_magic_quotes_gpc() ? //Examine: is magic quotes gpc on? 
       stripslashes($_POST['myObject']) : //if true: unescape the string 
       $_POST['myObject'];    //if false, do nothing 
json_decode($myObject); 
//When php 5.3 or earlier installed on server 
+0

Это в значительной степени это :) Если это не работает, у вас есть неправильный JSON. –

+2

Лучше установите magic_quotes_gpc = 0, если это возможно, оно устарело в 5.3 и удалено в 5.4 (http://php.net/manual/en/function.get-magic-quotes-gpc.php) –

+0

Вы спасли мой день! :) Снятие косых черт с помощью stripslashes сделало работу! + У меня был неправильный JSON из-за некорректной работы класса ... Я изменил JSON.stringify на com.adobe.serialization.json.JSON.encode PS: Я использую PHP 5.2.17 сервер – SzRaPnEL

Смежные вопросы