素材牛VIP会员

PHP生成图片验证码实例

 所属分类:PHP实例-常用实例教程

 浏览:67744次  评论:15次  更新时间:2019-09-06
牛币素材VIP可免积分下载
PHP生成图片验证码实例
积分说明:注册即送10牛币,每日签到可获得5牛币,成为VIP会员可永久免牛币下载!   充值积分   充值会员   更多说明»
素材描述:本文以实例演示5种验证码,并介绍生成验证码的函数。PHP生成验证码的原理:通过GD库,生成一张带验证码的图片,并将验证码保存在Session中。

基础属性

  • 内核PHP
  • 难易PHP初级
  • 数据库

详细介绍

HTML部分
<div class="demo">  
   <h3>1、数字验证码</h3>  
   <p>验证码:<input type="text" class="input" id="code_num" name="code_num" maxlength="4" /> <img src="code_num.php" id="getcode_num" title="看不清,点击换一张" align="absmiddle" /></p>  
   <p><input type="button" class="btn" id="chk_num" value="提交" /></p>  
  </div>  
  <div class="demo">  
   <h3>2、数字+字母验证码</h3>  
   <p>验证码:<input type="text" class="input" id="code_char" maxlength="4" /> <img src="code_char.php" id="getcode_char" title="看不清,点击换一张" align="absmiddle" /></p>  
   <p><input type="button" class="btn" id="chk_char" value="提交" /></p>  
  </div>  
  <div class="demo">  
   <h3>3、中文验证码</h3>  
   <p>验证码:<input type="text" class="input" id="code_zh" maxlength="4" /> <img src="code_zh.php" id="getcode_zh" title="看不清,点击换一张" align="absmiddle" /></p>  
   <p><input type="button" class="btn" id="chk_zh" value="提交" /></p>  
  </div>  
  <div class="demo">  
   <h3>4、仿google验证码</h3>  
   <p>验证码:<input type="text" class="input" id="code_gg" maxlength="4" /> <img src="code_gg.php" id="getcode_gg" title="看不清,点击换一张" align="absmiddle" /></p>  
   <p><input type="button" class="btn" id="chk_gg" value="提交" /></p>  
  </div>  
  <div class="demo">  
   <h3>5、算术验证码</h3>  
   <p>验证码:<input type="text" class="input" id="code_math" maxlength="4" /> <img src="code_math.php" id="getcode_math" title="看不清,点击换一张" align="absmiddle" /></p>  
   <p><input type="button" class="btn" id="chk_math" value="提交" /></p>  
</div>
JS验证部分
$(function() { 
   $("#getcode_num").click(function() {  //数字验证 
        $(this).attr("src", 'code_num.php?' + Math.random()); 
    }); 
    $("#chk_num").click(function() { 
        var code_num = $("#code_num").val(); 
        $.post("chk_code.php?act=num", { 
            code: code_num 
        }, 
        function(msg) { 
            if (msg == 1) { 
                alert("验证码正确!"); 
            } else { 
                alert("验证码错误!"); 
            } 
        }); 
    }); 
    //数字+字母验证 
    $("#getcode_char").click(function() { 
        $(this).attr("src", 'code_char.php?' + Math.random()); 
    }); 
    $("#chk_char").click(function() { 
        var code_char = $("#code_char").val(); 
        $.post("chk_code.php?act=char", { 
            code: code_char 
        }, 
        function(msg) { 
            if (msg == 1) { 
                alert("验证码正确!"); 
            } else { 
                alert("验证码错误!"); 
            } 
        }); 
    }); 
    //中文验证码 
    $("#getcode_zh").click(function() { 
        $(this).attr("src", 'code_zh.php?' + Math.random()); 
    }); 
    $("#chk_zh").click(function() { 
        var code_zh = escape($("#code_zh").val()); 
        $.post("chk_code.php?act=zh", { 
            code: code_zh 
        }, 
        function(msg) { 
            if (msg == 1) { 
                alert("验证码正确!"); 
            } else { 
                alert("验证码错误!"); 
            } 
        }); 
    }); 
    //google验证 
    $("#getcode_gg").click(function() { 
        $(this).attr("src", 'code_gg.php?' + Math.random()); 
    }); 
    $("#chk_gg").click(function() { 
        var code_gg = $("#code_gg").val(); 
        $.post("chk_code.php?act=gg", { 
            code: code_gg 
        }, 
        function(msg) { 
            if (msg == 1) { 
                alert("验证码正确!"); 
            } else { 
                alert("验证码错误!"); 
            } 
        }); 
    }); 
    //算术验证 
    $("#getcode_math").click(function() { 
        $(this).attr("src", 'code_math.php?' + Math.random()); 
    }); 
    $("#chk_math").click(function() { 
        var code_math = $("#code_math").val(); 
        $.post("chk_code.php?act=math", { 
            code: code_math 
        }, 
        function(msg) { 
            if (msg == 1) { 
                alert("验证码正确!"); 
            } else { 
                alert("验证码错误!"); 
            } 
        }); 
    }); 
});
PHP生成验证码
session_start();  
getCode(4,60,20);  
  
