0

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

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>
4

2 回答 2

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;
}
于 2013-10-06T09:45:18.513 回答
1

这段代码上面有输出吗?header("location: ...");只有在还没有输出的情况下才有效。如果您仍然需要它,ob_start();请在脚本顶部添加。

于 2013-10-06T09:46:14.397 回答