PHP头不保留查询字符串
我有一个奇怪的问题。它几乎像一只虫子PHP头不保留查询字符串,php,string,header,Php,String,Header,我有一个奇怪的问题。它几乎像一只虫子 if($object->error){Form::BuildReturn();头(“location:$url”);} 现在,如果我回显$url的值,我会得到正确的值:/projects/view/112/?edit note=105 但是,当脚本执行时,我将进入/projects/view/112/ 但这里有一个奇怪的部分:我可以尝试在标题后面回显或打印一些内容,然后它会像我希望的那样将我带到/projects/view/112/?edit note=10
if($object->error){Form::BuildReturn();头(“location:$url”);}
现在,如果我回显$url的值,我会得到正确的值:/projects/view/112/?edit note=105
但是,当脚本执行时,我将进入/projects/view/112/
但这里有一个奇怪的部分:我可以尝试在标题后面回显或打印一些内容,然后它会像我希望的那样将我带到/projects/view/112/?edit note=105
。例如:
if($object->error){Form::BuildReturn();头(“location:$url”);echo 0;}
我已经用“PHP头查询字符串”、“PHP头获取值”等术语搜索了大约半个小时。我希望有一些实际的解决方案,而不是使用一种会生成“无法修改标题信息”警告的黑客解决方法…尝试添加
退出代码>重定向后。停止执行当前文件。尝试添加退出代码>重定向后。停止执行当前文件。添加
exit(0);
在重定向的标头之后
因为即使在头调用之后,代码也会继续运行。您需要显式退出重定向脚本。这将进一步讨论。添加
exit(0);
在重定向的标头之后
因为即使在头调用之后,代码也会继续运行。您需要显式退出重定向脚本。下面将对此进行详细讨论。正确的语法是:
header("Location: $url");
里面有一个空格和大写字母L,我不确定这会有多大区别
目前,我建议进行一些低级调试。使用wget
、curl
、浏览器中的开发人员模式或一个插件,该插件将回显所有HTTP头,然后准确地发布服务器头中返回的内容(如果结果不允许您找到它)。正确的语法是:
header("Location: $url");
里面有一个空格和大写字母L,我不确定这会有多大区别
目前,我建议进行一些低级调试。使用wget
、curl
、浏览器中的开发人员模式或一个插件,该插件将回显所有HTTP头,然后准确地发布服务器头中返回的内容(如果结果不允许您找出它)。在传递位置
头后,您应该始终退出,以防止页面的其余部分显示。此外,它还可以解决您的问题
此外,位置
标题的正确形式为:
header("Location: $url"); //Has space and capital L
我不认为这真的有什么关系,可能只对较老的浏览器有影响?在传递位置
标题后,您应该始终退出,以防止页面的其余部分显示出来。此外,它还可以解决您的问题
此外,位置
标题的正确形式为:
header("Location: $url"); //Has space and capital L
我不认为这真的有什么关系,也许只适用于较旧的浏览器?您可以使用带有meta标记的重定向功能。这将保留查询字符串
function redir($url, $time = 0) {
echo '<meta http-equiv="refresh" content="', $time, ';URL=', $url, '">';
die;
}
函数重读($url,$time=0){
回声';
死亡
}
您可以使用带有元标记的重定向功能。这将保留查询字符串
function redir($url, $time = 0) {
echo '<meta http-equiv="refresh" content="', $time, ';URL=', $url, '">';
die;
}
函数重读($url,$time=0){
回声';
死亡
}
看起来像是标题(“位置:…”
不接受Get变量。如果直接用PHP而不是$url编写“/projects/view…”是否有效?也许你可以尝试添加exit代码>重定向后,如果它与echo.Doh一起工作。。。甚至没有想到退出代码>。。。成功了。非常感谢。如果您将此作为答案发布,我将接受。请尝试绝对URL,包括协议和服务器名称http://example.com/..
--还显示wget-S
或Firebug标头转储。您的代码中可能有多个header()调用,其中一个会覆盖更具体的。似乎header(“Location:…”)
不接受Get变量。如果直接用PHP而不是$url编写“/projects/view…”是否有效?也许你可以尝试添加exit代码>重定向后,如果它与echo.Doh一起工作。。。甚至没有想到退出代码>。。。成功了。非常感谢。如果您将此作为答案发布,我将接受。请尝试绝对URL,包括协议和服务器名称http://example.com/..
--还显示wget-S
或Firebug标头转储。代码中也可能有多个header()调用,其中一个会覆盖更具体的。但这总是需要一些时间,而且是客户端的。但这总是需要一些时间,而且是客户端的。