• php验证码+js点击刷新


    注意:

      linux环境的php验证码需要安装gd库,而win环境默认是装上了的

      linux环境安装gd库的命令:

        如果php版本是7.x: sudo apt-get install php-gd

        如果php版本是5.x: sudo apt-get install php5.6-gd

    php的验证码实现:

      

    <?php
    Header("Content-type: image/gif");    
    /*  
    * 初始化  
    */    
    $border = 0; //是否要边框 1要:0不要    
    $how = 4; //验证码位数    
    $w = $how*15; //图片宽度    
    $h = 20; //图片高度    
    $fontsize = 6; //字体大小    
    $alpha = "abcdefghjkmnpqrstuvwxyz"; //验证码内容1:字母    
    $number = "23456789"; //验证码内容2:数字    
    $randcode = ""; //验证码字符串初始化    
    srand((double)microtime()*1000000); //初始化随机数种子    
        
    $im = ImageCreate($w, $h); //创建验证图片    
        
    /*  
    * 绘制基本框架  
    */    
    $bgcolor = ImageColorAllocate($im, 255, 255, 255); //设置背景颜色    
    ImageFill($im, 0, 0, $bgcolor); //填充背景色    
    if($border)    
    {    
        $black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色    
        ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框    
    }    
        
    /*  
    * 逐位产生随机字符  
    */    
    for($i=0; $i<$how; $i++)    
    {       
        $alpha_or_number = mt_rand(0, 1); //字母还是数字    
        $str = $alpha_or_number ? $alpha : $number;    
        $which = mt_rand(0, strlen($str)-1); //取哪个字符    
        $code = substr($str, $which, 1); //取字符    
        $j = !$i ? 4 : $j+15; //绘字符位置    
        $color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色    
        ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符    
        $randcode .= $code; //逐位加入验证码字符串    
    }    
        
        
    /*  
    * 添加干扰  
    */    
        
    for($i=0; $i<10; $i++)//绘背景干扰线    
    {       
        $color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色    
        ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线    
    }      
    /*  
    for($i=0; $i<$how*40; $i++)//绘背景干扰点  
    {     
        $color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色   
        ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点  
    }*/    
        
    //把验证码字符串写入session    
    session_start();    
    $_SESSION['randcode'] = $randcode;   
    
     
    $lifeTime = 1*60;    //设置session生命周期为60秒  
    setcookie(session_name(),session_id(),time()+ $lifeTime,"/");
        
    /*绘图结束*/    
    Imagegif($im);    
    ImageDestroy($im);    
    /*绘图结束*/    
    ?>

    页面调用方法:

      注意:因为浏览器会缓存相同的图片路径所有一般要实现点击刷新的功能需要在图片路径后加上随机参数

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>验证码</title>
        </head>
        <body>
            <img src="code.php" onclick="this.src='code.php?id='+Math.random()"/>
        </body>
    </html>
  • 相关阅读:
    SVN服务器搭建和使用
    oracle 存储过程
    PLSQL函数
    PL/SQL --> 游标
    PL SQL 游标学习
    PLSQL存储过程
    利用jqueryRotare实现抽奖转盘
    NSString 与NSMutableString的区别
    第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法
    第8章 应用协议 图解TCP/IP 详解
  • 原文地址:https://www.cnblogs.com/makalochen/p/10669548.html
Copyright © 2020-2023  润新知