说明:
使用PHP的GD库生成图片验证码,可设置字符长度,程序自动重新设置图片总体宽度、含杂点、背景和文字颜色随机更换。不会出现容易产生混淆的“1、l、I、o、O、0”。
效果:
用法:
前台:
<img src="verifyCode.img.php" onclick="this.src='verifyCode.img.php?'+Math.random();" />
后台:
<?php session_start(); if ($_POST['verifyCode'] == $_SESSION['verify']){ echo '验证码正确'; }else{ echo '验证码错误'; } ?>
注:“verifyCode”来自“<input name=”verifyCode” />”,“verify”来自“verifyCode.img.php”中的“$verifySessionName”。
代码:
<?php session_start(); $verifySessionName = 'verify'; // session名称,用于后台对比验证 $verifyTextLength = 4; // 显示的验证码图片上的字符数 $rand = ''; for ($i = 0; $i < $verifyTextLength; $i++) { $rand .= dechex(rand(2, 15)); } $rand = ''; for ($i = 0; $i < $verifyTextLength; $i++) { $rand .= dechex(rand(2, 15)); } $rand = strtoupper($rand); $_SESSION[$verifySessionName] = $rand; $img = imagecreatetruecolor($verifyTextLength * 10, 20); $bg = imagecolorallocate($img, rand(0, 150), rand(0, 150), rand(0, 150)); imagefill($img, 0, 0, $bg); $fg = imagecolorallocate($img, rand(155, 255), rand(155, 255), rand(155, 255)); imagestring($img, 6, 2, 2, $rand, $fg); for ($i = 0; $i < 200; $i++) { //加入干扰象素 $randcolor = ImageColorallocate($img, rand(0, 255), rand(0, 255), rand(0, 255)); imagesetpixel($img, rand() % 60, rand() % 40, $randcolor); } header('content-type:image/gif'); imagegif($img); ?>
<完>