如何使用php+js实现极验,拖动滑块验证码验证表单
这篇文章给大家分享的是有关如何使用php+js实现极验,拖动滑块验证码验证表单的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联主要从事做网站、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务克拉玛依,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
代码实现
html文件
$TN.onsuccess(function(){
//验证通过
});
php文件:check.php
require_oncedirname(__FILE__).'/TnCode.class.php';
$tn=newTnCode();
if($tn->check()){
$_SESSION['tncode_check']='ok';
echo"ok";
}else{
$_SESSION['tncode_check']='error';
echo"error";
}
?>
主要核心文件:TnCode.class.php
classTnCode
{
var$im=null;
var$im_fullbg=null;
var$im_bg=null;
var$im_slide=null;
var$bg_width=240;
var$bg_height=150;
var$mark_width=50;
var$mark_height=50;
var$bg_num=6;
var$_x=0;
var$_y=0;
//容错象素越大体验越好,越小破解难道越高
var$_fault=3;
function__construct(){
//ini_set('display_errors','On');
//
error_reporting(0);
if(!isset($_SESSION)){
session_start();
}
}
functionmake(){
$this->_init();
$this->_createSlide();
$this->_createBg();
$this->_merge();
$this->_imgout();
$this->_destroy();
}
functioncheck($offset=''){
if(!$_SESSION['tncode_r']){
returnfalse;
}
if(!$offset){
$offset=$_REQUEST['tn_r'];
}
$ret=abs($_SESSION['tncode_r']-$offset)<=$this->_fault;
if($ret){
unset($_SESSION['tncode_r']);
}else{
$_SESSION['tncode_err']++;
if($_SESSION['tncode_err']>10){//错误10次必须刷新
unset($_SESSION['tncode_r']);
}
}
return$ret;
}
privatefunction_init(){
$bg=mt_rand(1,$this->bg_num);
$file_bg=dirname(__FILE__).'/bg/'.$bg.'.png';
$this->im_fullbg=imagecreatefrompng($file_bg);
$this->im_bg=imagecreatetruecolor($this->bg_width,$this->bg_height);
imagecopy($this->im_bg,$this->im_fullbg,0,0,0,0,$this->bg_width,$this->bg_height);
$this->im_slide=imagecreatetruecolor($this->mark_width,$this->bg_height);
$_SESSION['tncode_r']=$this->_x=mt_rand(50,$this->bg_width-$this->mark_width-1);
$_SESSION['tncode_err']=0;
$this->_y=mt_rand(0,$this->bg_height-$this->mark_height-1);
}
privatefunction_destroy(){
imagedestroy($this->im);
imagedestroy($this->im_fullbg);
imagedestroy($this->im_bg);
imagedestroy($this->im_slide);
}
privatefunction_imgout(){
if(!$_GET['nowebp']&&function_exists('imagewebp')){//优先webp格式,超高压缩率
$type='webp';
$quality=40;//图片质量0-100
}else{
$type='png';
$quality=7;//图片质量0-9
}
header('Content-Type:image/'.$type);
$func="image".$type;
$func($this->im,null,$quality);
}
privatefunction_merge(){
$this->im=imagecreatetruecolor($this->bg_width,$this->bg_height*3);
imagecopy($this->im,$this->im_bg,0,0,0,0,$this->bg_width,$this->bg_height);
imagecopy($this->im,$this->im_slide,0,$this->bg_height,0,0,$this->mark_width,$this->bg_height);
imagecopy($this->im,$this->im_fullbg,0,$this->bg_height*2,0,0,$this->bg_width,$this->bg_height);
imagecolortransparent($this->im,0);//16777215
}
privatefunction_createBg(){
$file_mark=dirname(__FILE__).'/img/mark.png';
$im=imagecreatefrompng($file_mark);
header('Content-Type:image/png');
//imagealphablending($im,true);
imagecolortransparent($im,0);//16777215
//imagepng($im);exit;
imagecopy($this->im_bg,$im,$this->_x,$this->_y,0,0,$this->mark_width,$this->mark_height);
imagedestroy($im);
}
privatefunction_createSlide(){
$file_mark=dirname(__FILE__).'/img/mark2.png';
$img_mark=imagecreatefrompng($file_mark);
imagecopy($this->im_slide,$this->im_fullbg,0,$this->_y,$this->_x,$this->_y,$this->mark_width,$this->mark_height);
imagecopy($this->im_slide,$img_mark,0,$this->_y,0,0,$this->mark_width,$this->mark_height);
imagecolortransparent($this->im_slide,0);//16777215
//header('Content-Type:image/png');
//imagepng($this->im_slide);exit;
imagedestroy($img_mark);
}
感谢各位的阅读!关于“如何使用php+js实现极验,拖动滑块验证码验证表单”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
本文名称:如何使用php+js实现极验,拖动滑块验证码验证表单
本文网址:http://cdiso.cn/article/ggohjj.html