萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php入門級的PHP驗證碼程序

php入門級的PHP驗證碼程序

生成驗證碼我們會要用到php 圖形處理函數,如imagecreate,imagepng,header之類的函數,下面我們一起來看個簡單的實例。

實例

 代碼如下 復制代碼

<?php 
session_start(); 
 
$im = imagecreate(80,30);//創建圖片 
$color = imagecolorallocate($im,rand(150,200),rand(150,200),rand(150,200));//設置圖片背景 
$str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";//產生隨機字符串 
 for($i=0;$i<5;$i++){ 
        $code .= $str[rand(0,(strlen($str)-1))]; 
        } 
$_SESSION['code'] = $code; 
for($a=0;$a<5;$a++){  //將字符串寫入圖片資源 
    $x = $a*10 + 15; 
    $y = rand(5,10);  // www.111cn.net
    imagechar($im,5,$x,$y,$code{$a},imagecolorallocate($im,0,0,0)); 
    } 
header("Content-type:image/png");//輸出圖片資源 
imagepng($im); 
?>

例2

 代碼如下 復制代碼

<?php
if(!isset($_SESSION)){ //判斷session是否開啟
session_start(); //開啟就session
}
$width=70; //布畫寬度
$height=25; //布畫高度
$length=4;//驗證碼長度
$code=getcode($length); //獲取隨機字符串
$_SESSION['verfyCode'] = $code;

$img=imagecreate($width,$height);
$bgcolor=imagecolorallocate($img,240,240,240);
$rectangelcolor=imagecolorallocate($img,150,150,150);
imagerectangle($img,1,1,$width-1,$height-1,$rectangelcolor);//畫邊框
for($i=0;$i<$length;$i++){//循環寫字
$codecolor=imagecolorallocate($img,mt_rand(50,200),mt_rand(50,128),mt_rand(50,200));
$angle=rand(-20,20);
$charx=$i*15+8;
$chary=($height+14)/2+rand(-1,1);
imagettftext($img,15,$angle,$charx,$chary,$codecolor,'C:WINDOWSFontsSIMKAI.TTF',
$code[$i]);
}
for($i=0;$i<20;$i++){//循環畫線
$linecolor=imagecolorallocate($img,mt_rand(0,250),mt_rand(0,250),mt_rand(0,250));
$linex=mt_rand(1,$width-1);
$liney=mt_rand(1,$height-1);
imageline($img,$linex,$liney,$linex+mt_rand(0,4)-2,$liney+mt_rand(0,4)-2,$linecolor);
}
for($i=0;$i<100;$i++){//循環畫點
$pointcolor=imagecolorallocate($img,mt_rand(0,250),mt_rand(0,250),mt_rand(0,250));
imagesetpixel($img,mt_rand(1,$width-1),mt_rand(1,$height-1),$pointcolor);
}
function getcode($length){//生成php隨機數
$pattern = '1234567890ABCDEFGHIJKLOMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ';//字符池
for($i=0;$i<$length;$i++) {
$key .= $pattern{mt_rand(0,35)};
}
return $key;

}
ob_clean();
header('Content-type:image/png');
imagepng($img);
?>

效果圖如下

copyright © 萬盛學電腦網 all rights reserved