黄聪: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数据库 ...
随机推荐
- AndroidStudio用微信官方方法接入微信分享功能
转载请注明出处:http://www.cnblogs.com/wangoublog/p/5367950.html 现在微信的功能众所周知,用户量.影响力也是惊人,很多应用接入微信的功能已成为一种不可缺 ...
- MATLAB符号运算
1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x;>> expand((x+3)^3) ans ...
- PHP 页面自动刷新可借助JS来实现,简单示例如下:
<?php echo "系统当前时间戳为:"; echo ""; echo time(); //<!--JS 页面自动刷新 --> echo ...
- spark-scheduled调度算法
1.3源码是如此,后面新版本源码会尽可能的根据用户shell配置的参数进行分配 1.spareadOutApps 尽可能分配到多的机器上面execute和CPU core 2.非spareadouta ...
- UVA10305 拓扑序
题意:给出多个任务,以及一系列任务的关系表示某个任务必须在某个任务前完成,问一个合理的任务完成顺序 拓扑序的裸题,一开始用大白书的写法,后来发现并不好用,就换了BFS又A了一遍. 原: #includ ...
- Oracle学习系列2
SQL语法练习: 1,选择部门30中的所有员工 select * from emp where deptno=30; 2,列出办事员的姓名,编号和部门编号 select ename, empno, d ...
- 关于VC、MFC和ACCESS的一些使用问题
最近在用VC.MFC和ACCESS开发一些小工具. 由于操作系统和开发工具以及数据库版本都升级了,和当年有一些区别了(我这是有多老了--fuck--),遇到一些问题,贴在下面: 1,用什么连接AC ...
- 正则表达式 ——python 基础
一.引言 正则表达式是含有文本和特别字符的字符串,这些文本和特别字符描述的模式可以识别各种字符串. 正则表达式的强大之处在于特殊符号的应用,特殊符号定义了字符集合.子组匹配,模式重复次数...正是这些 ...
- Python学习笔记——文件
1.文件只是连续的字节序列 open()内建函数是打开文件之门的钥匙 file_obj=open(file_name,access_mode='r/w/a,' buffering=-1) file_n ...
- C#→关于System.Data.Linq下的Table<TEntity> 泛型类 的问题
Table<TEntity>表示表格记录,它是一个泛型集合类,它的元素就是表格实体对象.它提供一组方法,对元素进行添加删除操作,并可以通过DataContext将这些操作保存到数据库. 表 ...