我想根据用户操作将我的用户转到不同的页面。所以我在页面顶部制作了多个功能,如下所示:
<?php
function one() {
header("location: pagea.php");
}
function two() {
header("location: pageb.php");
}
function three() {
header("location: pagec.php");
}
?>
当然我会得到一个错误,因为我正在重新声明 header 。起初我认为它会没事,因为我将它们包含在函数中并且一次调用任何一个函数。但我仍然得到错误。还有其他方法吗?
最佳答案
我认为您误解了 HTTP header Location
的作用。
Location
header 指示客户端导航到另一个页面。每页不能发送更多的 Location
header 。
此外,PHP 在第一个输出之前发送 header 。输出后,您不能再指定任何 header (除非您正在使用输出缓冲)。
如果两次指定相同的 header ,默认情况下,header()
将用最新的值替换以前的值...例如:
<?php
header('Location: a.php');
header('Location: b.php');
header('Location: c.php');
会将用户重定向到 c.php
,绝不会经过 a.php
或 b.php
。您可以通过将 false
值传递给第二个参数(称为 $replace
)来覆盖此行为:
<?php
header('X-Powered-By: MyFrameWork', false);
header('X-Powered-By: MyFrameWork Plugin', false);
Location
header 只能指定一次。发送多个 Location
header 不会将用户重定向到页面......它可能会混淆 UA 的废话。此外,请了解代码在发送 Location
header 后继续执行。因此,请按照该调用 header()
用 exit
.这是一个正确的重定向函数:
function redirect($page) {
header('Location: ' . $page);
exit;
}
关于php - 如何在 PHP 上声明多个 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427878/