读取 PHP 中已编码为 javascript 的 url
reading a url in PHP that has been encoded in javascript
在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 中进行哪些更改?
只需更改:
$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");
毕竟你是在明确告诉它对 & 进行编码。
在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 中进行哪些更改?
只需更改:
$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");
毕竟你是在明确告诉它对 & 进行编码。