当我登录Chrome

时间:2019-05-22 01:12:05

标签: php google-chrome session opera session-storage

我为我的网站创建了一个php mysql登录系统。一切正常,但是我遇到的问题是会话解析到与创建/登录不同的浏览器中。 具体来说,我的意思是,当我登录chrome浏览器时,该浏览器会创建一个会话,但也会在Opera浏览器中继续,因为它也访问我的会话,并使我使用与chrome相同的用户身份登录。

我检查了登录fb,stackoverflow和许多其他网站的情况,以查看是否发生了相同的情况,并且从Chrome登录时,它们的会话继续在Opera上进行,但没有发生。但是在我的网站情况下,确实发生了这种情况,因为当我登录chrome时,我也可以通过Opera访问我的用户。

如何防止这种情况发生,因为我不想像其他站点一样将我的会话共享给任何其他浏览器。如果它们可以,我也应该怎么做? 与其他网站一样,如何区分与浏览器的会话?

我用来创建会话的代码排序如下所示。

注意:这不是完整的代码,我确实使用密码的哈希并采取其他安全措施。这只是我如何创建会话的概述。

session_start();
if (isset($_POST['email']) and isset($_POST['password'])){
    $email = $_POST['email'];
    $password = $_POST['password'];
    $query = "SELECT * FROM `users` WHERE email='$email' and password='$password'";
    $result = mysql_query($query) or die(mysql_error());
    if(mysql_num_rows($result) > 0){
        $_SESSION['email'] = $email;
        echo "You are logged in.";
        header("Location: index.php?log=success");
        unset($_POST);
    } else {
        echo " Something went wrong ";
    }
}

1 个答案:

答案 0 :(得分:1)

我为您建议的是创建一个Logs表或表的任何名称,一旦用户登录,您就会在其中插入数据

例如

INSERT INTO Logs VALUES (user_id, is_logged_in, timestamps) // the "is_logged_in" here could be a BOOLEAN

现在,为了防止其他人使用您有条件的同一帐户登录不同的平台,或检查登录模块以获取用户在{{1}中拥有的最新记录 }表

示例代码段:

Logs

上面的代码获取SELECT * FROM Logs WHERE user_id = (Session of the logged in user) ORDER BY timestamps (you may use "created_at" if you have) DESC LIMIT 1 表中已登录用户的最后一条记录,现在测试Logs是否为true标志,然后将用户重定向回登录页面,或者阻止他/她继续使用该帐户