php登录验证问题session
我的问题是这样的。一个用户同一时间只能一个地方登录后一次登录的T出前一次登录;包括本机同一种核心的浏览器同时登录两个账号,则后一个登录的账号T出前一个登录的账号。怎么用P...
我的问题是这样的。
一个用户同一时间只能一个地方登录 后一次登录的T出前一次登录; 包括本机同一种核心的浏览器同时登录两个账号, 则后一个登录的账号T出前一个登录的账号。
怎么用PHP实现? 展开
一个用户同一时间只能一个地方登录 后一次登录的T出前一次登录; 包括本机同一种核心的浏览器同时登录两个账号, 则后一个登录的账号T出前一个登录的账号。
怎么用PHP实现? 展开
5个回答
展开全部
你可以在数据库中创建一个session表,里面存放已登录用户的
用户名、登陆IP、随机码
重要提示:用户每成功登陆一次,那么就更新IP和随机码,随机码会存在$_SESSION['code']里
假设A在机器01上登陆过,那么seesion表存 A、127.0.0.1、123456
情况(1):
1、当A在另外一个机器02从登陆页面登陆,那么按“重要提示”的操作方法,session的数据会被更新成 A、127.0.0.2、456789.
2、然后A在第一台机器01上刷新网页,程序发现数据库中A最新的登陆IP有变动,那么在机器01上将A踢下线。
情况(2):
1、A在同一机器上的另外一个浏览器从登陆页面登陆,那么按“重要提示”的操作方法,session的数据会被更新成 A、127.0.0.1、987545.
2、然后A在第一台机器01上的第一个浏览器刷新网页,程序发现该浏览器与服务器的SESSION中保存的$_SESSION['code']与数据库中A最新的登陆随机码不同,那么在第一个浏览器上将A踢下线。
补充一点:同一台机器上所有利用IE内核的浏览器,其实session是通用的,不管你用纯正的IE、还是各大浏览器的兼容模式,或者是IETester的各个浏览器版本
用户名、登陆IP、随机码
重要提示:用户每成功登陆一次,那么就更新IP和随机码,随机码会存在$_SESSION['code']里
假设A在机器01上登陆过,那么seesion表存 A、127.0.0.1、123456
情况(1):
1、当A在另外一个机器02从登陆页面登陆,那么按“重要提示”的操作方法,session的数据会被更新成 A、127.0.0.2、456789.
2、然后A在第一台机器01上刷新网页,程序发现数据库中A最新的登陆IP有变动,那么在机器01上将A踢下线。
情况(2):
1、A在同一机器上的另外一个浏览器从登陆页面登陆,那么按“重要提示”的操作方法,session的数据会被更新成 A、127.0.0.1、987545.
2、然后A在第一台机器01上的第一个浏览器刷新网页,程序发现该浏览器与服务器的SESSION中保存的$_SESSION['code']与数据库中A最新的登陆随机码不同,那么在第一个浏览器上将A踢下线。
补充一点:同一台机器上所有利用IE内核的浏览器,其实session是通用的,不管你用纯正的IE、还是各大浏览器的兼容模式,或者是IETester的各个浏览器版本
更多追问追答
追问
你说的比较详细! 是不是每次刷新页面都要访问数据库拿到IP或随机码??
随机码也可以改为session id吗?
追答
我们首先得明确一点,用户每刷新网页就得验证一次。然后再讲具体的解决办法:
1、直接访问数据库,如果用户较多,可能服务器压力较大
2、将session表的结果放在缓存里,验证时跳过数据库直接查询缓存,速度会提高很多,如果有新用户登陆、或者用户退出,那么就更新数据库的session表并更新缓存
随机码也可以改为session id吗??
不行,数据库中某个用户登陆的session id是一定的,如果你用它做随机码,我上面讲的“情况(2)”就实现不了了,而生成随机码的函数很简单,一句话的事
TableDI
2024-07-18 广告
2024-07-18 广告
VLOOKUP 是 Excel 中一个非常实用的函数,它允许用户在一个区域或表格的首列中查找特定值,并返回同一行中指定列中的值。当进行跨表匹配时,你可以使用 VLOOKUP 函数将两个不同表格中的数据关联起来。通过指定查找值、表格数组、列号...
点击进入详情页
本回答由TableDI提供
展开全部
做到你的那个有点难,特别是本机同一种核心的浏览器同时登录两个账号,其实也没什么必要,本机的话都是同一个人,不t出来也可以接收
我的方法只能做到其他机子登录会t出来
方法就是数据库存储用户每次登录的ip,每个页面在session检测时顺便检测ip是否相同,如果其他机子登录,ip就不相同,那么就销毁session
我的方法只能做到其他机子登录会t出来
方法就是数据库存储用户每次登录的ip,每个页面在session检测时顺便检测ip是否相同,如果其他机子登录,ip就不相同,那么就销毁session
更多追问追答
追问
又要用到数据库。
那每次刷新页面不都要检查数据库?
追答
跟你检测登录一样,一次就够了,ip存在session里面,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把session id存到数据库中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在数据库中单独加一个状态的字段,首先去数据库中验证状态这个字段,如果字段为1表示已经上线了,拒绝登录。如果为0就表示可以登录,用户可以登录并且把状态这个字段的值修改为1.这样就可以防止重复登录
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
php做不到,你这就相当于1个人拿2把相同的钥匙,一个能开门一个不能开门一样,你要理解原理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询