js生成验证码字符串和并验证,PHP输出图片

由js生成验证符数字并进行验证,生成图片由PHP完成,更简单一些

html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GD2函数生成图形验证码</title>
<link href="css/style.css" type="text/css" rel="stylesheet" />
</head>
<script>
</script>
<body>
验证码:&nbsp;&nbsp;<input type="text" id="validatorCode" size="10" />
<input type="hidden" id="defValidatorCode" value="" />    
    <script language="javascript">
    var defValidatorCode;
    var validatorCode;
    //function onload(){
    validatorCode=document.getElementById('validatorCode');
    defValidatorCode=document.getElementById('defValidatorCode');
    //}
    var num1=Math.round(Math.random()*10000000);            //生成随机数
      var num=num1.toString().substr(0,4);                    //截取随机数的前4个字符
      document.write("<img name=codeimg src='ValidatorCode.php?code="+num+"'>"); //将截取值传递到图像处理页中
      defValidatorCode.value=num;                        //将截取值赋给表单中的隐藏域

        function reCode(){                        //定义方法,重新生成验证码
           var num1=Math.round(Math.random()*10000000);    //生成随机数
           var num=num1.toString().substr(0,4);            //截取随机数
           document.codeimg.src="ValidatorCode.php?code="+num;    ///将截取值传递到图像处理页中
             defValidatorCode.value=num;                //将截取值赋给表单中的隐藏域            
       }
      function check(){
          
//      if (form.validatorCode.value==''){
      if (validatorCode.value==''){
            alert('请输入验证码!');
            validatorCode.focus();
            //return false;
            return;
        }
        if (validatorCode.value!=defValidatorCode.value)    {
            alert('验证码输入有误!');
            validatorCode.focus();
            //return false;
            return;
        }
        alert('验证码正确!');
      }
    </script>

    <a href="javascript:reCode()" class="a1">看不清</a>
    <br><br>
    <input type='button' name='btn' value='验证' οnclick="check()"></input>
</body>
</html>

ValidatorCode.php:

<?php
header('content-type:image/png');            //定义标题png格式图像,前面无输出
$im = imagecreate(65, 25);                    //定义画布,图像大小
imagefill($im, 0, 0, imagecolorallocate($im, 200, 200, 200));        //区域填充
$validatorCode = $_GET['code'];                //获取提交的值
imagestring($im, rand(3, 5), 10, 3, substr($validatorCode, 0, 1), imagecolorallocate($im, 0, rand(0, 255), rand(0, 255)));
imagestring($im, rand(3, 5), 25, 6, substr($validatorCode, 1, 1), imagecolorallocate($im, rand(0, 255), 0, rand(0, 255)));
imagestring($im, rand(3, 5), 36, 9, substr($validatorCode, 2, 1), imagecolorallocate($im, rand(0, 255), rand(0, 255), 0));
imagestring($im, rand(3, 5), 48, 12, substr($validatorCode, 3, 1), imagecolorallocate($im, 0, rand(0, 255), rand(0, 255)));
for ($i = 0; $i < 200; $i ++) {                //填充干扰背景
    imagesetpixel($im, rand() % 70, rand() % 30, imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255)));
}
imagepng($im);                                //生成PNG图像
imagedestroy();                                //销毁图像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值