Недавно столкнулся с проблемой. Решил продолжить разработку вне работы, дома, чтобы успеть сдать проект в срок. Однако, скопированный проект не стал работать на локальном сервере. Причина заключалась в том, что определенная команда вместе с параметрами отправляется на сервер с помощью POST запроса из JavaScript jQuery. Параметры передаются в отдельной переменной в формате JSON:
config.params = '{"products":"454,103,505","category":"7"}';
На стороне сервера происходит прием параметров:
$params = $_POST[ 'params' ];
Для использования параметров их нужно перекодировать:
$params = json_decode( $params );
На данном этапе и возникла проблема. После обработки переменной $params
с помощью json_decode()
она становилась пустой.
В процессе отладки я обратил внимание, что к отправляемой строке с параметрами в формате JSON к кавычкам добавлены обратные слэши.
Оказалось, что на локальном сервере параметр magic_quotes_gpc
установлен в true
, поэтому функция json_decode()
не могла обработать строку.
Решение проблемы:
public function decode_params( & $params ) {
if ( ! empty( $params ) ) {
if ( get_magic_quotes_gpc() ) {
$params = stripslashes( $params );
}
$params = json_decode( $params );
}
}