zoukankan      html  css  js  c++  java
  • 94)图片验证码

    (1)首先是简单生成四个字符,到底随机产生几个字符是自己设定的:

              

       代码展示:

     1 <?php
     2     
     3     
     4     /**
     5      * 验证码 工具
     6      */
     7    
     8         
     9     
    10         /**
    11          * 输出生成的验证码输出
    12          *
    13          * @param $code_len=4 码值的长度
    14          * @return void
    15          */
    16        
    17         
    18             $chars = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789';//所有可能字符
    19             $chars_len = strlen($chars);
    20             $code_len=4;//设置码长,这个是自己设定的
    21             $code = '';//初始化码值字符串
    22             for($i=1; $i<=$code_len;++$i) {
    23                 $rand_index = mt_rand(0, $chars_len-1);//就是堆积生成一个字符------------------就是得到$chars的下标
    24                 $code .= $chars[$rand_index];//字符串支持[]操作,通过下标取得某个字符---------------------由下标找到对应的字符,并且每次都连接起来。
    25             }
    26             echo $code;

        然后我把这个输出的这四个字符存在session中,那么我就可以通过session来访问了:

      

        在b.php中读到session['captcha_code']的值

    1 <?php
    2         session_start();
    3         echo $_SESSION['captcha_code'];

     最好背景图片是两种格式,jpg格式和gif格式,因为有的服务器可能支持其中的一种。

    (2)加了背景图,我随便截的图,一共两张png的图

    结果展示:

        

        注意点展示:

        

     然后我的代码:
      

     1 <?php
     2     
     3     
     4     /**
     5      * 验证码 工具
     6      */
     7    
     8         
     9     
    10         /**
    11          * 输出生成的验证码输出
    12          *
    13          * @param $code_len=4 码值的长度
    14          * @return void
    15          */
    16        
    17         
    18             $chars = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789';//所有可能字符
    19             $chars_len = strlen($chars);
    20             $code_len=4;//设置码长,这个是自己设定的
    21             $code = '';//初始化码值字符串
    22             for($i=1; $i<=$code_len;++$i) {
    23                 $rand_index = mt_rand(0, $chars_len-1);//就是堆积生成一个字符,这个得到上面$chars字符串的下标
    24                 $code .= $chars[$rand_index];//由下标找到对应的字符,字符串支持[]操作,通过下标取得某个字符
    25             }
    26 //            echo $code;
    27            
    28             //存储于session,用于验证
    29             @session_start();//保证session机制一定是开启的,同时重复开启不会报错,@屏蔽错误。
    30             $_SESSION['captcha_code'] = $code;
    31     
    32     //生成验证码图片
    33     
    34     //背景图,随便加的
    35     $bg_file =  'captcha' . mt_rand(1, 2) . '.png';
    36     
    37     //基于jpg格式的图片创建画布
    38     $img = imagecreatefrompng($bg_file);
    39     
    40     //随机分配字符串颜色,就是三分之一的比例
    41     $str_color = mt_rand(1, 3) == 1 ? imageColorAllocate($img, 0, 0, 0) : imageColorAllocate($img, 0xff, 0xff, 0xff);
    42     
    43     //字符串
    44     $font = 5;
    45     // 画布尺寸
    46     $img_w = imageSX($img);
    47     $img_h = imageSY($img);
    48     // 字体的尺寸
    49     $font_w = imageFontWidth($font);
    50     $font_h = imageFontHeight($font);
    51     // 字符串的尺寸
    52     $code_w = $font_w * $code_len;
    53     $code_h = $font_h;
    54     $x = ($img_w-$code_w)/2;
    55     $y = ($img_h-$code_h)/2;
    56     imageString($img, $font, $x, $y, $code, $str_color);
    57     
    58     //输出
    59     header('Content-Type: image/jpeg;');
    60     imagepng($img);
        //销毁图像
        imageDestory($img);
  • 相关阅读:
    python常用包官网及包的安装方法
    二进制安装mysql-5.7.26
    ufw防火墙规则不生效
    Zabbix 3.0 配置企业微信报警(配置zabbix-web)
    Zabbix 3.0 配置企业微信报警(注册---测试)
    阿里云盾AliYunDun服务IO超高
    zabbix详解
    ntp时间同步
    zabbix解决中文乱码
    ssh登录服务器提示错误no hostkey alg
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/7406272.html
Copyright © 2011-2022 走看看