图形验证码实现(代码)
生活随笔
收集整理的這篇文章主要介紹了
图形验证码实现(代码)
小編覺得挺不錯(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框架
總結(jié)
以上是生活随笔為你收集整理的图形验证码实现(代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样把两个HTML合一起,将两个 PDF
- 下一篇: MTK 8127平台使用busybox