您的位置:首页 > 编程语言 > PHP开发

php验证码的制作

2015-11-30 00:41 501 查看
验证码的作用主要是屏蔽机器操作和不必要的请求,关于php验证码,

常见的有这几种数字字母混合,图片或者中文,后两种用的不多

php搭载的GD库可以帮助我们生成验证码底图,剩下的无外乎就是在底图上添加我们的随机元素,

再用session记录,就可以实现验证了。

记住需要用session的时候,一定要先写session_start()方法

接着指定header信息

header('content-type:image/png');

告诉阅览器传输的是png图片

接下来就是要用GD库中的方法了

//底图的制作
$image = imagecreatetruecolor(100,30);//底图大小
$bgcolor = imagecolorallocate($image,200,200,200);//设置填充颜色的对象 - 灰色
imagefill($image,0,0,$bgcolor);//设置填充位置  把之前的颜色传递进去

//添加字母数字4个混合

$captch_code = "";
for($i=0;$i<4;$i++) {
$fontsize = 12;
$fontcolor = imagecolorallocate($image,rand(1,120),rand(0,120),rand(0,120));
$a = rand(0,1);
$fontcontent = $a>0 ? chr(rand(97,122)):rand(0,9);//65到90是大写的
$x = ($i*100/4) + rand(5,10);
$y = rand(5,10);

imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
$captch_code .=$fontcontent;

}
$_SESSION['authcode'] = $captch_code;

//增加点干扰
for($i=0;$i<200;$i++) {
$pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
imagesetpixel($image,rand(1,99),rand(1,99),$pointcolor);
}

//增加线干扰元素
for($i=0;$i<3;$i++) {
$linecolor = imagecolorallocate($image,rand(80,200),rand(80,200),rand(80,200));
imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
}

 //以png格式将图像输出到阅览器
imagepng($image);

//销毁
imagedestroy($image);

以上就是创建一个字母数字混合的验证码,验证的话可以直接用img标签引入就可以了

另外还有字体图片验证码,无非就是加入图片数据和字体数据,画到创建的画布上就OK了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: