微信防刷票限制

一、判断上一级页面

通过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地址为某一地域,仅适用于地区性的投票。

原文地址:https://www.cnblogs.com/rainbowz/p/7410524.html