首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP原创源码发布区 » [原创]完整的PHP图形验证码程序源码!  


  作者:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

  nqp@nqp.me
  4304410
  www.nqp.me

 

 发表:2007-03-12 21:30:56 阅读 5207 次 回复 9 次 得分16  |   字号 字色
[原创]完整的PHP图形验证码程序源码!
代码如下:
<?php
   /*   网站验证码程序
    *   运行环境: PHP5.0.18 下调试通过
    *   需要 gd2 图形库支持(PHP.INI中 php_gd2.dll开启)
    *   文件名: showimg.php
    *   作者:  17php.com
    *   Date:   2007.03
    *   技术支持: www.17php.com
    */

   //随机生成一个4位数的数字验证码
    $num="";
    for($i=0;$i<4;$i++){
    $num .= rand(0,9);
    }
   //4位验证码也可以用rand(1000,9999)直接生成
   //将生成的验证码写入session,备验证页面使用
    Session_start();
    $_SESSION["Checknum"] = $num;
   //创建图片,定义颜色值
    Header("Content-type: image/PNG");
    srand((double)microtime()*1000000);
    $im = imagecreate(60,20);
    $black = ImageColorAllocate($im, 0,0,0);
    $gray = ImageColorAllocate($im, 200,200,200);
    imagefill($im,0,0,$gray);

    //随机绘制两条虚线,起干扰作用
    $style = array($black, $black, $black, $black, $black, $gray, $gray, $gray, $gray, $gray);
    imagesetstyle($im, $style);
    $y1=rand(0,20);
    $y2=rand(0,20);
    $y3=rand(0,20);
    $y4=rand(0,20);
    imageline($im, 0, $y1, 60, $y3, IMG_COLOR_STYLED);
    imageline($im, 0, $y2, 60, $y4, IMG_COLOR_STYLED);

    //在画布上随机生成大量黑点,起干扰作用;
    for($i=0;$i<80;$i++)
    {
   imagesetpixel($im, rand(0,60), rand(0,20), $black);
    }
    //将四个数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
    $strx=rand(3,8);
    for($i=0;$i<4;$i++){
    $strpos=rand(1,6);
    imagestring($im,5,$strx,$strpos, substr($num,$i,1), $black);
    $strx+=rand(8,12);
    }
    ImagePNG($im);
    ImageDestroy($im);
   ?>


使用方法:
 本程序可以直接运行,运行之后即可看到一个图形验证码,每次刷新都随机生成新码。
 在某页面中使用此程序时,可以用以下代码:
代码如下:
.....
 请输入验证码:
<input type=text name=passcode>
<img src=showimg.php>
.....

这样即可显示出验证码图片。到了验证页面,用以下代码:
代码如下:
...
$code=$_POST["passcode"];
if( $code == $_SESSION["Checknum"]){
验证通过
}else{
验证码错误
}
...

运行结果如图:

  

(本帖被作者修改过2次,最后一次修改时间2007-11-23 03:49:05)

 
 1#楼  
 
  回复人:xxfx007
  注册时间:2004-11-24
  主题/回复:10/33
  积分:476
  等级:★★☆(五级)
  称号:略有小成

   
 1#楼 发表于2007-03-14 17:45:51  评分:1 

支持一下  站长很长时间不发文章了 

blog什么时候更新  关注中。。。。。。。。。。
 2#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 2#楼 发表于2007-05-28 17:08:16  评分:× 

TO xxfx007

谢谢关心~~~
 3#楼  
 
  回复人:liaoliaome
  注册时间:2008-06-15
  主题/回复:0/1
  积分:25
  等级:★(二级)
  称号:初出茅庐

   
 3#楼 发表于2008-06-15 10:31:27  评分:1 

回复给楼主(一起PHP)
 *   需要 gd2 图形库支持(PHP.INI中 php_gd2.dll开启)
我的有这个php_gd2.dll,但是怎么开启呢?
 4#楼  
 
  回复人:coolboy0316
  注册时间:2008-03-11
  主题/回复:19/44
  积分:367
  等级:★★(四级)
  称号:崭露头角

   
 4#楼 发表于2008-10-09 19:53:30  评分:1 

回复给楼主(一起PHP)
呵呵,不错啊,加油
 5#楼  
 
  回复人:huihuibao
  注册时间:2009-01-10
  主题/回复:1/1
  积分:34
  等级:★(二级)
  称号:初出茅庐

   
 5#楼 发表于2009-01-10 09:37:30  评分:1 

回复给楼主(一起PHP)
$code=$_POST["passcode"];
if( $code == $_SESSION["Checknum"]){
验证通过
}else{
验证码错误
}

这段代码放在哪使用啊
 6#楼  
 
  回复人:海天旭日
  注册时间:2004-04-06
  主题/回复:69/145
  积分:1508
  等级:★★★★(八级)
  称号:论坛才子

   
 6#楼 发表于2009-01-19 08:53:35  评分:1 

回复给楼主(一起PHP)
验证不是很严密,如果不请求showimg.php,直接提交,两个变量为空,反而通过验证了。这样看看

代码如下:
$code=$_POST["passcode"];
if( $code!="" && $code == $_SESSION["Checknum"]){
验证通过
}else{
验证码错误
}

 7#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 7#楼 发表于2009-02-07 07:28:28  评分:× 

回复给6#楼:海天旭日
所言极有道理!
 8#楼  
 
  回复人:luofu13520
  注册时间:2009-01-12
  主题/回复:0/1
  积分:23
  等级:★(二级)
  称号:初出茅庐

用户联系方式已设置为保密
 8#楼 发表于2009-11-16 22:45:03  评分:5 

回复给楼主(一起PHP)
学习中。
 9#楼  
 
  回复人:longevity
  注册时间:2012-07-23
  主题/回复:0/1
  积分:22
  等级:★(二级)
  称号:初出茅庐

   
 9#楼 发表于2012-07-23 16:37:42  评分:5 

回复给楼主(一起PHP)
挺不错的,支持一下,下载学习一下!!!
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.017sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版