function getCode($num,$w,$h) {  
    $code = "";  
    for ($i = 0; $i < $num; $i++) {  
        $code .= rand(0, 9);  
    }  
    //4位验证码也可以用rand(1000,9999)直接生成  
    //将生成的验证码写入session,备验证时用  
    $_SESSION["helloweba_num"] = $code;  
    //创建图片,定义颜色值  
    header("Content-type: image/PNG");  
    $im = imagecreate($w, $h);  
    $black = imagecolorallocate($im, 0, 0, 0);  
    $gray = imagecolorallocate($im, 200, 200, 200);  
    $bgcolor = imagecolorallocate($im, 255, 255, 255);  
    //填充背景  
    imagefill($im, 0, 0, $gray);  
  
    //画边框  
    imagerectangle($im, 0, 0, $w-1, $h-1, $black);  
  
    //随机绘制两条虚线,起干扰作用  
    $style = array ($black,$black,$black,$black,$black,  
        $gray,$gray,$gray,$gray,$gray  
    );  
    imagesetstyle($im, $style);  
    $y1 = rand(0, $h);  
    $y2 = rand(0, $h);  
    $y3 = rand(0, $h);  
    $y4 = rand(0, $h);  
    imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED);  
    imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED);  
  
    //在画布上随机生成大量黑点,起干扰作用;  
    for ($i = 0; $i < 80; $i++) {  
        imagesetpixel($im, rand(0, $w), rand(0, $h), $black);  
    }  
    //将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成  
    $strx = rand(3, 8);  
    for ($i = 0; $i < $num; $i++) {  
        $strpos = rand(1, 6);  
        imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);  
        $strx += rand(8, 12);  
    }  
    imagepng($im);//输出图片  
    imagedestroy($im);//释放图片所占内存  
}
PHP GD库自带的图像处理函数
参数 描述 默认值
imagecreate() 创建一个新图像 -
imagecolorallocate() 为图像分配颜色 -
imagefill() 填充图像 -
imagerectangle() 画一个矩形(边框) -
imagesetstyle() 设置画线风格 -
imageline() 画一条线段 -
imagesetpixel() 画点像素 -
imagepng() 以PNG格式将图像输出到浏览器或文件 -
imagedestroy() 释放图片所占内存 -

讨论这个素材(15)回答他人问题或分享使用心得会奖励牛币

ch***am  
2019年07月11日

很好,实用

回复
记***香  
2019年07月13日

保存一下

回复
Su***er  
2019年07月17日

很有新意的,一定去下载

回复
de***st  
2019年07月21日

很好看,也很实用!感谢分享!

回复
麦***j  
2019年07月23日

刚好在做验证码啊 很好功能啊

回复
迷***雾  
2019年07月25日

太好了~~~~甄食用

回复
亡***师  
2019年08月11日

很强势啊。、、

回复
威***军  
2019年08月14日

十分有用的资源,下载了,多谢分享

回复
lj***10  
2019年08月19日

一般不建议用JS生成验证码,不安全

回复
Am***ze  
2019年08月24日

千言万语我只能说两个词:实用,感谢

回复
yi***14  
2019年08月28日

谢谢,项目需要我就拿走了

回复
qq***91  
2019年09月09日

保存一下

回复
qq***03  
2020年06月22日

比较实用。

回复
qq***03  
2020年06月27日

实用!

回复
qq***87  
2020年08月02日

不错的验证码类

回复
do***lf  
2020年09月10日

比较实用。不错的验证码类

回复
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取
我的牛币余额:0
所需牛币:25 开始下载

牛币获取:签到、评论、充值    » 在线充值(10牛币=1元)