Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP头不保留查询字符串_Php_String_Header - Fatal编程技术网

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()调用,其中一个会覆盖更具体的。但这总是需要一些时间,而且是客户端的。但这总是需要一些时间,而且是客户端的。