微信防刷票限制
一、判断上一级页面
通过http请求header中的refere,来判断投票操作的上级页面,可以防止直接发送请求来进行投票的部分自动投票软件。
/**
* 判断上一级页面
*/
if(!strpos($_SERVER['HTTP_REFERER'],'http://www.rainbowz.com/vote.php/Vote/index.html')){
$this->ajaxReturn("请从投票页面进入投票!");
}
二、判断是否在微信上操作
通过请求头部信息中的agent来判断打开的客户端。
/**
* 判断客户端信息
*/
if(!strpos($_SERVER['HTTP_USER_AGENT'],'MicroMessenger')){
$this->ajaxReturn("请在微信上进行投票!");
}
三、验证码
在投票的页面上添加验证码信息并加密,传递给后台,判断验证码是否一致。
1、在html中
<script type="text/javascript">
/**
* 请求验证码设置
*/
<?php
if(!isset($_SESSION['_chek_code'])){
$_SESSION['_chek_code']=$string.uuid();
}
?>
var _chek_code='<?php echo $_SESSION['_chek_code']; ?>';
</script>
2、在js中的投票方法中
function vote(){
/**
* 验证码
*/
var _check_code_salt='gzh@#$+==###7076**%$#';
var data={checkCode:$.md5(_chek_code+_check_code_salt)};
var url = './insertSingleVoteInfo';
$.ajax({
type: "POST",
url:url,
data:data,
success: function(dataMsg){
},
error:function(){
}
});
}
3、在后台controller中
/**
* 验证码
*/
$page_code=$_POST['checkCode'];
$_check_code_salt='gzh@#$+==###7076**%$#';
$server_code=md5($_SESSION['_chek_code'].$_check_code_salt);
if($page_code!==$server_code){
$this->ajaxReturn("验证码错误,请手动投票!");
// $this->ajaxReturn($server_code);
}
四、关注公众号方可投票
如果可以,微信用户验证的时候加上关注后方可投票也可判断用户的信息真伪
五、地域限制
通过获取IP来限制参与投票的用户IP地址为某一地域,仅适用于地区性的投票。