【发布时间】:2013-05-07 05:41:16
【问题描述】:
我创建了一个更新数据库的页面。我希望该页面在更新页面上的所有代码完成后(并在几秒钟后)自动将您发送回主页(显示数据库信息的页面)。
我将 header() 函数放入其中,但它似乎在执行任何代码之前重定向。标头是正确的使用方法吗?在代码和短暂的延迟之后是否有另一种重定向方式?
【问题讨论】:
-
向我们展示您的代码。您所要做的就是在更新之后和任何输出发送到浏览器之前调用标头。
我创建了一个更新数据库的页面。我希望该页面在更新页面上的所有代码完成后(并在几秒钟后)自动将您发送回主页(显示数据库信息的页面)。
我将 header() 函数放入其中,但它似乎在执行任何代码之前重定向。标头是正确的使用方法吗?在代码和短暂的延迟之后是否有另一种重定向方式?
【问题讨论】:
是的,但是在你执行你的代码之后再做..
<?php
function foo(){
//do stuff here
header("Location: redirect.php");
exit();
}
确保在执行重定向之前不输出任何其他内容,否则会显示错误headers already sent
【讨论】:
您应该能够在执行 PHP 代码后使用 header() 重定向。确保您的 header() 调用位于您要在重定向之前运行的代码之后。
【讨论】:
是的,将header() 函数与Location: xxx 一起使用,只需在代码完成活动后发送即可。另请注意,为了使 header() 生效,在调用 header() 之前不能完成实际的页面输出(尽管可以通过使用输出缓冲来克服)。
【讨论】:
header() 是正确的重定向函数,但是 header() 函数仅在页面没有输出时才有效。
如果你能在这里显示一些代码就好了。
<?php
header('Location: http://www.example.com/');
?>
【讨论】:
是的,header() 将完成这项工作。只需在您的数据库更新代码之后调用此代码:
header('Location: ...');
exit;
为什么要在重定向之前添加任何延迟?
【讨论】: