showImage.php:首先生成验证图像,源代码如下:
<?php
//生成验证码图片
Header("Content-type: image/PNG");
$im = imagecreate(62,20);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,0,0,$gray); //改了这里的参数
//生成随机5位字符
$authnum = strtoupper(substr(md5(rand()),20,5));
//将验证码放入Session
session_start();
$_SESSION["check_num"] = $authnum;
//将验证码绘入图片
imagestring($im, 5, 10, 3, $authnum, $black);
//设置干扰像素
for ($i=0;$i<=128;$i++)
{
$point_color = imagecolorallocate ($im, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($im,rand(2,128),rand(2,38),$point_color);
}
ImagePNG($im);
ImageDestroy($im);
?>
在要验证的html网页上调用生成图像,test.php:
<html>
<head>
<title></title>
function checkCode()
{
var frm = document.mosForm;
if(frm.checkcode.value.length == 5) {
url = "<?php echo $mosConfig_live_site; ?>/components/com_registration/checkcode.php?code="+ frm.checkcode.value;
send_request("GET", url, null, "text", showcheckInfo);
}
else {
document.getElementById("ms_info").innerHTML = "请输入5位验证码。";
}
}
function showcheckInfo()
{
var frm = document.mosForm;
if (http_request.readyState == 4)
{ // 判断对象状态
if (http_request.status == 200)
{ // 信息已经成功返回,开始处理信息
var iRec = http_request.responseText;
iRec = trim(iRec);
ms_info.innerHTML = http_request.responseText;
document.getElementById("ms_info").innerHTML = "";
if(iRec == "0")
{
document.getElementById("ms_info").innerHTML = "认证失败:验证码错误。";
frm.checkcode.focus();
frm.btnRegister.disabled = true;
}
else
{
frm.btnRegister.disabled = false;
}
}
else { //页面不正常
alert("您所请求的页面有异常。");
}
}
else{
switch(http_request.readyState)
{
case 0:
ms_info.innerHTML="未初始化...";
break;
case 1:
ms_info.innerHTML="加载中...";
break;
case 2:
ms_info.innerHTML="连接完成...";
break;
case 3:
ms_info.innerHTML="交换数据...";
break;
default:
break;
}
}
}
</script>
</head>
<body>
<input type="text" name="checkcode" class="inputbox" size="10" οnkeyup="checkCode()" />
<img id="imgIdentity" src="showImage.php" />
<SCRIPT LANGUAGE="JavaScript">
function newverifypic(){
document.getElementById("imgIdentity").src = "showImage.php?t="+ Math.random();
}
</SCRIPT>
<a href="javascript:newverifypic();" title="看不清左边的字符">看不清?</a>
</body>
</html>
检查验证码checkcode.php:
<?php
$checkcode = trim($_GET["code"]);
session_start();
$snum = $_SESSION["check_num"];
$checkcode = strtoupper($checkcode);
if ($checkcode != $snum)
echo "0";
else
echo "1";
//unset($_SESSION["check_num"]);
?>