php验证码实例

admin 2014年10月10日 PHP学习 555次阅读 查看评论

<?php
//绘制验证码
//1.初始化信息
$leng = 4; //验证码的位数
$code = getCode($leng,1);//获取验证码的值
$width=$leng*26;//宽度
$height=40;//高度
//2. 创建画布,准备颜色
$im = imageCreateTrueColor($width,$height); //创建一个基于真彩的画布
$bg[0]=imagecolorallocate($im,252,209,252);
$bg[1]=imagecolorallocate($im,217,251,253);
$bg[2]=imagecolorallocate($im,232,252,202);
$bg[3]=imagecolorallocate($im,239,239,239);
$c[0]=imagecolorallocate($im,255,0,0);//创建颜色
$c[1]=imagecolorallocate($im,0,0,255);
$c[2]=imagecolorallocate($im,142,38,65);
$c[3]=imagecolorallocate($im,23,121,40);
$c[4]=imagecolorallocate($im,122,28,22);
//3. 开始绘画
 imagefill($im,0,0,$bg[rand(0,3)]);  //3.1随机填充背景颜色
 
// 3.2绘制验证码
for($i=0;$i<strlen($code);$i++){
imagettftext($im,25,rand(-45,45),10+($i*22),30,$c[rand(0,4)],"MSYH.TTF",$code[$i]);
}
//3.3添加随机干扰点
for($i=0;$i<300;$i++){
$color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imageSetPixel($im,rand(0,$width),rand(0,$height),$color); //画一个点
}
//3.4添加随机干扰线
for($i=0;$i<6;$i++){
$color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imageline($im,rand(0,$width),rand(0,$height),rand(0,$width),rand(0,$height),$color); //画一个点
}
//5. 输出绘画
header("Content-Type:image/png"); //设置响应类型为图片格式
imagepng($im); //输出图片
//6. 销毁资源
imageDestroy($im);
/**
 *定义一个获取随机验证码值的函数
 *@param int ln 验证码的位数
 *@param int type 类型,1表示纯数字(默认)、2:小写字母加数字, 3:大小字母和数字
 *@return string 返回验证码值
 */
function getCode($ln,$type=1){
$str = "0123456789abcdefghijkmnpqrstuvwxyABCDEFGHJKLMNOPQRSTUVWXYZ";
$m=9;//定义随机索引范围
if($type==2){
$m=32;
}elseif($type==3){
$m=57;
}
//随机获取每个验证码值
$ch="";
for($i=0;$i<$ln;$i++){
$ch.=$str[rand(0,$m)];
}
//返回
return $ch;
}


« 上一篇 下一篇 » admin原创文章,转载请注明出处! 标签:php验证码php开发php学好php

相关日志:

«   2019年6月   »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
文章归档
网站收藏
友情链接
图标汇集