检查会话后,它不会重定向到另一个页面

时间:2013-10-06 09:38:51

标签: php session-variables

这是我的代码,我在其中检查会话变量是否未设置,然后它将重定向到另一个页面:

if (!isset($_SESSION)) {
        session_start();
    }
if (!isset($_SESSION['username']))
{
header("location: http://myweb.com/rel_notes/?page_id=779"); 
}

问题:它没有重定向到另一个页面但是如果我改变这一行

header("location: http://myweb.com/rel_notes/?page_id=779"); 

die("You aren't allowed to access this page");

然后它的工作原理。那么请告诉我为什么它没有重定向到另一个页面?

编辑:这是我目前正在处理的wordpress页面的完整代码:

<?php
ob_start();
session_start();
if (!isset($_SESSION['username']))
 {
 header("location: http://myweb.com/rel_notes/?page_id=779"); 
 exit(); 
 }

 if (isset($_POST["cancel"]))
{
 if (!isset($_SESSION)) {
        session_start();
    }
    session_unset();
    session_destroy();
 header("location: http://myweb.com/rel_notes/?page_id=779"); 
    exit(); 
  }
 ?>
 <form  method="post" enctype="multipart/form-data">
 <div align="right">
  <input class="btn btn-primary" type="submit" value="Log Out" name="cancel" id="cancel" style=""/>
 </div>
 </form>

2 个答案:

答案 0 :(得分:1)

试试这样。如果这只是代码,它将正常工作。

<?php
session_start();
if (!isset($_SESSION['username']))
{
header("location: http://myweb.com/rel_notes/?page_id=779"); 
}

如果您在此之后还有其他任何代码,则可能会收到headers already sent通知。

编辑:

您甚至可以使用JS实现此目的。 [但是,我个人不建议]

<?php
session_start();
if (!isset($_SESSION['username']))
{
    //header("location: http://myweb.com/rel_notes/?page_id=779");
    echo "<script>document.location.href='http://myweb.com/rel_notes/?page_id=779'</script>";
    exit;
}

答案 1 :(得分:1)

此代码上方是否有任何输出? header("location: ...");仅在尚无输出的情况下有效。如果您仍然需要,请在脚本顶部添加ob_start();