• 验证码(中)——封装.使用


    一.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()函数编写注释,让代码更清晰。

  • 相关阅读:
    完全卸载SQL Server 2008r2
    win7:你需要来自Administrators的权限才能对此文件进行修改的一个文件
    web.config文件中配置数据库连接的两种方式
    IIS6/7 配置操作
    IIS6/7 配置问题
    svn一整套使用,从下载到整个服务器搭建完成的详细说明
    HTTP协议详解
    深入理解String的关键点和方法
    将博客搬至CSDN
    对Java Web项目中路径的理解
  • 原文地址:https://www.cnblogs.com/jytblog/p/7423887.html
Copyright © 2020-2023  润新知