php限制注册频率,php如何限制某个ip提交的次数

当用户登录或者提交的时候为了防止用户重复提交可以增加限制登录次数来解决,一般使用cookie或者session来检测登录次数

4faa46b0a9e45317c13502b2c1479c01.png

以下为session方法,最大提交次数 $max ,登录天数 $day

由于session存在唯一性,所以我们把该用户的session设置为$_SESSION['login_'.$ip],来判断唯一性,当然session如果多了的话还需要经常清理无用的session,防止服务器卡顿,占用硬盘空间等问题

session_start();//启动session

function checktimes($max = 3, $day = 1)

{

$ip = $_SERVER["REMOTE_ADDR"]; //获取当前用户ip

$time = time(); //获取当前时间

$times = 1; //表单提交次数,初始为1次

if (!isset($_SESSION['login_' . $ip]['times']) ) {

$arr = ['ip' => $ip, 'time' => $time, 'times' => $times ];

$_SESSION['login_'.$ip]=$arr;

} else {

if ($_SESSION['login_' . $ip]['times'] > $max &&(time() - $_SESSION['login_' . $ip]['time']) / 86400 < $day ) {

echo "您今日提交次数过多!";exit;

} else {

$_SESSION['login_' . $ip]['times'] = $_SESSION['login_' . $ip]['times'] + 1;

echo '已经提交第:'.$_SESSION['login_' . $ip]['times'] .'次';exit;

}

}

}

checktimes();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值