验证码的作用主要是屏蔽机器操作和不必要的请求,关于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了