PHP вырезать GET-запрос - PullRequest
       9

PHP вырезать GET-запрос

0 голосов
/ 20 ноября 2018

В моем PHP-приложении я использую этот код для получения запроса

$this->request->get

, это возвращает все данные

Array
(
[rt] => extension/dump
[type] => xls
[controller] => list/product
[s] => administration
[token] => s7KO9PkoPmgpQmZjPQOimTbdKMB85uGa
[filters] => {"_search":true,"nd":1542700897278,"rows":20,"page":1,"sidx":"date_modified","sord":"desc","filters":"{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"name\",\"op\":\"cn\",\"data\":\"Lemon 
[Eucalyptus\"}]}"}] => 
)

Однако следующий код обрезает данные

$this->request->get['filters']

возвращена только часть данных (см. конец «фильтры» удалены)

{"_search":true,"nd":1542700897278,"rows":20,"page":1,"sidx":"date_modified","sord":"desc","filters":"
{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"name\",\"op\":\"cn\",\"data\":\"Lemon

Есть ли обходной путь для получения полных данных внутри «фильтров»?Преобразование объекта в массив не помогает

ОБНОВЛЕНИЕ: вывод консоли js

{_search: false, nd: 1542700894743, rows: 20, page: 1, sidx:    "date_modified", …}
filters: "{"groupOp":"AND","rules":[{"field":"name","op":"cn","data":"Lemon & Eucalyptus"}]}"
nd: 1542700897278
page: 1
rows: 20
sidx: "date_modified"
sord: "desc"
_search: true

Request URL: http://blablabla&filters={%22_search%22:true,%22nd%22:1542700897278,%22rows%22:20,%22page%22:1,%22sidx%22:%22date_modified%22,%22sord%22:%22desc%22,%22filters%22:%22{\%22groupOp\%22:\%22AND\%22,\%22rules\%22:[{\%22field\%22:\%22name\%22,\%22op\%22:\%22cn\%22,\%22data\%22:\%22Lemon%20&%20Eucalyptus\%22}]}%22}

Метод запроса: GET

Это как-то связано с амперсандом?

1 Ответ

0 голосов
/ 21 ноября 2018

Предполагая, что вы создаете URL-адрес и параметры запроса в JS, вам нужно кодировать все параметры для использования в URL-адресе.

В вашем случае ...

const filters = {
  "groupOp": "AND",
  "rules": [
    {
      "field": "name",
      "op": "cn",
      "data": "Lemon & Eucalyptus"
    }
  ]
}

const url = `http://blablabla?filters=${encodeURIComponent(JSON.stringify(filters))}`

document.write(`${url}
`)

Обратите внимание, что & в "Lemon & Eucalyptus" стало %26


Еще одной проблемой являетсячто-то HTML-кодирует параметры вашего запроса.Вам не следует делать это, если вы специально не отображаете информацию в HTML-документе.

...