日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

图形验证码实现(代码)

發(fā)布時(shí)間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图形验证码实现(代码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

圖形驗(yàn)證碼類:

<?php namespace app\common\services\captcha; /** 驗(yàn)證碼類* */class ValidateCode {private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//隨機(jī)因子private $code;//驗(yàn)證碼private $codelen = 4;//驗(yàn)證碼長(zhǎng)度private $width = 100;//寬度private $height = 37;//高度private $img;//圖形資源句柄private $font;//指定的字體private $fontsize = 28;//指定字體大小private $fontcolor;//指定字體顏色//構(gòu)造方法初始化public function __construct( $path ) {$this->font = $path;//注意字體路徑要寫對(duì),否則顯示不了圖片}//生成隨機(jī)碼private function createCode() {$_len = strlen($this->charset)-1;for ($i=0;$i<$this->codelen;$i++) {$this->code .= $this->charset[mt_rand(0,$_len)];}}//生成背景private function createBg() {$this->img = imagecreatetruecolor($this->width, $this->height);$color = imagecolorallocate($this->img, 255, 255,255);imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);}//生成文字private function createFont() {$_x = $this->width / $this->codelen;for ($i=0;$i<$this->codelen;$i++) {$this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);}}//生成線條、雪花private function createLine() {//線條for ($i=0;$i<6;$i++) {$color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);}//雪花for ($i=0;$i<100;$i++) {$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);}}//輸出private function outPut() {header('Content-type:image/png');imagepng($this->img);imagedestroy($this->img);}//對(duì)外生成public function doimg() {$this->createBg();$this->createCode();//$this->createLine();$this->createFont();$this->outPut();}//獲取驗(yàn)證碼public function getCode() {return strtolower($this->code);} }

實(shí)例:
基于Yii2框架

后端 <?php namespace app\controllers use use app\common\services\captcha\ValidateCode; class DefaultController {public function actionImg_captcha(){$font_path = \Yii::$app->getBasePath()."/web/fonts/captcha.ttf";//加載字體文件$captcha_handle = new ValidateCode( $font_path );//實(shí)例化驗(yàn)證碼類$captcha_handle->doimg();//生成驗(yàn)證碼} } 前端 <img src="<?=/default/img_captcha"?>" onclick="this.src='/default/img_captcha?'+Math.random();"/>

總結(jié)

以上是生活随笔為你收集整理的图形验证码实现(代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。