php驗證碼的制作思路和實現(xiàn)方法
一、制作思路
由于注冊的時候常常會用到注冊碼來防止機器惡意注冊,這里我發(fā)表一個產(chǎn)生png圖片驗證碼的基本圖像,簡單的思路分析:
1、產(chǎn)生一張png的圖片
2、為圖片設(shè)置背景色
3、設(shè)置字體顏色和樣式
4、產(chǎn)生4位數(shù)的隨機的驗證碼
5、把產(chǎn)生的每個字符調(diào)整旋轉(zhuǎn)角度和位置畫到png圖片上
6、加入噪點和干擾線防止注冊機器分析原圖片來惡意注冊
7、輸出圖片
8、釋放圖片所占內(nèi)存
二、實現(xiàn)方法
authcode.php文件
<?php session_start (); header ( 'Content-type: image/png' ); //創(chuàng)建圖片 $im = imagecreate($x=130,$y=45 ); $bg = imagecolorallocate($im,rand(50,200),rand(0,155),rand(0,155)); //第一次對 imagecolorallocate() 的調(diào)用會給基于調(diào)色板的圖像填充背景色 $fontColor = imageColorAllocate ( $im, 255, 255, 255 ); //字體顏色 $fontstyle = 'rock.ttf'; //字體樣式,這個可以從c:\windows\Fonts\文件夾下找到,我把它放到和authcode.php文件同一個目錄,這里可以替換其他的字體樣式 //產(chǎn)生隨機字符 for($i = 0; $i < 4; $i ++) { $randAsciiNumArray = array (rand(48,57),rand(65,90)); $randAsciiNum = $randAsciiNumArray [rand ( 0, 1 )]; $randStr = chr ( $randAsciiNum ); imagettftext($im,30,rand(0,20)-rand(0,25),5+$i*30,rand(30,35),$fontColor,$fontstyle,$randStr); $authcode .= $randStr; } $_SESSION['authcode'] = $randFourStr;//用戶和用戶輸入的驗證碼做比較 //干擾線 for ($i=0;$i<8;$i++){ $lineColor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imageline ($im,rand(0,$x),0,rand(0,$x),$y,$lineColor); } //干擾點 for ($i=0;$i<250;$i++){ imagesetpixel($im,rand(0,$x),rand(0,$y),$fontColor); } imagepng($im); imagedestroy($im); ?>
效果圖:
以上就是php驗證碼的制作思路和實現(xiàn)方法,希望對大家的學(xué)習(xí)有所幫助。
- php圖片驗證碼代碼
- php 數(shù)學(xué)運算驗證碼實現(xiàn)代碼
- php5 圖片驗證碼實現(xiàn)代碼
- php 生成隨機驗證碼圖片代碼
- PHP驗證碼類代碼( 最新修改,完全定制化! )
- PHP 驗證碼的實現(xiàn)代碼
- 如何用php生成扭曲及旋轉(zhuǎn)的驗證碼圖片
- php ci框架驗證碼實例分析
- 一個漂亮的php驗證碼類(分享)
- PHP驗證碼函數(shù)代碼(簡單實用)
- PHP 驗證碼不顯示只有一個小紅叉的解決方法
- 一個好用的PHP驗證碼類實例分享
- ThinkPHP驗證碼使用簡明教程
- PHP使用CURL實現(xiàn)對帶有驗證碼的網(wǎng)站進行模擬登錄的方法
- 完美解決thinkphp驗證碼出錯無法顯示的方法
- 如何使用PHP對網(wǎng)站驗證碼進行破解
- php生成動態(tài)驗證碼gif圖片
- php生成驗證碼函數(shù)
- PHP實現(xiàn)GIF圖片驗證碼
- php實現(xiàn)點擊可刷新驗證碼
- php實現(xiàn)可運算的驗證碼
- php驗證碼生成代碼
相關(guān)文章
PHP數(shù)組及條件,循環(huán)語句學(xué)習(xí)
PHP數(shù)組及條件,循環(huán)語句學(xué)習(xí),需要的朋友可以參考下2012-11-11PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED問題解決辦法
這篇文章主要介紹了PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED問題解決辦法,需要的朋友可以參考下2014-05-05常用的PHP數(shù)據(jù)庫操作方法(MYSQL版)
最近一直在折騰自己的網(wǎng)站首頁,寫的大部分PHP腳本都要用到和MYSQL數(shù)據(jù)庫相關(guān)的操作,今天把這些方法和大家分享一下,希望大家能多多交流!2011-06-06PHP獲取和操作配置文件php.ini的幾個函數(shù)介紹
當(dāng)你沒辦法修改php.ini配置文件怎么辦,沒事,php有一套設(shè)置和獲取配置信息的函數(shù)2013-06-06PHP實現(xiàn)判斷數(shù)組是一維、二維或幾維的方法
這篇文章主要介紹了PHP實現(xiàn)判斷數(shù)組是一維、二維或幾維的方法,涉及php遞歸操作及數(shù)組相關(guān)判定技巧,需要的朋友可以參考下2017-02-02PHP中實現(xiàn)接收多個name相同但Value不相同表單數(shù)據(jù)實例
這篇文章主要介紹了PHP中實現(xiàn)接收多個name相同但Value不相同表單數(shù)據(jù)實例,需要的朋友可以參考下2015-02-02php實現(xiàn)的網(wǎng)頁版剪刀石頭布游戲示例
這篇文章主要介紹了php實現(xiàn)的網(wǎng)頁版剪刀石頭布游戲,涉及php數(shù)組遍歷、比較及隨機數(shù)組調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2016-11-11