如何限制用户在具有不同用户类型的同一浏览器上的多个窗口上登录

时间:2013-06-15 11:45:14

标签: php

登录页面及其功能正常,但现在我遇到了问题,当用户使用一个帐户登录时,登录后他/她在同一浏览器上打开新窗口并键入loginviewcontroller.php它没有显示以前的loggedin.php页面和用户可以同时在两个窗口上使用不同的帐户登录。

如何限制用户在多个窗口上登录?

我需要像gmail这样的功能,如果用户在浏览器中登录一次他/她在同一个浏览器上打开新窗口并输入www.gmail.com它会显示已登录的用户信息...但不是gmail登录页面......

请帮我解决这个问题。

这是loginviewcontroller代码

<?php

header("Cache-Control: private, must-revalidate, max-age=0");
header("Pragma: no-cache");
header("Expires: Fri, 4 Jun 2010 12:00:00 GMT");

if (!isset($_POST['submit'])) {
    /// HTML code for login page....
} else {
    /// Here the values are posting...

    $Username  = $_POST['uname'];
    $Password  = $_POST['pwd'];
    $User_Type = $_POST['type'];
    session_start();

    If (!(empty($Username) && empty($Password) && empty($User_Type))) {

        $model = new UsersModel();

        $rowsCount = $model->checkUser($Username, $Password, $User_Type);

        if ($rowsCount != 0) {
            $_SESSION['user'] = $Username;

            header("location:loggedin.php");

        } else {
            echo '<script type="text/javascript">alert("Enter username and password correctly");
              window.location.href="LoginViewController.php";</script>';
        }
    }

   }
    ?>

这是loggedin.php代码

<?php

session_start();
$_SESSION['logged_in'] = 'true';

if (!isset($_SESSION['user'])) {
    header('Location: LoginViewController.php');
    exit();
}
echo '"<div style="background:white; text-align:right"> Login as:' . $_SESSION['user'] . '
       <a href="LogoutViewController.php" style="text-align:right">Logout</a></div>"';
?>

2 个答案:

答案 0 :(得分:0)

您正在用户的会话中设置变量。设置此变量时,您可以不允许用户再次登录,因为他已经登录。

另外,不要忘记致电session_start()。即你可以将它放在登录页面的最顶层:

session_start();
if (isset($_SESSION['user']))
  header("location:loggedin.php");

答案 1 :(得分:0)

在登录页面

<?php

session_start();

if (!isset($_SESSION['user'])) {
    header('Location: LoginViewController.php');
    exit();
}