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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php 验证码

發(fā)布時間:2025/1/21 php 104 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 验证码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)習(xí)地址:http://www.imooc.com/video/2458

<?php /*** 生成驗證碼* @param int $type* @param int $length* @return string*/ function buildRandomString($type=1,$length=4){if ($type == 1) {$chars = join ( "", range ( 0, 9 ) );} elseif ($type == 2) {$chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ) ) );} elseif ($type == 3) {$chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ), range ( 0, 9 ) ) );}if ($length > strlen ( $chars )) {exit ( "字符串長度不夠" );}$chars = str_shuffle ( $chars );return substr ( $chars, 0, $length ); }//通過GD庫做驗證碼 function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify"){session_start();//創(chuàng)建畫布$width = 80;$height = 28;$image = imagecreatetruecolor ( $width, $height );$white = imagecolorallocate ( $image, 255, 255, 255 );$black = imagecolorallocate ( $image, 0, 0, 0 );//用填充矩形填充畫布imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );$chars = buildRandomString ( $type, $length );$_SESSION [$sess_name] = $chars;//$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );$fontfiles = array ("SIMYOU.TTF" );//由于字體文件比較大,就只保留一個字體,如果有需要的同學(xué)可以自己添加字體,字體在你的電腦中的fonts文件夾里有,直接運(yùn)行輸入fonts就能看到相應(yīng)字體for($i = 0; $i < $length; $i ++) {$size = mt_rand ( 14, 18 );$angle = mt_rand ( - 15, 15 );$x = 5 + $i * $size;$y = mt_rand ( 20, 26 );$fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];$color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );$text = substr ( $chars, $i, 1 );imagettftext($image, $size, $angle, $x, $y, $color, "", $text);}if ($pixel) {for($i = 0; $i < 50; $i ++) {imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );}}if ($line) {for($i = 1; $i < $line; $i ++) {$color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );}}header ( "content-type:image/gif" );imagegif ( $image );imagedestroy ( $image ); }

?

網(wǎng)上找到的不錯的驗證碼:http://www.jb51.net/article/40341.htm

需要下載字體:elephant.ttf

html使用:<img? title="點(diǎn)擊刷新" src="./captcha.php" align="absbottom" οnclick="this.src='captcha.php?'+Math.random();"></img>

<?php session_start(); //驗證碼類 class ValidateCode {private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//隨機(jī)因子private $code;//驗證碼private $codelen = 4;//驗證碼長度private $width = 130;//寬度private $height = 50;//高度private $img;//圖形資源句柄private $font;//指定的字體private $fontsize = 20;//指定字體大小private $fontcolor;//指定字體顏色//構(gòu)造方法初始化public function __construct() {$this->font = dirname(__FILE__).'/font/elephant.ttf';//注意字體路徑要寫對,否則顯示不了圖片 }//生成隨機(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, mt_rand(157,255), mt_rand(157,255), mt_rand(157,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);}//對外生成public function doimg() {$this->createBg();$this->createCode();$this->createLine();$this->createFont();$this->outPut();}//獲取驗證碼public function getCode() {return strtolower($this->code);} }//使用方法,通常是在另一個單獨(dú)的php頁面執(zhí)行的: /* $_vc = new ValidateCode(); $_vc->doimg(); $_SESSION['ValidateCode'] = $_vc->getCode();//驗證碼保存到SESSION中 */ //然后在html中引用php頁面: /* <img title="點(diǎn)擊刷新" src="./captcha.php" align="absbottom" οnclick="this.src='captcha.php?'+Math.random();"></img> */?>

?

轉(zhuǎn)載于:https://www.cnblogs.com/CyLee/p/5725518.html

總結(jié)

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

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