Php 生成验证码(实用)
php生成验证码案例如下:
/** php 验证码(Session) **/
//判断session是否开启
if(!isset($_SESSION))
{
session_start(); //开启就session
}
$width=90; //布画宽度
$height=35; //布画高度
$length=5; //验证码长度
$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,23,$angle,$charx,$chary,$codecolor,'C:\WINDOWS\Fonts\SIMKAI.TTF',$code[$i]);
imagettftext($img,23,$angle,$charx,$chary,$codecolor,'../../css/SIMKAI.TTF',$code[$i]);
}
for($i=0;$i<50;$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 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';//字符池
for($i=0;$i<$length;$i++) {
$key .= $pattern{mt_rand(0,strlen($pattern))};
}
return $key;
}
ob_clean();
header('Content-type:image/png');
imagepng($img);
调用示例如下:
<img id="img" src="source/common/CheckCode.php" alt="" title="看不清?点击更换" style="cursor: pointer;
width: 90px; height: 30px; margin-bottom: -10px; *margin-bottom: -3px;" οnclick="this.src=this.src+'?'" />
备注:本文经过摘录网上文章修改、整理而成,已记不得原文网址,感谢原创作者。