php中的注销/重定向问题?

时间:2017-09-29 19:18:45

标签: php redirect

我的表单有一个登录页面,用户填写用户名和密码。然后用户被重定向到第1页,用户可以通过第1页上的提交按钮转到第2页。第1页和第2页都包含注销按钮。我可以从第1页退出,如果我没有登录,我就无法通过输入其URL(空会话,重定向)来访问该页面。我想在第2页上执行这两个功能,但我不断收到警告,标题无法修改。

我只在php工作了2个月,对于你们这些人来说这可能是一个非常简单的问题,所以尽量不要浪费我们两次告诉我同样的事情。我很欣赏一些真正的意见!

session_start();
// The button to go from page 1 to 2
<input type = "submit" id = "id2" name = "id2" Value = "View Call Log"/> 
if(isset($_POST['id2'])){
    echo "<script> window.open('page2.php', '_blank'); </script>";
}   
// Everything below is in page 2.php as well.
if(isset($_POST['logout'])){
        unset ($_SESSION['userid']);
        header("Location: login.php");
    }

if(empty($_SESSION['userid'])){
    header("Location: login.php");
    exit;
}

相同的代码适用于第1页,但不适用于第2页

2 个答案:

答案 0 :(得分:0)

向用户发送内容后,您无法修改标题。在你的代码中你发送html,之后你尝试发送标题。 您甚至无法像该示例中那样发送单个空格:

 <?php /* there is a space before <?php */ ?>

在html之前移动你的PHP代码。

PS。你会知道,如果你试图谷歌“标题已经发送”。

答案 1 :(得分:-1)

试试这个,因为用户标识可能不存在所以当你检查它是否为空时它将无效,所以也使用isset:

 session_start();
// The button to go from page 1 to 2
<input type = "submit" id = "id2" name = "id2" Value = "View Call Log"/> 
if(isset($_POST['id2'])){
    echo "<script> window.open('page2.php', '_blank'); 
</script>";
}   
// Everything below is in page 2.php as well.
if(isset($_POST['logout'])){
        unset ($_SESSION['userid']);
        header("Location: login.php");
   }

if(isset($_SESSION['userid']) || empty($_SESSION['userid'])){
    header("Location: login.php");
    exit;
}