这是我的代码,我在其中检查会话变量是否未设置,然后它将重定向到另一个页面:
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>
答案 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();
。