当用户登录或者提交的时候为了防止用户重复提交可以增加限制登录次数来解决,一般使用cookie或者session来检测登录次数
以下为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();