网站同一用户只能在同一个地方登录

[TOC]

思路一:

需要一个session id,与用户信息绑定。

比如3L的说法,在users表内加一个sessionId字段,在用户访问时将cookies里面的sessionId与数据表里的sessionId比较下,不同就是非法访问,这时候踢下线就是把sessionId置空。

也可以单独创建一个 sessions 表,在里面记录用户ID与对应的session id ,登陆时查询下记录——这样的好处是支持多个地方同时登录同一个用户。T下线的方法是删除sessions表里对应的session id或用户ID。

php session_id()用法代码举例如下:

<?php
  session_start();
  echo session_id();
  // 输出 08nr1fav9jqs2pdi5qlpsmd247
?>

设置 session_id()详细代码:

<?php
  session_id("www.169it.com");
  session_start();
  echo session_id();
  // 输出 www.169it.com
?>

实例代码:

https://blog.csdn.net/qq_28761593/article/details/60960068?utm_source=blogxgwz0

思路二:

登录成功后,用户表中记录last_login_time 为当前时间,并写到session中。后台判断登录状态的时候,需要从数据库中读取最近一次登录时间,加入到判断条件中,即每次判断都要读一次。假设当前帐号A1为登录状态,如果此帐号A2在异地登录,必然会刷新last_login_time这个字段,那么当前账号A1在判断登录状态的时候,就会存在last_login_time这个字段的值与session个中记录的值不一致的情况。

思路三:

登入時記錄登入時間與登入ip,根據ip判斷地點。
如果登入地點與上次登入地點不同,且兩次登入時間在一定時間內,則通過站內信息系統提示上一次登入的用戶,被下線。

posted @ 2018-10-16 10:41  HaimaBlog  阅读(953)  评论(0编辑  收藏  举报