Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果语句为false,php自动转到页面_Php_Redirect - Fatal编程技术网

如果语句为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();
            }    
        }