图形验证码的实现方法

 

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

<script language=javascript src="../js/ad300-250.js"></script> <script type=text/javascript> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值