php验证码+js点击刷新

Posted 余生随缘~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 

以上是关于php验证码+js点击刷新的主要内容,如果未能解决你的问题,请参考以下文章

点击刷新图片验证码的原理 ---转

php生成各种验证码

注册表单无刷新验证+php无刷新刷新验证码

php中如何刷新验证码

js实现输入手机验证码后点击提交按钮验证手机输入的验证码和发送的验证码是不是一致

SpringBoot验证码