如果语句为false,php自动转到页面
如果语句为false,php自动转到页面,php,redirect,Php,Redirect,我在下面有一段php代码,我希望它有这样一个功能:如果语句为false,它将自动转到页面。 每当我使用“header”函数时,我都会收到一个错误“无法修改header信息-header已由…发送” 您收到的错误意味着已经有一些内容输出到文档中,例如通过echo语句或PHP?>之外的一些内容使用此函数删除已发送的标题错误 function redirect($url){ if (headers_sent()){ die('<script type="t
我在下面有一段php代码,我希望它有这样一个功能:如果语句为false,它将自动转到页面。
每当我使用“header”函数时,我都会收到一个错误“无法修改header信息-header已由…发送”
您收到的错误意味着已经有一些内容输出到文档中,例如通过echo
语句或PHP?>之外的一些内容使用此函数删除已发送的标题错误
function redirect($url){
if (headers_sent()){
die('<script type="text/javascript">window.location.href="' . $url . '";</script>');
}else{
header('Location: ' . $url);
die();
}
}
函数重定向($url){
如果(已发送的头){
die('window.location.href=“”.$url.“;”);
}否则{
标题('位置:'。$url);
模具();
}
}
并在else语句中调用此函数。确保在任何实际输出之前必须发送第一个头之前没有任何空格,有关详细信息,请参阅参考:
描述的错误消息表示某些输出已发送到浏览器。一旦输出开始发送到浏览器,所有的标题也会被发送,并且从那时起不能发送新的标题
您有两种选择:
重新安排代码并管理错误输出,以确保在处理完标题之前不会向客户端发送任何内容
打开输出缓冲
前者需要更多的工作,但后者确实会带来一些性能成本 是的,错误意味着在函数调用之前可能有一些输出。你能改变if的位置吗?如果没有,你想出了什么替代方案?@kingkero:好吧,如果这个决定的位置不能在输出之前被替换,那么应用程序的设计一定很糟糕。我只尝试添加一个头来重定向,但我遇到了一个错误,说“无法修改头信息-头已经由发送”。我找不到别的办法让它工作。更改位置是什么意思?可能与上面的代码重复我有以下代码:谢谢,但每当我进入此页面时,它都会说我没有登录,但我有。无论如何,jamesI回答了这个问题,但唯一的问题是,当我注销时,它会要求我登录,但当我登录并转到这个页面时,它会将我重定向到我想要的页面,但我在那里时我的会话是空的,而它不应该是空的,我没有会话
<?php
ob_start(); // we turn the buffering on
?>
<html>
<head>
<!-- ... -->
</head>
<body>
<?php
if(empty($_SESSION['pass']))
{
echo "U bent niet ingelogt.";
echo '<form action="index.php" method="post">';
echo 'Code <input type="text" name="code">';
echo '<input type="submit">';
echo '</form>';
}
else {
header("Location: some-other-page.html");
ob_clean();
die();
}
?>
some other HTML inside the body
</body>
</html>
<?php
echo ob_get_clean(); // output the buffer and clean it
?>
function redirect($url){
if (headers_sent()){
die('<script type="text/javascript">window.location.href="' . $url . '";</script>');
}else{
header('Location: ' . $url);
die();
}
}