zoukankan      html  css  js  c++  java
  • 验证码(中)——封装.使用

    一.JS点击局部刷新

      这段代码放入图片区域,可以自动刷新局部

       onclick="javascript:this.src='code.php?tm='+Math.random()"

      然后将JS分离出去 

      <img src="code.php" id="code" />

    window.onload = function () {
        var code = document.getElementById('code');
        code.onclick = function () {
            this.src='code.php?tm='+Math.random();
        };
    };

    二.将验证码包装成函数 

      在核心函数库里创建一个_code函数,将验证码代码放入。

      然后设置参数,最大的提供灵活性。

      注意:如果没有任何设置,必须有默认值。

    <?php
    /**
     * _code()是验证码函数
     * @access public 
     * @param int $_width 表示验证码的长度
     * @param int $_height 表示验证码的高度
     * @param int $_rnd_code 表示验证码的位数
     * @param bool $_flag 表示验证码是否需要边框 
     * @return void 这个函数执行后产生一个验证码
     */
    session_start();
    
    function _code($_width = 75,$_height = 25,$_rnd_code = 4,$_flag = false) {  
        //创建随机码。之前必须使用<<    $_nmsg = '';  >>创建空字符串,用来存储随机码
        $_nmsg = '';
        for($i=0;$i<$_rnd_code;$i++){
            $_nmsg .= dechex(mt_rand(0, 15));
        }
        
        //保存在session
        $_SESSION['code'] = $_nmsg;
        
        //创建一张图像
        $_img = imagecreatetruecolor($_width,$_height);
        
        //白色
        $_white = imagecolorallocate($_img, 255, 255, 255);
        
        //填充背景色为白色
        imagefill($_img, 0, 0, $_white);
        
        if ($_flag) {
            //黑色,边框
            $_black = imagecolorallocate($_img, 0, 0, 0);
            imagerectangle($_img, 0, 0, $_width-1,$_height-1, $_black);
        }
        
        //随即画出6个线条
        for ($i=0;$i<6;$i++) {
            $_rnd_color = imagecolorallocate($_img,mt_rand(0, 255),mt_rand(0, 255),mt_rand(0, 255));
            imageline($_img,mt_rand(0,$_width),mt_rand(0, $_height),mt_rand(0,$_width),mt_rand(0, $_height),$_rnd_color);
        }
        
        //随即雪花
        for ($i=0;$i<100;$i++) {
            $_rnd_color = imagecolorallocate($_img, mt_rand(200, 255), mt_rand(200, 255),mt_rand(200, 255));
            imagestring($_img, 1, mt_rand(1, $_width), mt_rand(1, $_height), '*', $_rnd_color);
        }
        
        //输出验证码
        for ($i=0;$i<strlen($_SESSION['code']);$i++) {
            $_rnd_color = imagecolorallocate($_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));
            imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][$i],$_rnd_color);
        }
        
        //输出图像
        header('Content-Type: image/png');
        imagepng($_img);
        
        //销毁
        imagedestroy($_img);
    }
    ?>

    三.编写函数注释

      将_code()函数编写注释,让代码更清晰。

  • 相关阅读:
    POJ 1269 Intersecting Lines --计算几何
    URAL 2014 Zhenya moves from parents --线段树
    HDU 4122 Alice's mooncake shop --RMQ
    HDU 4121 Xiangqi --模拟
    HDU 4045 Machine scheduling --第二类Strling数
    HDU 4041 Eliminate Witches! --模拟
    HDU 5105 Math Problem --数学,求导
    2014-2015 Codeforces Trainings Season 2 Episode 7 G Gophers --线段树
    HDU 4419 Colourful Rectangle --离散化+线段树扫描线
    HDU 5102 The K-th Distance
  • 原文地址:https://www.cnblogs.com/jytblog/p/7423887.html
Copyright © 2011-2022 走看看