如何防止来自同一用户的多次登录?

时间:2017-04-04 19:11:43

标签: php session session-variables session-cookies session-state

如何在不退出现有会话的情况下阻止登录成员登录其帐户(在新标签页或其他设备中)?

我正在一个客户工作板网站上工作,登录的雇主可以通过post_job.php页面提交一份职位空缺。 问题是他们可以从新的标签页或设备再次登录,而无需注销并发布超过其允许的单个职位发布。 什么是阻止雇主这样做的最简单方法?

我是一个比较新手,到目前为止我所读到的一切都假设我不是。因此,我们将非常感谢用简单的术语表达任何答案。

4 个答案:

答案 0 :(得分:0)

您可以在首次登录时将用户名保存在其会话中。然后,在您的登录例程中,您可以检查是否有具有该用户名的会话。如果是,您知道用户尝试登录两次。

答案 1 :(得分:0)

要执行此操作,您需要在用户表示例is_login中的字段为tiny int(1或0)。当用户第一次登录时,您设置了is_login 1.当您检查用户名(电子邮件)时,每次尝试登录时,您还要检查is_login。如果为1,则表示您未登录用户,但输出错误消息。当用户注销时,您设置is_login 0.

答案 2 :(得分:0)

根据您的Cookie和会话变量,您可以比较两者以保持多个开放登录。

if($_SESSION['<username>']==$_COOKIE['<username>'] && $_COOKIE['<id>']!= $_SESSION['<id>']) {
   //deny access or log out prior session and delete prior requests
}

答案 3 :(得分:0)

查看this它可以保护您免受跨站请求伪造,并且您可以检查用户是否已登录。 尝试:将csrf令牌保存到db,然后检查用户令牌是否与db中的令牌相同... 如果不是:为此用户取消设置cookie和会话并将其返回登录页面; 如果是的话:做你的东西