PHP Redis Session限制单用户的访问次数[附件]

发表于 : 2017-10-04   · CC BY-NC-SA 4.0 ·   1415 人浏览

本人测试系统: CentOS Linux 7.4.1708 (Core)  Apache 2.4  PhP7.1

function  frequent ($seconds,$counting,$jump){
	$redis=new Redis();                   // Redis 实例
	$redis->connect ('127.0.0.1',6379);   //连接本地的 Redis 服务
	session_start();                      //初始SESSION
	$key=isset($_SESSION['r_key']) ? $_SESSION['r_key'] : null; //首次是空值
	$check=$redis->exists ($key);         //检查 $key 是否存在
	if ($check){                          //首次 不存在
		$redis->incr ($key);              //首次$key不存在初始数字值0,Incr将$key数字值+1
		$count=$redis->get ($key);         //取 $key 数字值
		if ($count>$counting){              //expire时间内 可用次数$counting 
			Header ("Location: ".$jump);    //$counting次数用完 $jump跳转地址
			exit ;
		}
	}else {
		unset($_SESSION["r_key"]);        //清除SESSION r_key
		$_SESSION['r_key']=random (2);    //SESSION r_key赋值随机12位字符串
		$key=$_SESSION['r_key'];
		$redis->incr ($key);              //首次$key不存在初始数字值0,Incr将$key数字值+1
		$redis->expire ($key,$seconds);   //expire将 $key存在$seconds秒 后 $key自动删除
	}
}

//30秒内 可以浏览10次 否则跳转到http://er.hak.red/101/
frequent(30,10,'http://er.hak.red/101/');
random (2); //随机12位字符串 Random函数地址
源码附件 -> 源码下载
PHP Redis 限制访问 Session 单用户