我想把我的用户发送到基于用户操作的不同页面。因此,我在页面顶部创建了多个函数,如下所示:
<?php
function one() {
header("location: pagea.php");
}
function two() {
header("location: pageb.php");
}
function three() {
header("location: pagec.php");
}
?>
当然,我会收到一个错误,因为我正在声明头文件。起初,我认为这是可以的,因为我将它们包含在函数中,并且一次调用任何一个函数。但我还是得到了错误。有没有其他方法可以做到这一点?
发布于 2010-03-12 03:15:33
我认为您误解了header Location
的作用。
Location
标头指示客户端导航到另一个页面。每页不能发送多个Location
标头。
此外,PHP在第一个输出之前发送头部。一旦输出,就不能再指定任何标头(除非使用输出缓冲)。
如果您指定相同的标头两次,默认情况下,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
标头只能指定一次。发送多个Location
标头不会将用户重定向到页面...这可能会把UA搞得一团糟。此外,请理解代码在发送Location
标头后仍会继续执行。因此,在调用header()
之后添加一个exit
。下面是一个合适的重定向函数:
function redirect($page) {
header('Location: ' . $page);
exit;
}
发布于 2010-03-12 03:12:34
尝试如下所示:
<?php
$page = // use an if statement or whatever you need to figure out
//which page you need (pagea.php, etc.)
fnx($page)
function fnx($page) {
header("location: " . $page);
}
?>
或
<?php
$page = // use an if statement or whatever you need to figure out
//which page you need (pagea.php, etc.)
header("location: " . $page);
?>
发布于 2010-03-12 03:11:45
要么它们并不都在函数中,要么调用了多个函数。
https://stackoverflow.com/questions/2427878
复制相似问题