PHP實(shí)現(xiàn)驗(yàn)證碼-創(chuàng)新互聯(lián)

第一步:創(chuàng)建一個(gè)畫布

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比昭蘇網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式昭蘇網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋昭蘇地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

第二步:創(chuàng)建顏色

第三步:準(zhǔn)備字符

第四步:往 畫布上寫字符

第五步:畫干擾線(點(diǎn))

第六步:輸出格式

第七步:輸出圖片

第八步:銷毀資源

<?php      verify(); function verify($width = 100 , $height = 40 , $num = 5 , $type = 3 ){     //1 創(chuàng)建畫布     $image = imagecreatetruecolor($width , $height);          //2 創(chuàng)建顏色  //因?yàn)楹筮吙偸怯?,所以寫了兩個(gè)函數(shù),分別是lightColor(淺顏色)、deepColor(深顏色)               //3 創(chuàng)建字符 //這里是自己選擇的類型,1 就是純數(shù)字,2 就是純小字母, 3 就是數(shù)字大小寫字母的混合     switch($type){         case 1:             //定義字符串             $str = "0123456789";             //打亂字符串             $strNew = str_shuffle($str);             //截取$num個(gè)             $string = substr($strNew , 0 , $num);             break;         case 2:             //定義字符             $arr = range('a' , 'z');             //打亂字符串?dāng)?shù)組             shuffle($arr);             //截取             $tmp = array_slice($arr , 0 , $num);             //連成字符串             $string = join('' , $tmp);             break;         case 3:             $str = "23456789abcdefghjklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";             $string = substr(str_shuffle($str) , 0 , $num);             break;     }     //給背景填充淺顏色 //背景顏色太深的話驗(yàn)證碼就看不清了     imagefilledrectangle($image , 0 , 0 , $width , $height , lightColor($image));          //4 往畫布上寫入字符     for($i = 0; $i<$num; $i++) {  //因?yàn)槲覀冊(cè)O(shè)定的是輸出5 個(gè)字符,所以$i是小于的$num         //floor是取整,$width / $num 把寬度分了$num塊地,*$i是一個(gè)字符占一塊地,以免全都堆在一塊看不出來         $x = floor($width / $num) * $i;         $y = mt_rand(10 , $height - 20);         imagechar ($image , 5 , $x , $y , $string[$i] , deepColor($image));     }          //5 畫干擾線、點(diǎn)     //干擾線     for($i = 0; $i<$num; $i++) {         imagearc ($image , mt_rand(10 , $width) , mt_rand(10 , $height) , mt_rand(10 , $width) , mt_rand(10 , $height) , mt_rand(0 , 10) , mt_rand(0 , 270) , deepColor($image));              }     //干擾點(diǎn)     for( $i = 0; $i<50; $i++) {         imagesetpixel($image , mt_rand(0 , $width) , mt_rand(0 , $height) , deepColor($image));     }     ob_clean();//擦除緩沖區(qū)       //6 告訴瀏覽器輸出格式:png     header("Content-type: image/png");          //7 輸出圖片     imagepng($image);          //8 銷毀     imagedestroy($image);          return $string;     //echo $string; } //設(shè)置深淺顏色 function lightColor ($image) {     return imagecolorallocate($image , mt_rand(120 , 255) , mt_rand(120 , 255) , mt_rand(120 , 255));  } function deepColor ($image) {     return imagecolorallocate($image , mt_rand(0 , 120) , mt_rand(0 , 120) , mt_rand(0 , 120));  }     ?>

特別說明:

 ob_clean();//擦除緩沖區(qū)

之前是沒有加上這個(gè)的,結(jié)果就告訴我“因存在錯(cuò)誤而無法顯示”,如下圖:

PHP實(shí)現(xiàn)驗(yàn)證碼

不過幸運(yùn)的是,在百度上找到答案了:https://blog.csdn.net/ghbfgb/article/details/50845075。加上之后,就很輕易的解決了這個(gè)問題,現(xiàn)在的效果是這樣的:

PHP實(shí)現(xiàn)驗(yàn)證碼

好了。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站標(biāo)題:PHP實(shí)現(xiàn)驗(yàn)證碼-創(chuàng)新互聯(lián)
本文路徑:http://muchs.cn/article28/cocsjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司品牌網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、企業(yè)建站、軟件開發(fā)、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站