PHP防止多次请求刷红包的方法$signarray=array();
$signarray['name']='wefwf';
$time=time();
$signarray['time']=$time;
$signarray['phone']='wef';
$signcreate=$this->str_encrypt($signarray);
$this->assign('time', $time);
$this->assign('signcreate', $signcreate);
$this->display();
//测试是不是能重复请求接口
public function signverifytest(){
$issign=$this->verify($_POST);
if(!$issign){
echo json_encode(array('success'=>0,'msg'=>'签名验证失败','data'=>''));
exit();
}else{
echo json_encode(array('success'=>0,'msg'=>'签名验证成功','data'=>''));
exit();
}
}
//签名验证
public function verify($parameters)
{
//如果sign不一致 签名失败
if ($parameters['sign'] != $this->str_encrypt($parameters)) {
return 0;
} else {
return 1;
}
}
//新版加密
public function str_encrypt($parameters)
{
unset($parameters['sign']);
$parameters['key']='mykey';
ksort($parameters);
$signPars = $this->url_build($parameters);
$signPars=trim($signPars,'&');
return strtolower(md5($signPars));
}
//新版字符串拼接
public function url_build($parameters)
{
$signPars = '';
foreach ($parameters as $k => $v) {
if (isset($v)) {
$signPars .= $k . '=' . $v . '&';
}
}
return $signPars;
}
ps:主要是利用 看不到PHP代码 所以自然看不到time和sign的生成算法 所以就防止了刷红包
查看原文:http://newmiracle.cn/?p=1085