Thinkphp5防止某个IP多次登录的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thinkphp5防止某个IP多次登录的方法相关的知识,希望对你有一定的参考价值。

参考技术A //昨天写的思路不对,重新写....

/**

*检查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);







以上是关于Thinkphp5防止某个IP多次登录的方法的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5怎么获取上次登录ip

ThinkPHP5防止非法登录

ubuntu 16.04防止SSH暴力登录攻击

ubuntu 16.04防止SSH暴力登录攻击

防止多次登录

防止多次登录