很多站长朋友们都不太清楚PHP控制重复登录,今天小编就来给大家整理PHP控制重复登录,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 请问php防止一个用户重复登录的问题 2、 php中如何防止重复登录?php中有没有类似struts2中application的东西? 3、 Thinkphp5防止某个IP多次登录的方法 4、 thinkphp添加用户禁止重复 5、 php如何限制登录次数 请问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中有没有类似struts2中application的东西?application php 中没有
我常用的方法是这个:
1、登陆状态通过 session 来记录
2、将 session 数据记录到数据库里面
3、登陆时候,检查session 库中是否已经登陆.这个地方你自己考虑如何判定
4、退出是清掉 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);
}
}
}
}
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如何限制登录次数每次登录失败,都记录该用户/IP的登录次数.
可以在用户表添加登录失败次数统计,最后一次登录时间(时间戳)的字段,每次登录成功,把登录失败次数置0.否则失败数次+1,到3次的时候,如果还错,则判断上次错误时间与本次登录时间的间隔.
如果要求严格,可以再记录IP.
==============
如果要防暴力猜密码,可加入验证码+IP验证,发现某IP连续猜密码达报警条件,则自动邮件或短信通知管理员,由管理员介入.
关于PHP控制重复登录的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于PHP控制重复登录 php重复开启session的详细内容...