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

How to prevent multiple logins from same user?

如何防止登录会员在不退出现有会话的情况下登录他们的帐户(在新选项卡或不同设备中)?

我在一个客户求职网站上工作,登录的雇主可以通过 post_job.php 页面提交一个职位空缺。 问题是他们可以在不注销的情况下从新的选项卡或设备再次登录,并且 post 比他们允许的单一工作 post 多。 防止雇主这样做的最简单方法是什么?

我是一个比较新手,到目前为止我所读的一切都假设我不是。因此,我们将不胜感激任何简单无行话的回答。

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

为此,您需要在用户 table 示例 is_login 中有一个字段作为 tiny int(1 或 0)。当您的用户第一次登录时,您设置 is_login 1。并且在每次尝试登录时,当您检查用户名(电子邮件)时,您也会检查 is_login。如果它是 1 你不登录用户但输出一条错误消息。当用户注销时,您设置 is_login 0。

根据您的 Cookie 和 Session 变量,您可以比较两者以保持多次打开登录。

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

看看 this 它可以保护您免受跨站点请求伪造,您可以检查用户是否已登录。 尝试:将 csrf 令牌保存到数据库,然后检查用户令牌是否与数据库中的令牌相同...... 如果不是:为该用户取消设置 cookie 和会话,return 他到登录页面; 如果是:做你的事