由于没有源码下载,我把我写的贴在此处,希望不清楚的小伙伴参考一下,如果有错误还望指正,Thx
captcha.php
<?php session_start(); $image = imagecreatetruecolor(100,30); $bgcolor = imagecolorallocate($image,255,255,255); imagefill($image,0,0,$bgcolor); /*for($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $fontcontent = rand(0,9); $x = ($i*100/4) + rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);; }*/ $captch_code = ''; for($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data = 'abcdefghigklmnopqrstuvwxyz1234567890'; $fontcontent = substr($data,rand(0,strlen($data))-1,1); $captch_code.=$fontcontent; $x = ($i*100/4) + rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } $_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,29),$pointcolor); } for($i=0;$i<3; $i++){ $linecolor = imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220)); imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor); } header('content-type:image/png'); imagepng($image); imagedestroy($image);
form.php
<?php header("Content-type:text/html;charset=utf-8"); if(isset($_REQUEST['authcode'])){ session_start(); if(strtolower($_REQUEST['authcode'])==$_SESSION['authcode']){ echo '<p color="#0000CC">输入正确</p>'; }else{ echo '<p color="#CC0000">输入错误</p>'; } exit; } ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>确认验证码</title> </head> <body> <form method="post" action="./form.php"> <p>验证图片: <img src="./captcha.php?r=<?php echo rand();?>" border="1" width="100"></p> <p>请输入图片中的内容: <input type="text" name="authcode" value=""/> </p> <p><input type="submit" value="提交" style="padding: 6px 20px;"/></p> </form> </body> </html>