黄聪:URL推广系统防作弊
要实现的功能:
1、注册用户登录以后可以获取到个人私人唯一的一个推广链接,通过主动传播带来的注册用户全部计入该ID名下;
2、其中与该ID相同cookies或者同IP的注册量全部作为作弊处理(也就是说不计入该ID名下,被带来的新ID本身是没有影响的)
3、累计推广用户1人以上5人以下送E币若干(每人累计见表如下)
推广人数 E币
1人 300
2人 300
3人 300
4人 300
5人 300
下面是实现方法:
1、已登录状态生成推广链接并记录主推广id作为的cookie:
setcookie("friend_invite_check",$uid,time()+86400,"/");//生成推广链接后的checkcookie 防止同cookie注册
$invite = M("FriendInvite");
$re = $invite->where("uid = $uid")->find();
if(!$re){//没有数据则写入,生成推广链接。
$ip=get_client_ip();
$data['uid']=$uid;
$data['token']=md5($uid."http://hcsem.com");
$data['create_time']=time();
$data['cip']=$ip;
$res = $invite->add($data);
}
$ref = $invite->where("uid = $uid")->find();
//echo "<span style='display:none'>http://".$_SERVER["HTTP_HOST"].'/Jihuo/invite/uid/'.$uid.'/token/'.$ref['token']."</span>";
2、进入推广链接,进入后记录一个住推广id到friend_invite如果这一步没有成功后面的推广是无效滴,记录成功后,不管在哪一个入口注册都会记录到推广成功数据库:
public function invite(){
$input = new Input();
$token = $input->get('token');
$uid = $input->get('uid');
$uinfo =$this->uinfo();
$suid = $uinfo['id'];
//echo $uinfo['id'];
//9b3d8191bc595c18b90674be92cbb08c
//f331f65dd41b4cf79c3e4c95a76b3145
$invite = M("FriendInvite");
$re = $invite->where("uid = $uid")->find();
//dump($re);
if($re['token']!=$token) $this->error('来路不正确请检查!');
setcookie("friend_invite",$uid,time()+86400,"/");
//redirect("/Jihuo");
//$this->display('jihuoye:index');
$this->index();
}
注册成功后增加接口,判断用户状态写入到数据库:
1: 成功
2:和主推广同ip不同电脑
3:和住推广不同ip同电脑
4:和主推广同ip同电脑
5:已经通过推广注册过一次的人同电脑同ip
6:已经通过推广注册过一次的人同ip不同电脑
7:已经通过推广注册过一次的人不同ip同电脑。
public function friend_invite($sentid,$sendusername){
//$uid = $this->getUserinfo('id');
$uid = $_COOKIE['friend_invite'];//主推广id
if(!$uid){
return ;
}
import('ORG.Util.String');
$invite = M("FriendInvite");
$invitelist = M("FriendInviteList");
$chickid = $_COOKIE['friend_invite_check'];//本机登录id
$chickregid = $_COOKIE['friend_invite_check_reg'];
$ip=get_client_ip();
$re = $invite->where("uid = $uid")->find();
$rrrrid = $re['id'];//OID
$checktong = $invitelist->where("id = $chickregid and oid = $rrrrid")->find();//判断本机cookie是否已经通过推广注册过。
$checktip = $invitelist->where("byqip = '$ip' and oid = $rrrrid")->find();//判断已通过推广链接注册的重复注册。
if($re['cip']!=$ip){//不同ip的写入
$data['oid']=$re['id'];
$data['uid']=$sentid;//注册的id
$data['username']=$sendusername;
$data['byqip']=$ip;
$data['byqregtime']=time();
if($chickid!=$uid){//和住推广不同cookie
if($checktong && $checktip){//和主推广不同ip,不同cookie,如果有注册过
$data['status']=5;//已经通过推广注册过一次,同cookie 同ip
}else if($checktip && !$checktong){
$data['status']=6;//已经通过推广注册过一次,同ip 不同cookie
}else if($checktong && !$checktip){
$data['status']=7;//已经通过推广注册过一次,不同同ip 同cookie
}else{
$data['status']=1;
}
}else{
$data['status']=3;//和主推广,不同ip 同cookie
}
}else{
$data['oid']=$re['id'];
$data['uid']=$sentid;//注册的id
$data['username']=$sendusername;
$data['byqip']=$ip;
$data['byqregtime']=time();
if($chickid!=$uid){
$data['status']=2;//和主推广同ip不同cookie
}else{
$data['status']=4;//和主推广同ip同cookie
}
}
//dump($data);
$ll = $invitelist->add($data);
if($ll){//写入后更新主推广人信息
//$checkregid = $invitelist->where("id = $ll")->find();
setcookie("friend_invite_check_reg",$ll,time()+86400,"/");//生成推广链接后的checkcookie 防止同cookie注册重复注册
$count = $invitelist->where("status=1 and oid=$rrrrid")->count();
//echo $invitelist->getLastSql();
//exit;
//$count=7; test
if($count==3 && !$re['key']){
$randStr = String::randstring(16,5,'');
$data1['key']= $randStr;
$dkey['come_from']=1;
$dkey['promotion_code']=$randStr;
$dkey['code_create_time']=time();
$dkey['remark']="2测推广好友赠送";
M('ElectrumPromotion')->add($dkey);
}
$rel = $invite->where("id = $rrrrid")->find();
if($count > $rel['invite']){
if($count>0 && $count <=5){
$data1['electurm']=$rel['electurm']+300;
}else if($count>5 && $count <=10){
$data1['electurm']=$rel['electurm']+200;
}else if($count>10 && $count <=15){
$data1['electurm']=$rel['electurm']+150;
}else if($count>15 && $count <=20){
$data1['electurm']=$rel['electurm']+100;
}else if($count>20 && $count <=29){
$data1['electurm']=$rel['electurm']+50;
}else if($count==30){
$data1['electurm']=$rel['electurm']+1800;
}
$data1['invite']=$rel['invite']+1;
}
$data1['id']=$rrrrid;
$data1['lastupdatetime']=time();
$invite->save($data1);
//dump($count);
}
//dump($re);
//$data['']
}
黄聪:URL推广系统防作弊的更多相关文章
- 移动端推广APP防作弊机制之依我见
本文来自网易云社区 在广告投放过程中,虚假流量常常给广告运营人员带来麻烦,影响广告投放的效果,如何预防作弊,不妨先来重现一下流量产生的场景,用户点击广告之后,一般都会落到广告主的网页,或者安装广告主的 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图: 从上图我们可以 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(八) Unity Dependency Injection and Interception
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(八) Unity Dependency Injection and Interception 依赖注入容器Uni ...
- 黄聪:如何使用Add-on SDK开发一个自己的火狐扩展
火狐开放了扩展的开发权限给程序员们,相信很多人都会希望自己做一些扩展来方便一些使用. 我最近做一些项目也需要开发一个火狐扩展,方便收集自己需要的数据,因此研究了几天怎么开发,现在已经差不多完成了,就顺 ...
- IOS防作弊产品技术原理分析
由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: iPhone 6.系统版本 10.1.1IDA Pro 7.0 0x00:防作弊产品介绍 1.由于IOS系统的不 ...
- WEB系统防退出账户,回退主页问题(2020最新最有效的方式没有之一)
WEB系统防退出账户,回退主页问题(2020最新最有效的方式没有之一) 很多小伙伴在web开发中都遇倒的问题? JavaWeb项目注销后,可能存在通过浏览器缓存回退的方式进入主页系统 WEB项目 ...
- 黄聪:《跟黄聪学WordPress插件开发》
续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPr ...
- 黄聪:PHP使用Simple_HTML_DOM遍历、过滤及保留指定属性
<? /* * 参考资料: * http://www.phpddt.com/manual/simplehtmldom_1_5/manual_api.htm * http://www.phpddt ...
- 黄聪:《跟黄聪学WordPress主题开发》
又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库 ...
随机推荐
- codeforces 192e
link: http://codeforces.com/contest/330/problem/E /* ID: zypz4571 LANG: C++ TASK: 192e.cpp */ #inclu ...
- WindowsServer问题总结
1.System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志.不可访问的日志: Security.在安装的“回滚”阶段发生异常.将忽略该异常并继续回 ...
- C陷阱与缺陷 1
1,符号之间的空白被忽略 符号中间不能嵌入空白 2,词法分析中的贪心法 a---b 和 a-- -b相同 和 a- --b不同 1 a=b/*p //根据贪心法 /*被解释成 注释符,便不再往下读,直 ...
- 作业:用HTML制作简历
代码为: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- 《笨办法学Python》
习题一 第一个程序 print "Hello World!" print "Hello Evilxr" print "I like typing th ...
- oh-my-zsh的使用
一.自动安装wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh 二.配置文件~/. ...
- JS/JQuery控制图片宽度
function changeImgWidth(){ for (i = 0; i <$('#info img').length; i++) { var imgWidth=$('#info img ...
- about JNI
1.Java对C/C++事件处理的封装JIT(Just in Time.Java语言的原动态编译技术) 大多数的游戏引擎都是使用可移植的C语言开发的,然后通过简单的封装以适应特殊的平台. 2.Andr ...
- 对CSS居中的一点总结
在学习前端的过程中,发现元素和文本的水平居中和垂直居中,是经常会出现的问题,在实际工作中也会经常碰到.居中的技巧有很多,但在编写代码的过程中,发现有时候技巧管用,有时候不管用,于是就将每个知道的方案都 ...
- centos 6.4/redhat 6.4 安装gitlab
一,把所有包升级到最新版本 yum -y upgrade 二,安装最新版ruby 2.1.5 步骤http://my.oschina.net/duolus/blog/348353 三,安装官方给出的o ...