av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

php+js實現的拖動滑塊驗證碼驗證表單操作示例【附源碼下載】

瀏覽:113日期:2022-09-10 10:56:06

本文實例講述了php+js實現的拖動滑塊驗證碼驗證表單操作。分享給大家供大家參考,具體如下:

現在很多網站,比如淘寶,京東等都改用使用極驗拖動驗證碼實現登錄,這種方式比傳統的驗證碼方式有更好的體驗,減少用戶輸入的錯誤,也同樣能起到防盜刷的功能。現在很多極驗都是第三方的,也很多都是收費的。今天在這里給大家分享自己用原生php實現的一個極驗的代碼。用原生php的好處就是以后你要嵌套到什么框架,可以直接用核心代碼,改一改就好了。

極驗拖動動畫圖

php+js實現的拖動滑塊驗證碼驗證表單操作示例【附源碼下載】

代碼文件截圖

php+js實現的拖動滑塊驗證碼驗證表單操作示例【附源碼下載】

代碼實現

html文件

<!DOCTYPE html><html lang=''><head> <meta charset='utf-8'> <meta http-equiv='x-ua-compatible' content='ie=edge'> <meta name='viewport' content='width=device-width, initial-scale=1'> <title>極驗滑塊拖動驗證碼-碼農社區-web視頻分享網</title> <script type='text/javascript' src='http://m.4tl426be.cn/bcjs/tn_code.js?v=35'></script> <link rel='stylesheet' type='text/css' href='http://m.4tl426be.cn/bcjs/style.css?v=27' rel='external nofollow' /><style type='text/css'></style></head><body style='text-align:center;'><div style='text-align: center;margin: 100px auto;'></div><script type='text/javascript'>$TN.onsuccess(function(){//驗證通過});</script>

php文件:check.php

<?phprequire_once dirname(__FILE__).’/TnCode.class.php’;$tn = new TnCode();if($tn->check()){ $_SESSION[’tncode_check’] = ’ok’; echo 'ok';}else{ $_SESSION[’tncode_check’] = ’error’; echo 'error';}?>

主要核心文件:TnCode.class.php

<?phpclass TnCode{ 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(); } } function make(){ $this->_init(); $this->_createSlide(); $this->_createBg(); $this->_merge(); $this->_imgout(); $this->_destroy(); } function check($offset=’’){ if(!$_SESSION[’tncode_r’]){ return false; } 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; } private function _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); } private function _destroy(){ imagedestroy($this->im); imagedestroy($this->im_fullbg); imagedestroy($this->im_bg); imagedestroy($this->im_slide); } private function _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); } private function _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 } private function _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); } private function _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相關內容感興趣的讀者可查看本站專題:《PHP圖形與圖片操作技巧匯總》、《PHP數組(Array)操作技巧大全》、《PHP數據結構與算法教程》、《php程序設計算法總結》、《PHP數學運算技巧總結》、《php字符串(string)用法總結》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
主站蜘蛛池模板: 久久艹av| 久久综合伊人 | 九一在线观看 | 日韩电影免费在线观看中文字幕 | 欧美一级片在线看 | 国产一区二区三区日韩 | 在线看片福利 | 日屁网站| 国产成人精品午夜视频免费 | av大全在线| 亚洲国产精品第一区二区 | 亚洲国产黄 | 欧美日韩国产综合在线 | 偷拍自拍网 | 亚洲一区二区三区四区五区中文 | 精品国产一区二区国模嫣然 | 一区二区三区影院 | 超黄视频网站 | 日本不卡一区二区三区在线观看 | 欧美一级电影免费观看 | 男人的天堂视频网站 | 欧美色综合 | 日韩精品免费在线 | 91文字幕巨乱亚洲香蕉 | 精品九九 | 中文字幕亚洲区一区二 | 欧美999 | 亚洲成人精品一区二区 | 一区二区三区四区不卡视频 | 国精品一区二区 | 成人亚洲精品久久久久软件 | 国产在线一区二区三区 | 久久久免费 | 91日日| 最新国产精品 | 国产精品毛片av一区 | 欧美成人影院在线 | 亚洲成人精品 | 操操操操操 | 国产一级一级国产 | 伊人色综合久久天天五月婷 |