PHP标头位置在第二次重定向期间添加当前锚点

时间:2014-02-14 19:24:05

标签: php forms redirect header submit

我正在向自己提交一个表单,并在页面中添加了一个锚点,这样当出现错误时,表单保证在视口中,这是一个简化的示例......

<form id="my_form" action="/form_link/#my_form" method="POST">
...
</form>

/form_link/收到表单帖子时,它会对其进行处理,当出现错误时,它会再次继续加载页面并显示错误。

但是,当帖子成功后,它会使用...

重定向到不同的页面
header('Location: /another_link/');
die;

问题在于,当我最终在重定向链接时,URL实际上是......

/another_link/#my_form

而不是预期......

/another_link/

我很茫然,事后正在添加锚点,所以我没有任何东西可以剥夺它。我该如何防止这种行为?


编辑:原因可能是因为表单提交和重定向之间还没有输出到浏览器?无论如何要清除标题中正在维护锚定目标的内容吗?


编辑2 headers_sent()报告的已发送的标头是:

[0] => X-Powered-By: ZendServer 6.3.0
[1] => Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
[2] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
[3] => Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
[4] => Pragma: no-cache
[5] => Access-Control-Allow-Origin: **REMOVED**
[6] => Access-Control-Allow-Methods: GET, POST, OPTIONS
[7] => Access-Control-Allow-Headers: X-Requested-With

所以我没有看到任何影响后续使用的内容?!?!

1 个答案:

答案 0 :(得分:1)

锚点不会作为请求的一部分发送到服务器; PHP不知道它。您所看到的是客户端(浏览器)行为。我刚刚测试了其他HTTP响应(301,303,304),结果是一样的。

我建议使用JavaScript在发生错误时向下滚动到表单,而不是依赖于URL。