从PHP中的Location Header获取Querystring值

时间:2014-08-15 20:46:33

标签: php query-string

更新

让我们说,我的用户访问了此页面:

https://www.abc.com/mypage.php

该页面的响应标题为:

    Content-Length  28
    Date    XXXX
    Location    https://abc.com/error.php?target=https%3A%2F%2Fabc.com%2Fmypage.php&
errorReason=Go+To+this+Url
    Server  MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained)

这意味着该页面会使用https://www.abc.com/errorpage.php标题中的查询字符串参数重定向到Location

现在在errorpage.php上,我没有使用$ _GET来获取查询字符串参数,而是想获取Location标头,解析参数并打印它们。

执行$ _GET的缺点是,我的用户可以在查询字符串中输入任何废话,我的errorpage.php将打印它。所以我想通过检测Location标题来避免这种情况。

有没有办法从重定向获取Location标头?我没有看到使用getallheaders()或任何其他PHP函数。

由于

4 个答案:

答案 0 :(得分:1)

我不确定您是否在寻找简单$_GET以外的其他内容?

$target = $_GET['target'];

$errorReason = $_GET['errorReason'];

答案 1 :(得分:1)

如果您正在执行脚本:

$target = $_GET['target']; $errorReason = $_GET['errorReason'];

如果您拥有的是URL:

$url = "https://abc.com/pageredirect.php?target=https%3A%2F%2Fabc.com%2Fredirecttopage.php&errorReason=Simple+redirect";
$urlObj = parse_url($url);
$getVars = $urlObj['query'];
parse_str($getVars);
echo "Target: ".$target." and errorReason: ".$errorReason;

答案 2 :(得分:0)

您可以使用$_GET数组获取这些网址参数:

$_GET['target'];

$_GET['errorReason'];

答案 3 :(得分:0)

参数位于$_GET变量

$_GET['target'];

$_GET['errorReason'];