php - 如何在 PHP 上声明多个 header

标签 php header

我想根据用户操作将我的用户转到不同的页面。所以我在页面顶部制作了多个功能,如下所示:

<?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.phpb.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/

相关文章:

javascript - 在 WooCommerce 产品页面中添加千位分隔符和总价

php - 在 PHP 中使用 HTTP 基本身份验证时如何在后台显示图像

php - 计算 Codeigniter 中数据库查询返回的结果数

r - 导入带有显示为第一行数据的标题的 .csv

php重定向不会改变url

javascript - Vue.js 选择特定值

php - cakephp 内联错误消息 - 缺少数据库连接

html - 重复图像以将标题扩展到整个屏幕

c++ - CMake 和绝对标题路径

C: Include a file 包含一个文件,这个文件也需要包含在主程序中