目标: 使用php生成验证码
成品:
逻辑代码: authcode.php
<?phpheader("Content-type:image/png");session_start();//$str用于存放验证码$str="";//$charset中剔除了0,o,1,l等易混淆字符$cs="abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345678923456789";$img=imagecreate($width=100,$height=26);//图片背景色使用浅色调$img_bg=imagecolorallocate($img,rand(186,255), rand(186,255), rand(186,255));for($i=0;$i<4;++$i){ //文字颜色使用深色调 $txt_color=imagecolorallocate($img,rand(0,86),rand(0,86),rand(0,86)); //从$charset中随机出来一个字符 $tmp=substr($cs,rand(0,strlen($cs)-1),1); //进行偏移和显示 imagestring($img,5,$i*24+rand(6,15),rand(2,12),$tmp,$txt_color); $str.=$tmp;}//将验证码值放入session中以备后用(验证用户输入的验证码)$_SESSION["authcode"]=$str;//添加背景线条for($j=0;$j<5;++$j){ $line_color=imagecolorallocate($img,rand(150,210), rand(150,210), rand(150,210)); imageline($img, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $line_color);}//添加噪点for($i=0;$i<250;++$i){ $img_noisy=imagecolorallocate($img,rand(150,210), rand(150,210), rand(150,210)); imagesetpixel($img,rand(0,$width),rand(0,$height),$img_noisy);}imagepng($img);imagedestroy($img);
前端使用: register.html
<img src="authcode.php"/>