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{
    验证码错误
    }
    ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值