很多站长朋友们都不太清楚php禁止重复登录,今天小编就来给大家整理php禁止重复登录,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 thinkphp添加用户禁止重复 2、 php怎么防止同一用户登陆 3、 PHP如何判断用户是否登陆,防止同账号多登陆, 4、 php如何防止程序重复执行 5、 Thinkphp5防止某个IP多次登录的方法 6、 请问php防止一个用户重复登录的问题 thinkphp添加用户禁止重复thinkphp5.1实现避免用户重复登录问题
问题,只要用户登录了就直接跳转到首页
思路,实现就是一个初始化方法,然后控制器继承这个方法,运行就验证是不是有这个session存在
在控制器文件夹新建一个Base类文件
做一个if判断
class Base extends Controller
{
//防止重复登陆
protected function initialize()
{
if (!session('?admin.id')){//判断session是否有,有的话直接跳转
$this->redirect('admin/index/login');
}
}
}
然后在需要验证的控制器继承一下这个控制器
class Comment extends Base
{
登录后复制
就可以实现避免重复登陆
当然这个base的初始话方法可以写在任意一个类文件中就不需要再继承
php怎么防止同一用户登陆表里加个时间,用户刷新一次网页更新一次时间,如果距上次刷新页面时间超过假如20分钟,就算自动退出了。
PHP如何判断用户是否登陆,防止同账号多登陆,大概逻辑是这样的,如果要达到一个账号登陆了,要把另一个客户端上的统一账号踢掉,那么你需要用记录用户头token,和设备唯一识别号到数据库。
当用户登陆的时候,检测和用户uid相关的token表,如果已经有token了,并且本次的设备唯一识别号和已经登陆的识别号不一样,那么清空原有token,也就是将原来登陆的账号踢下线。记录新的设备识别号的token即可。
php大致代码如下:
$currentDeviceUUID=getDeviceUUID();
$uid = getUserId();
$token = generateToken();
select * from tokenTable where uid="$uid";
update set token='' where uid="$uid";
insert into tokenTable (uid, token, deviceUUID) values("$uid", "$token", $currentDeviceUUID);
php如何防止程序重复执行在用户表中加四个字段,一个记录是否登录,一个记录登录随机码(每次登录不一样),一个记录最后登录时间,一个记录登录ip,登录后保存user_id及登录随机码的session,在全局的配置文件中写一个方法.每次访问一个页面都去查询用户表的登录随机码及ip,如果发现ip或随机码不一致(因为同一局域网获取的ip可能一样,所以不能单纯的判断ip,加上验证随机码),则弹出提示消息,并清空session,强迫下线.
Thinkphp5防止某个IP多次登录的方法//昨天写的思路不对,重新写....
/**
*检查IP是否重复登录多次
*/
public function check_ip(){
//获取ip
$login_ip=$_SERVER["REMOTE_ADDR"];
$login_time=date("Y-m-d",time());
if(Cache::get('cache_login_data')==false){
//如果ip换成为false,那么创建一个缓存,并赋值第一个
$login_data[0]=['login_ip'=>$login_ip,'login_time'=>$login_time];
Cache::set('cache_login_data',$login_data);
}else{
//如果有cache,那么将这条数据加入到缓存中最后一条去
$cache_login_data=Cache::get('cache_login_data');
$count=0;
foreach($cache_login_dataas$k=>$v){
//如果当前缓存中的值含有当前ip和时间,那么计算当前时间内登录次数
if($v['login_time']==$login_time$v['login_ip']==$login_ip){
$count++;
if($count>10){
//当前ip登录超过10次
$this->error("你登录超过了10次,请不要再来登了...","Login/index");
}else{
//当前时间内有该IP登陆过,但是没有超过10次
$cache_login_data[count($cache_login_data)+1]=['login_ip'=>$login_ip,'login_time'=>$login_time];
Cache::set('cache_login_data',$cache_login_data);
}
}else{
//当前时间内,该IP没有登陆过
$cache_login_data[count($cache_login_data)+1]=['login_ip'=>$login_ip,'login_time'=>$login_time];
Cache::set('cache_login_data',$cache_login_data);
}
}
}
}
请问php防止一个用户重复登录的问题php的做法:
只能在每个页面通常是config.php更新该用户最后一次点击页面的时间,
同时查询哪些用户20分钟还没有点击,则删除。
====================更新
表名:use_log
uid int
lastrefer timestamp
用户每次点击任何一个页面,都会更新这个表的lastrefer为最新时间。
同时查询lastrefer小于当前时间-20分钟的用户,视为已经退出的用户。
补充2:参见php.ini设置
补充3:就是在config.ini里面
if(用户登录){
$sql="update 表 set lastrefer=CURRENT_TIMESTAMP WHERE 用户=当前用户"
执行sql
}
补充4:你这15分真难挣
关于php禁止重复登录的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php禁止重复登录 php防止再次刷新的详细内容...