有人知道为什么我的header()无法重定向吗?
我脚本的最后部分是:
header("location: test.php");
die('died');
它写道:
died.
:(((
这段代码应该在它死之前进行重定向,但实际上没有进行重定向。
你有任何想法吗?
有人知道为什么我的header()无法重定向吗?
我脚本的最后部分是:
header("location: test.php");
die('died');
它写道:
died.
:(((
这段代码应该在它死之前进行重定向,但实际上没有进行重定向。
你有任何想法吗?
你可能是在向浏览器输出一些文本/HTML之后再调用了header()方法,这是不可取的。如果在调用header()之前已经向浏览器发送了任何输出,即使只有一个空格,你的header()方法也会被忽略。
换句话说,你的header()代码需要放在脚本的开头,在显示任何东西给用户之前调用。如果仍然无法正常工作,请确保你没有错误地在php标签外使用任何空格或其他空白符号。
header
之前有一些不可见的输出,导致无法设置 header
,并且错误信息被禁止显示。此外,Location-Headers
应该包含绝对 URL:// Show Errors
error_reporting(E_ALL);
ini_set('display_errors','On');
// Redirect
header('Location: http://example.com/path/test.php');
die('redirect');
在设置位置头时,应使用完全限定地址,不要输出任何内容:
header('Location: http://example.com/test.php');
die();
此外,确保在设置头部之前未发送其他内容,否则它将不会被发送,因为头部已经被发送到浏览器。
添加
ob_start();
之前
header("location: test.php");
在原问题中,die()函数在header()之前被执行。
我遇到了类似的问题,所以我创建了下面的代码进行测试。
header("Location:index.php");
$file = fopen("test.txt","a");
fwrite($file,date("Y-m-d H:i:s")."\n");
fclose($file);
然后呢?好吧,在header()
函数之后呈现的代码被执行,只有在header()返回到index.php
页面之后才会执行。
所有这些都是为了说明header()
函数可以在脚本末尾用于引用另一个脚本。
但是要小心,如果将其放置在脚本开头,它不能阻止脚本运行。
location:
应该改为 Location:
。
此外...
祝好运。
我也曾遇到这个错误,尝试使用error_reporting(E_ALL)来显示错误信息,但对我没有用。补充一下:我是在Strato上使用托管服务。
解决方案由Floem提供,感谢他的出色设置。
如果您在放置error_reporting(E_ALL)时从未收到错误,那么您必须另外添加ini_set('display_errors', 'On'),以强制PHP显示所有错误。这解决了我的错误问题。
然后,您可以查看为什么PHP无法进行重定向。我的建议是:如果您要经常使用此重定向,则应构建一个小型重定向类,如此视频所示:Redirect Class for easy use。
只需删除 PHP 标签之前的所有内容即可解决问题。
删除 PHP 标签之前的空格
选择标签之前的所有内容,然后按删除键。