里面有兩個(gè)方法,分別是用內(nèi)置字體和自定義字體生成驗(yàn)證碼。
<?php /** * 驗(yàn)證碼生成類 * @example * $pic = new uImage(); * $code = $pic->getVerifyCode(); * header("Content-type:image/png"); * $pic->captchaFromFont($font='RAVIE.TTF'); or $pic->captcha(); */ class uImage { /** * 驗(yàn)證碼字符 * @access protected */ protected $code; /** * 生成圖片驗(yàn)證碼,直接輸出的是圖片,字體大小是內(nèi)置字體,最大是5 * @access public * @param int $width 驗(yàn)證碼圖片寬度 * @param int $height 驗(yàn)證碼圖片的高度 * @param int $snow 背景雪花的數(shù)量 * @param int $line 干擾線的條數(shù) */ public function captcha($width=100, $height=30, $snow=80, $line=3) { $pic = imagecreatetruecolor($width, $height); $backageColor = imagecolorallocate($pic, 0xFF, 0xFF, 0xFF); imagefill($pic, 0, 0, $backageColor); //打雪花 for($i=0; $i<=$snow;$i++) { $color = imagecolorallocate($pic, mt_rand(150, 230), mt_rand(150, 230), mt_rand(150, 230)); imagechar($pic, 1, mt_rand(0, $width), mt_rand(0, $height), "*", $color); imagecolordeallocate ($pic, $color); } //畫(huà)干擾線 for($i=0; $i<=$line; $i++) { $x1 = mt_rand(2, $width * 0.2); $x2 = mt_rand($width * 0.8, $width - 2); $y1 = mt_rand(2, $height - 2); $y2 = mt_rand(2, $height - 2); $color = imagecolorallocate($pic, mt_rand(130, 250), mt_rand(130, 250), mt_rand(130, 250)); imageline($pic, $x1, $y1, $x2, $y2, $color); imagecolordeallocate ($pic, $color); } //畫(huà)字符 $code = $this->code; $eachW = $width / strlen($code); //圖片依據(jù)字符個(gè)數(shù)分配等份數(shù) $fontWidth = imagefontwidth(5); //取得字體寬度 $fontHeight = imagefontheight(5); //取得字體高度 for($i=0; $i<strlen($code);$i++) { $color = imagecolorallocate($pic, mt_rand(30, 155), mt_rand(30, 155), mt_rand(30, 150)); $x = mt_rand($eachW * $i, $eachW * ($i+1)-$fontWidth); $y = mt_rand(3, $height-$fontHeight); imagechar($pic, 5, $x, $y, $code{$i}, $color); //水平畫(huà)字符 imagecolordeallocate ($pic, $color); } //輸出 ob_start(); ob_clean(); imagepng($pic); imagedestroy($pic); } /** * 根據(jù)自定義字體生成驗(yàn)證碼 * @access public * @param string $font 字符文件, TrueType 字體文件,.ttf字體 * @param int $fontWeight 字符大小 * @param int $width 圖片寬 * @param int $height 圖片高 * @param int $snow 背景雪花個(gè)數(shù) * @param int $line 干擾線條數(shù) * @param int $padding 圖片內(nèi)邊距 */ public function captchaFromFont($font, $fontWeight=16, $width=100, $height=30, $snow=80, $line=3, $padding=3){ if(!isset($font)){ return false; } $pic = imagecreatetruecolor($width, $height); $backageColor = imagecolorallocate($pic, 0xFF, 0xFF, 0xFF); imagefill($pic, 0, 0, $backageColor); imagecolordeallocate ($pic, $backageColor); //打雪花 for($i=0; $i<=$snow;$i++) { $color = imagecolorallocate($pic, mt_rand(150, 230), mt_rand(150, 230), mt_rand(150, 230)); imagechar($pic, 1, mt_rand(0, $width), mt_rand(0, $height), "*", $color); imagecolordeallocate ($pic, $color); } //畫(huà)干擾線 for($i=0; $i<=$line; $i++) { $x1 = mt_rand(2, $width * 0.2); $x2 = mt_rand($width * 0.8, $width - 2); $y1 = mt_rand(2, $height - 2); $y2 = mt_rand(2, $height - 2); $color = imagecolorallocate($pic, mt_rand(130, 250), mt_rand(130, 250), mt_rand(130, 250)); imageline($pic, $x1, $y1, $x2, $y2, $color); imagecolordeallocate ($pic, $color); } //畫(huà)字符 $code = $this->code; $eachW = $width / strlen($code); //圖片依據(jù)字符個(gè)數(shù)分配等份數(shù) $codeArray = str_split($code); for($i=0; $i<count($codeArray); $i++){ //取得字符寬高 $fontbox = imagettfbbox($fontWeight, 0, $font, $codeArray[$i]); $fontWidth = $fontbox[2] - $fontbox[0]; $fontHeight = $fontbox[1] - $fontbox[7]; $color = imagecolorallocate($pic, mt_rand(30, 155), mt_rand(30, 155), mt_rand(30, 150)); //字符顏色 $angle = mt_rand(-20, 20); //字符角度 if($i==0){ $start = $eachW * $i+$padding; $end = $eachW * ($i+1)-$fontWidth; } elseif($i == count($codeArray)){ $start = $eachW * $i; $end = $eachW * ($i+1)-$fontWidth-$padding; } else{ $start = $eachW * $i; $end = $eachW * ($i+1)-$fontWidth-$padding; } $x = $start < $end ? mt_rand($start, $end) : $start; $y = ($fontHeight+$padding) > $height ? $padding : mt_rand($fontHeight+$padding, $height-$padding); imagettftext($pic, $fontWeight, $angle, $x, $y, $color, $font, $codeArray[$i]); //用 TrueType 字體向圖像寫入文本 imagecolordeallocate ($pic, $color); } //輸出 ob_start(); ob_clean(); imagepng($pic); imagedestroy($pic); } /** * 獲取驗(yàn)證碼 * @access public * @param int $len 驗(yàn)證碼字符的長(zhǎng)度 * @return strint 生成的驗(yàn)證碼字符 */ public function getVerifyCode($len=4){ if(!isset($this->code)){ $this->code = $this->getCode($len); } return $this->code; } /** * 生成驗(yàn)證碼 * @access protected * @param int $len 驗(yàn)證碼字符的長(zhǎng)度 * @return strint 生成的驗(yàn)證碼字符 */ protected function getCode($len) { $str = "23456789abcdefghijklmnqrstuvwxyz"; $code = ""; for($i=0; $i<$len; $i++) { $code .= $str{mt_rand(0, strlen($str)-1)}; } $this->code = $code; return $code; } }
?以上就是PHP驗(yàn)證碼類的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(www.miracleart.cn)!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ?? ??? ??? ?? JavaScript? MediareCorder API? ?? PHP ???? ???? ?????. 2. PHP? ???? ?? ??? ???? STTAPI (? : Google ?? Baidu ?? ??)? ???? ???? ?????. 3. PHP? ???? AI ??? (? : OpenAigpt)? ????. 4. ?? ?? PHP? TTSAPI (? : Baidu ?? Google ?? ??)? ???? ??? ?? ??? ?????. 5. PHP? ?? ??? ??? ??? ??? ?? ?? ??? ?????. ?? ????? PHP? ?? ???? ?? ?? ?? ??? ??? ?????.

PHP?? ?? ?? ??? ???? ?? ??? ? ???? ?? ??? ???? ?? ??? ???? ???? ????. 1. ?? ?? ??? ?? ??? URL ? ?? ??? ????. 2. UrlenCode? ???? ?? ??? ???????. 3. ? ???? ????? ?? ?? ??? ? ?? ??? ?????. 4. ???? ???? ?? ? ? ??? ??? ??? ??? ?????. 5. ??? ?? ??? ????? ?? ????? OG ??? ???? ?????. 6. XSS ??? ???? ?? ??? ??? ?????. ? ???? ??? ??? ???? ??? ?? ?? ??? ??? ???? ??? ?? ??? ?????.

AI? ??? ??? ?? ?? ? ?? ???? ????? ?? ??? ??????. 1. Baidu, Tencent API ?? ?? ?? NLP ?????? ?? ??? AI ?? ?? API? ??????. 2. PHP? ? ?? guzzle? ?? API? ???? ?? ??? ??????. 3. ?? ????? ?? ?? ??? ???? ???? ???? ??? ??? ? ????. 4. ?? ?? ? ?? ???? ?? PHP-L ? PHP_CODESNIFFER? ??????. 5. ???? ????? ???? ?? ?? ??? ?????? ??? ??????. AIAPI? ??? ? ???, ?? ??, ?? ? PHP ?? ??? ??? ???. ?? ???? PSR ??? ???, ??? ????? ????, ?? ??? ???, ????? ??? ????, X? ???????.

1. ?? ???? ??? ??? ?????? ?? ?? ??? ??, ??? ?? ???? ??? (? : ?? ???, ? ? ??), ?? ??? ?? ???? ???? ? ?? ?? ??? ??? ?? ??? ????????. 2. ?? ??? ??? ?? ? ??? ???? ?? ?? ?? ???? ?? ? ?? AUDIT ?? ??? ??? ? ????? ????? ??? ???????. 3. ?? ?? ??? ?? ??? ???????. Recaptchav3 ???? ??, ??? ?? ?? ?? ?? ??, IP ? ?? ??? ??? ??? ?? ???? ??? ?? ??? ????? ??? ???? ????? ??? ?????.

PHP? AI ??? ??? ?? ????? ??? API? ?? ?????. ??? ??? ????? ? ??? ???? ?????. API ??? ?? ?? ??? ???? ??? ??? ???? ???? ? ????. 2. ?? ?? ???? guzzle ?? curl? ???? HTTP ??? ???, JSON ??? ??? ? ???, API ? ?? ??, ??? ? ?? ??? ???? ??, ??? ?? ?? ? ? ?? ????, ??? ?? ? ?????? ?????. 3. ???? ???? ?? ???? API ??, ?? ? ??? ?? ??, ??? ?? ??, ?? ?? ? ??? ??? ??? ?????. ?? ??? ??? ??? ? ??? ???? Propt ?? ? ?? ?? ??, ??? ?? ? ?? ????, ?? ?? ?? ???? ? ??? ?? ? ???? ????? ?????.

PHP? ?????? ????? ?? ?? ?? ???? ???? ?? ???? ???? ?? ?? ???? ?????. 2. ?? ??? ???? ???? ?? ??? ?? ? ??? ??? ???? ?? API/Webhook ??? ??? ?? ???? ??? ??? ??? ??? ?????. 3. ?? ????? ?? ??, ??/???? ????, ???? ??, ???? ? ??? ?????? ????? ?? ??? ???? ???? ?? Dingtalk, SMS ?? ??? ???? ??? ?????? ???? ?? ? ??? ??? ????? ?? ??? ???? ???????.

PhpisstillRelevantinmodernenterpriseenvironments.1. Modernphp (7.xand8.x)? ??? ??, ??? ??, jitcompilation ? modernsyntax, mateitsuilableforlarge-scalepplications

??? AI ?? ?? ???? ???? PHPSDK? ??????. 2. PHP? ???? FFMPEG? ???? ???? API ?? ?? (? : WAV)?? ?????. 3. ??? ???? ????? ????? API ???? ??? ??????. 4. NLP ??? ???? JSON ??? ???? ???? ?????. 5. ?? ??? ???? ???? ?? ?? ?? ?? ?? ??? ?????. ?? ????? ?? ?? ? ??? ???? ?? ??? ???, ??? ?? ? ??? ???????.
