Когда я отправляю данные json из сценария действия 3 в php с использованием URLVariables
, строка json изменяется и не может использоваться как json внутри php. Как предотвратить это? Или как это исправить?
trace from 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
Сервер автоматически POST
данные POST
(как я помню, это опция в php.ini
). Для stripslashes
используйте функцию stripslashes
и после декодирования вашей строки;)
json_decode(stripslashes($_POST['myObject']));
Основываясь на комментарии @therefromhere, лучшее решение для установки magic_quotes_gpc
. Вы можете сделать это, если у вас есть корневой доступ для сервера, или у вас есть разрешение устанавливать флаги php во время выполнения. Вот вам помощь: http://php.net/manual/en/security.magicquotes.disabling.php
Основываясь на комментарии @ nl-x, если вы хотите решить эту проблему, не завися от конфигурации вашего сервера:
$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