如何解决php重定向失败,并且不执行任何操作
| 我只有带有这行代码的简单php文件。 <?php header(\"Location: MyBooks.php\",true); exit();?>
表单1将表单提交到此简单的php文件,并且该文件应该重定向到同一目录中的MyBooks.php。
我只是不明白,为什么它不重定向?
没有错误报告。
解决方法
似乎是您正在运行的服务器中的问题:http://social.msdn.microsoft.com/Forums/expression/zh-CN/db37d2ea-65ef-40ad-8a25-62a846a5d00d/php-headers-and-redirect
因此,您必须在发送位置标头之前手动为302指定响应代码:
header(\'HTTP/1.0 302 Found\');
header(\'Location: http://localhost/MyBooks.php\');
exit;
并请记住在Location
中使用绝对URL。
, 您可能已经通过脚本发送了一些输出(可能只是空白),在这种情况下,您将无法再发送标头。
使用以下代码对其进行测试:
if (headers_sent()) {
die(\"Error: headers already sent!\");
}
else {
header(\"Location: MyBooks.php\",true);
exit();
}
如果输出错误,则需要确保在调用header
之前完全没有输出。检查:
在调用header
之前,您根本不会“ѭ5”任何内容(或以其他方式输出任何HTML)
PHP脚本中的<?php
开始标记或?>
结束标记(如果有)之前绝对没有空格。
更新:如何使用Chrome检查HTTP标头
选择网络标签
从控制台上方的菜单中选择“文档”以缩小右侧的列表
从右侧列表中选择过滤器匹配的唯一资源(此处http://localhost/
)
单击标题选项卡
, 我能做到的唯一方法是:
$url = \"http://www.google.com\";
echo \"<script>window.open(\'\".$url.\"\',\'_self\');</script>\";
问候
, 您还可以将两个标头调用合并为:
header(\'Location: http://localhost/MyBooks.php\',true,302);
exit;
因此,您无需记住HTTP状态代码的格式/说明。标头函数的签名是
无效标头(字符串$ string [,bool
$ replace = true [,int
$ http_response_code]])
, 我认为这段代码没问题
检查执行是否在这一行,
尝试不使用布尔值
<?php header(\"Location: MyBooks.php); exit();?>
, 我遇到了这个问题,这是由于脚本结束之前在标头中设置了多个位置。
<?php
// WARNING: BAD CODE
if($thisShouldBeTrue) {
header(\'Location: http://www.example.com\');
}
if($weShouldNeverGetHere) {
header(\'Location: http://www.otherexample.com\');
}
?>
我认为php会立即在第一个标头处重定向,并且永远不会到达第二个if块。我错了。如果您的意图是立即去那里,请务必die()或在重定向后退出。
<?php
// CORRECT
if($thisMightBeTrue) {
header(\'Location: http://www.example.com\');
die();
}
if($orThisMightBeTrue) {
header(\'Location: http://www.otherexample.com\');
die();
}
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。