1. 程式人生 > >封裝PHP驗證碼方法

封裝PHP驗證碼方法

分配 cti 字母 ring image shuff all 像素 head

/**
 * 生成驗證碼
 * @param  integer $width  圖片寬度
 * @param  integer $height 圖片高度
 * @param  string  $type   驗證碼類型
 * @param  integer $length 驗證碼長度
 * @return string  驗證碼字符串          
 */
function validateCode($width=100, $height=30, $type=‘mixed‘, $length=4) {
    $im = imagecreatetruecolor($width
, $height); // 創建畫布 $white = imagecolorallocate($im, 255, 255, 255); // 分配顏色 imagefilledrectangle($im, 0, 0, $width, $height, $white); // 矩形填充 // 產生隨機色 function randColor($im) { return imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); } switch($type
) { case ‘num‘: // 數字型 $str = implode(‘‘, range(0, 9)); break; case ‘str‘: // 字母型 $str = implode(‘‘, array_merge(range(‘a‘, ‘z‘), range(‘A‘, ‘Z‘))); break; case ‘mixed‘: // 混合型 $str = implode(‘‘, array_merge(range(‘a‘, ‘z‘), range(‘A‘, ‘Z‘), range
(0, 9))); break; } $str = substr(str_shuffle($str), 0, $length); // 截取 for ($i = 0; $i < $length; $i++) { // 每次寫入一個字符 imagettftext($im, 18, mt_rand(-20, 20), $i*($width/$length), mt_rand($height-10, $height-5), randColor($im),‘ariblk.ttf‘, $str[$i]); } for ($i = 0; $i < 100; $i++) { // 加入像素點 imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), randColor($im)); } header(‘Content-Type: image/png‘); imagepng($im); imagedestroy($im); return $str; }

可生成指定位數的數字型、字母型、混合型驗證碼。

封裝PHP驗證碼方法