关于制作'如果用户在线'系统
Questions about making 'if user is online' system
请帮助以正确的方式开始。我想添加"如果用户在线"系统。我将使用它来防止在一个名字下多次登录,这个系统也将为用户添加选项,显示他们谁是在线的时刻。
我知道我需要mysql表,我将存储在线用户。但如果用户还在,我怎么能理解每一秒?如果他退出了,那很简单,但如果他会重启呢?还是别的什么?那么我怎样才能控制所有的用户并且每秒了解他们的状态呢?
UPDATE经过与Cupcake的一些讨论,我决定只有谁的在线功能,让一个用户登录多次,因为很难阻止他这样做在一个舒适的方式。
renew该表记录,每次用户请求一个页面时更新访问时间字段。
从该表中删除所有访问时间字段超过合理超时时间(如5分钟)的记录
为了防止在一个名字下多次登录,您必须在users表中存储会话id。当用户登录时,在该字段中激活当前会话id每次用户请求页面时,将此id与实际会话id进行比较,并使用户重新登录
你可以这样做,这是我有时做的,是在用户表中有一个列命名为session_hash
或类似的
每次用户登录时,自己生成一个新的会话哈希,或者使用session_id
PHP,只要你在每个页面上使用session_start
。
然后从数据库中检索用户行,使用该session_hash的cookie。
例子
登录表单
Username: [ ]
Password: [ ]
Remember?: [*]
[ Login ]
PHP页面执行以下操作
User logs in ->
System generates a session_id or "salt"
Updates the users row with the session_id or "salt" value
Check if the value of the "remember" checkbox is true ->
Sets a cookie with that session_id or "salt" with a month or so expiration date
Otherwise just create a normal cookie with the value
然后在每页上执行以下操作
Check if the session_id or "salt" cookie is set ->
If it is, fetch the users row from the database
SELECT * FROM users WHERE session_id/"salt" = value of cookie
如果让用户选择他们是否希望每次访问都被记住,如果他们创建了一个至少一个月不会过期的cookie,那么他们下次访问网站时将被记住,但是如果他们从另一个浏览器或计算机登录,"salt"将在另一台计算机上无效
一旦用户打开一个新会话,就简单地使所有旧会话无效。通过这种方式,他一次只能运行一个会话(也就是一个登录)。
- jQuery/JavaScript在线公文包表单-打印样式表
- 数据绑定:'系统Char'不包含名为'xxxxx'
- Javascript模块系统I'I’我正在努力,但搞不明白
- 是否可以在系统/电脑浏览器中访问手机摄像头
- Node JS中的排名系统算法
- 任何将(SSH)终端嵌入到一些HTML5表示系统中的想法(例如,show.js)
- 如何在foreach循环中对每个产品单独应用评级系统
- Javascript-修复搜索系统
- 是否有任何设置阻止JavaScript在系统上工作
- 如何组织用户系统的Mongo集合
- 数字文件命名系统
- 如何对单个页面进行密码保护(这不是身份验证系统的一部分)
- 动态代码中存在系统应用程序地址错误
- 从自己的安全系统中重新找回自己
- Javascript在HTML表中输出在线用户名
- 是否可以使用NODE.JS(或PYTHON)开发ACM在线评判系统
- 在线测试系统asp.net mvc
- 用于在线考试系统的计时器,用于存储每个单独部分的时间
- 在线酒店预订系统,同时预订
- 关于制作'如果用户在线'系统