亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

關于php click captcha 驗證碼類的介紹

2020-03-22 18:39:58
字體:
來源:轉載
供稿:網友
需求:

現在常用的表單驗證碼大部分都是要用戶輸入為主,但這樣對手機用戶會不方便。

如果手機用戶訪問,可以不用輸入,而是click某一位置便可確認驗證碼,這樣就會方便很多。

原理:

1.使用PHP imagecreate創建PNG圖象,在圖中畫N個圓弧,其中一個是完整的圓(驗證用),將圓心坐標及半徑記錄入session。

2.在瀏覽器,當用戶在驗證碼圖片上點擊時,記錄點擊的位置。

3.將用戶點擊的坐標與session記錄的圓心坐標、半徑比較,判斷是否在圓中,如是則驗證通過。


ClickCaptcha.html' target='_blank'>class.php

<?php/** Click Captcha 驗證碼類*   Date:   2013-05-04*   Author: fdipzone*   Ver:    1.0*/class ClickCaptcha { // class start    public $sess_name = 'm_captcha';    public $width = 500;    public $height = 200;    public $icon = 5;    public $iconColor = array(255, 255, 0);    public $backgroundColor = array(0, 0, 0);    public $iconSize = 56;    private $_img_res = null;    public function __construct($sess_name=''){        if(session_id() == ''){            session_start();        }        if($sess_name!=''){            $this->sess_name = $sess_name; // 設置session name        }    }    /** 創建驗證碼 */    public function create(){        // 創建圖象        $this->_img_res = imagecreate($this->width, $this->height);                // 填充背景        ImageColorAllocate($this->_img_res, $this->backgroundColor[0], $this->backgroundColor[1], $this->backgroundColor[2]);        // 分配顏色        $col_ellipse = imagecolorallocate($this->_img_res, $this->iconColor[0], $this->iconColor[1], $this->iconColor[2]);        $minArea = $this->iconSize/2+3;        // 混淆用圖象,不完整的圓        for($i=0; $i<$this->icon; $i++){            $x = mt_rand($minArea, $this->width-$minArea);            $y = mt_rand($minArea, $this->height-$minArea);            $s = mt_rand(0, 360);            $e = $s + 330;            imagearc($this->_img_res, $x, $y, $this->iconSize, $this->iconSize, $s, $e, $col_ellipse);                    }        // 驗證用圖象,完整的圓        $x = mt_rand($minArea, $this->width-$minArea);        $y = mt_rand($minArea, $this->height-$minArea);        $r = $this->iconSize/2;        imagearc($this->_img_res, $x, $y, $this->iconSize, $this->iconSize, 0, 360, $col_ellipse);                // 記錄圓心坐標及半徑        $this->captcha_session($this->sess_name, array($x, $y, $r));        // 生成圖象        Header("Content-type: image/PNG");        ImagePNG($this->_img_res);        ImageDestroy($this->_img_res);        exit();    }    /** 檢查驗證碼    * @param String $captcha  驗證碼    * @param int    $flag     驗證成功后 0:不清除session 1:清除session    * @return boolean    */    public function check($captcha, $flag=1){        if(trim($captcha)==''){            return false;        }                if(!is_array($this->captcha_session($this->sess_name))){            return false;        }        list($px, $py) = explode(',', $captcha);        list($cx, $cy, $cr) = $this->captcha_session($this->sess_name);        if(isset($px) && is_numeric($px) && isset($py) && is_numeric($py) &&             isset($cx) && is_numeric($cx) && isset($cy) && is_numeric($cy) && isset($cr) && is_numeric($cr)){            if($this->pointInArea($px,$py,$cx,$cy,$cr)){                if($flag==1){                    $this->captcha_session($this->sess_name,'');                }                return true;            }        }        return false;    }    /** 判斷點是否在圓中    * @param int $px  點x    * @param int $py  點y    * @param int $cx  圓心x    * @param int $cy  圓心y    * @param int $cr  圓半徑    * sqrt(x^2+y^2)<r    */    private function pointInArea($px, $py, $cx, $cy, $cr){        $x = $cx-$px;        $y = $cy-$py;        return round(sqrt($x*$x + $y*$y))<$cr;    }    /** 驗證碼session處理方法    * @param   String   $name    captcha session name    * @param   String   $value    * @return  String    */    private function captcha_session($name,$value=null){        if(isset($value)){            if($value!==''){                $_SESSION[$name] = $value;            }else{                unset($_SESSION[$name]);            }        }else{            return isset($_SESSION[$name])? $_SESSION[$name] : '';        }    }} // class end?>

demo.php

<?phpsession_start();require('ClickCaptcha.class.php');if(isset($_GET['get_captcha'])){ // get captcha    $obj = new ClickCaptcha();    $obj->create();    exit();}if(isset($_POST['send']) && $_POST['send']=='true'){ // submit    $name = isset($_POST['name'])? trim($_POST['name']) : '';    $captcha = isset($_POST['captcha'])? trim($_POST['captcha']) : '';    $obj = new ClickCaptcha();    if($obj->check($captcha)){        echo 'your name is:'.$name;    }else{        echo 'captcha not match';    }    echo ' <a href="demo.php">back</a>';}else{ // html?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head>  <meta http-equiv="content-type" content="text/html; charset=utf-8">  <title> Click Captcha Demo </title>  <script type="text/javascript" src="jquery-1.6.2.min.js"></script>  <script type="text/javascript">    $(function(){        $('#captcha_img').click(function(e){            var x = e.pageX - $(this).offset().left;            var y = e.pageY - $(this).offset().top;            $('#captcha').val(x+','+y);        })        $('#btn').click(function(e){            if($.trim($('#name').val())==''){                alert('Please input name!');                return false;            }            if($.trim($('#captcha').val())==''){                alert('Please click captcha!');                return false;            }            $('#form1')[0].submit();        })    })  </script> </head> <body>    <form name="form1" id="form1" method="post" action="demo.php" onsubmit="return false">    <p>name:<input type="text" name="name" id="name"></p>    <p>Captcha:Please click full circle<br><img id="captcha_img" src="demo.php?get_captcha=1&t=<?=time() ?>" style="cursor:pointer"></p>    <p><input type="submit" id="btn" value="submit"></p>    <input type="hidden" name="send" value="true">    <input type="hidden" name="captcha" id="captcha">    </form> </body></html><?php } ?>

本篇文章講解了關于php click captcha 驗證碼類的介紹,更多相關內容請關注 。

相關推薦:

關于HTML5 history API 的介紹

關于冒泡,二分法插入,快速排序算法的介紹

講解php 支持斷點續傳的文件下載類的相關內容

以上就是關于php click captcha 驗證碼類的介紹的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品福利资源站| 亚洲男人天堂网站| 欧美最猛性xxxxx免费| 国产区亚洲区欧美区| 欧美在线视频播放| 国产亚洲欧美日韩美女| 超碰91人人草人人干| 九九热这里只有在线精品视| 久久久免费精品视频| 久久久久中文字幕| 久久国产精品影视| 国产91色在线| 久久伊人精品视频| 亚洲国产中文字幕久久网| 中文字幕一精品亚洲无线一区| 欧美—级a级欧美特级ar全黄| 亚洲欧美精品suv| 岛国av一区二区三区| 97超碰蝌蚪网人人做人人爽| 日本精品免费观看| 久久久噜久噜久久综合| 欧美乱妇高清无乱码| 1769国产精品| 国产亚洲欧美日韩一区二区| 国产精品人成电影在线观看| 久久99精品久久久久久青青91| 91影视免费在线观看| 国内精品久久久久影院 日本资源| 综合激情国产一区| 欧美日韩一区二区精品| 国产日韩欧美黄色| 91精品国产精品| 国产精品国语对白| 亚洲自拍偷拍福利| 成人啪啪免费看| 国产精品福利在线观看| 国产精品777| 91沈先生作品| 久久福利网址导航| 成年人精品视频| 久久久久久久久国产精品| 午夜精品蜜臀一区二区三区免费| 欧美理论在线观看| 久久久久久高潮国产精品视| 中文字幕日韩av综合精品| 精品国内产的精品视频在线观看| 一本一道久久a久久精品逆3p| 神马久久久久久| 中文字幕久热精品视频在线| 欧美高清视频免费观看| 日韩av电影在线播放| 色99之美女主播在线视频| 欧美尤物巨大精品爽| 亚洲欧美国产精品久久久久久久| 69av视频在线播放| 日本精品久久电影| 亚洲欧美日韩视频一区| 久久99热这里只有精品国产| 日韩免费视频在线观看| 亚洲精品在线观看www| 成人在线一区二区| 伊人亚洲福利一区二区三区| 亚洲欧美精品伊人久久| 欧美精品生活片| 亚洲乱码国产乱码精品精| 精品国产乱码久久久久酒店| 久久久久久久久中文字幕| 欧美在线免费看| 7m第一福利500精品视频| 亚洲免费小视频| 国产亚洲精品一区二区| 国产成人精品久久二区二区91| 国产日产久久高清欧美一区| 国产精品美女免费视频| 欧美精品久久久久久久久久| 欧美最猛性xxxxx(亚洲精品)| 日韩欧美国产中文字幕| 一区二区成人av| 国产精品自在线| 久久久国产精品亚洲一区| 欧美视频精品一区| 国产精品视频1区| 久久久亚洲影院你懂的| 国产香蕉97碰碰久久人人| 亚洲国产高清高潮精品美女| 国产精品青草久久久久福利99| 久久久久久久久久国产精品| 自拍亚洲一区欧美另类| 毛片精品免费在线观看| 国产视频欧美视频| 久久99视频免费| 欧美放荡办公室videos4k| 美女扒开尿口让男人操亚洲视频网站| 成人在线观看视频网站| 精品国内亚洲在观看18黄| 亚洲91精品在线| 欧美日韩国产成人在线观看| 自拍偷拍亚洲区| 欧美日韩精品二区| 日韩三级影视基地| 久久黄色av网站| 久久精品视频在线观看| 色婷婷久久av| 日韩精品久久久久久久玫瑰园| 亚洲精品v欧美精品v日韩精品| 精品色蜜蜜精品视频在线观看| 亚洲性av网站| 亚洲男人天堂古典| 久久久精品免费视频| 成人久久精品视频| 亚洲欧美制服另类日韩| 青青草成人在线| 久久久免费高清电视剧观看| 久久777国产线看观看精品| 国产一区二区三区直播精品电影| 色www亚洲国产张柏芝| 色777狠狠综合秋免鲁丝| 55夜色66夜色国产精品视频| 91国产精品视频在线| 高清一区二区三区日本久| 91久久久久久国产精品| 国产亚洲精品美女久久久久| 欧美高清性猛交| 欧美日韩国产精品一区二区不卡中文| 色婷婷**av毛片一区| 亚洲日本欧美日韩高观看| 亚洲激情在线观看| 福利视频第一区| 亚洲在线观看视频| 国内免费久久久久久久久久久| 在线日韩精品视频| 亚洲黄一区二区| 国产mv久久久| 亚洲欧美国产精品专区久久| 亚洲第一视频在线观看| 51精品国产黑色丝袜高跟鞋| 久久人人看视频| 国产精品久久久久免费a∨| 97视频在线观看网址| 午夜精品一区二区三区视频免费看| 日本一区二区三区在线播放| 欧美日本精品在线| 亚洲欧美日韩国产成人| 国产主播喷水一区二区| 最近免费中文字幕视频2019| 美女性感视频久久久| 亚洲男人的天堂网站| 狠狠干狠狠久久| 欧美—级a级欧美特级ar全黄| 国产日韩av在线播放| 不卡在线观看电视剧完整版| 欧美激情乱人伦一区| 精品国产精品自拍| 亚洲丝袜av一区| 日韩成人高清在线| 久久久国产影院| 国产又爽又黄的激情精品视频| 中文字幕在线精品| 国产精品成人aaaaa网站| 91热福利电影| 成人黄色片网站| 欧美日韩在线视频观看| 色伦专区97中文字幕| 91sao在线观看国产|