热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->php 
站内搜索:
图形数字验证码实现方案
作者:追风 来源:不详 整理日期:2007-7-13

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" onkeyup="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"]);
?>

相关文章