чтение URL-адреса в PHP, который был закодирован в JavaScript - PullRequest
0 голосов
/ 09 февраля 2019

В Javascript я кодирую части параметра запроса следующим образом

window.location.href = "search.php?qry=" + encodeURIComponent("m & l");

В моем Search.php я достигаю этого следующим образом

$url = urldecode($_SERVER['REQUEST_URI']);
echo ."Full URL: " .$url ."<br>";
$parts = parse_url($url);
parse_str($parts['query'], $query);
$qry = "Just Query: " .trim($query['qry']);
echo $qry ."<br>";

Это печатает:

Full Url: /Search.php?qry=m & l
Just Query: m

Похоже, что материал после того, как & был сброшен в 'm & l`

Какие изменения мне нужно сделать в PHP или Javascript?

1 Ответ

0 голосов
/ 09 февраля 2019

Просто измените:

$url = urldecode($_SERVER['REQUEST_URI']);

на

$url = $_SERVER['REQUEST_URI'];

Вы в основном двойное декодирование, так как parse_url также будет декодировать его.

Стоит отметитьчто PHP уже сделал это для вас, так что на самом деле нет причины разбирать ваш собственный URL.$_GET['qry'] будет содержать 'm & l'

Если вы делаете это для нескольких переменных запроса, вам нужно будет запустить encodeURIComponent отдельно для каждой.

Пример:

window.location.href = "search.php?qry=" + encodeURIComponent("m & l") + "&subcat="+encodeURIComponent("hello & there");

Вы явно говорите, что в конце концов закодируйте &.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...