zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    进程池,线程池,协程,gevent模块,协程实现单线程服务端与多线程客户端通信,IO模型
    线程相关 GIL queue event 死锁与递归锁 信号量l
    生产者消费者模型 线程相关
    进程的开启方式 进程的join方法 进程间的内存隔离 其他相关方法 守护进程 互斥锁
    udp协议 及相关 利用tcp上传文件 socketserver服务
    socket套接字 tcp协议下的粘包处理
    常用模块的完善 random shutil shevle 三流 logging
    day 29 元类
    Django入门
    MySQL多表查询
  • 原文地址:https://www.cnblogs.com/makalochen/p/10669548.html
Copyright © 2011-2022 走看看