自动生成验证码

来源:互联网 发布:mac如何加密文件夹 编辑:程序博客网 时间:2024/05/21 21:35

验证码生成页面 verification.php

<?php 
session_start();
    //文件头... 
    header("Content-type: image/png"); 
    //创建真彩色白纸 
    $im = @imagecreatetruecolor(50, 20) or die("建立图像失败"); 
    //获取背景颜色 
    $background_color = imagecolorallocate($im, 255, 255, 255); 
    //填充背景颜色(这个东西类似油桶) 
    imagefill($im,0,0,$background_color); 
    //获取边框颜色 
    $border_color = imagecolorallocate($im,200,200,200); 
    //画矩形,边框颜色200,200,200 
    imagerectangle($im,0,0,49,19,$border_color); 


    //逐行炫耀背景,全屏用1或0 
    for($i=2;$i<18;$i++){ 
        //获取随机淡色         
        $line_color = imagecolorallocate($im,rand(200,255),rand(200,255),rand(200,255)); 
        //画线 
        imageline($im,2,$i,47,$i,$line_color); 
    } 


    //设置字体大小 
    $font_size=12; 


    //设置印上去的文字 
    $Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    $Str[1] = "abcdefghijklmnopqrstuvwxyz"; 
    $Str[2] = "01234567891234567890123456"; 


    //获取第1个随机文字 
    $imstr[0]["s"] = $Str[rand(0,2)][rand(0,25)]; 
    $imstr[0]["x"] = rand(2,5);
    $imstr[0]["y"] = rand(1,4); 



    //获取第2个随机文字 
    $imstr[1]["s"] = $Str[rand(0,2)][rand(0,25)]; 
    $imstr[1]["x"] = $imstr[0]["x"]+$font_size-1+rand(0,1); 
    $imstr[1]["y"] = rand(1,3); 


    //获取第3个随机文字 
    $imstr[2]["s"] = $Str[rand(0,2)][rand(0,25)]; 
    $imstr[2]["x"] = $imstr[1]["x"]+$font_size-1+rand(0,1); 
    $imstr[2]["y"] = rand(1,4); 


    //获取第4个随机文字 
    $imstr[3]["s"] = $Str[rand(0,2)][rand(0,25)]; 
    $imstr[3]["x"] = $imstr[2]["x"]+$font_size-1+rand(0,1); 
    $imstr[3]["y"] = rand(1,3); 

    //写入随机字串 
    for($i=0;$i<4;$i++){ 
        //获取随机较深颜色 
        $text_color = imagecolorallocate($im,rand(50,180),rand(50,180),rand(50,180)); 
        //画文字 
        imagechar($im,$font_size,$imstr[$i]["x"],$imstr[$i]["y"],$imstr[$i]["s"],$text_color); 
    }
    //显示图片 
    imagepng($im); 
    //销毁图片 
    imagedestroy($im); 

    $_SESSION["verification"] = $imstr[0]["s"].$imstr[1]["s"].$imstr[2]["s"].$imstr[3]["s"];
?> 

--------------------------------------------------------------------------------------------------------------------------------------------

验证码显示页面 例如message.html中

<input type="text" id="verification" name="verification" maxlength="5" value="">

<img src="includes/safe/verification.php" style="margin-top:4px;" title="点击刷新" onclick="this.src='includes/safe/verification.php?'+new Date().getTime()" />


这里验证码的js验证用ajax来实现,将数据从后台用php代码进行验证,验证完毕再发回数据

<script>

var verification = jQuery.trim(jQuery("#verification").attr("value"));

var myDate = new Date();

jQuery.ajax({url:'message.php',
type: 'GET',
data:{act:'ajaxVerification',verification:verification,date:myDate}, 
dataType: 'html', 
timeout: 1000, 
error: function(){
//如果失败了,就将等待图标在变回原来的样子
}, 
success: function(result){
//如果成功了,就将等待图标在变成新的样子
if(result!='yes'){
verificationValid = false;
}else{
verificationValid = true;
}
}
});

</script>


--------------------------------------------------------------------------------------------------------------------------------------------

php验证页面代码

/*------------------------------------------------------ */
//-- ajax前台验证验证码
/*------------------------------------------------------ */
if($_REQUEST['act'] == 'ajaxVerification'){
$verificationSession     = $_SESSION["verification"];
$verificationInput = $_REQUEST['verification'];
if(strcasecmp($verificationSession,$verificationInput)==0){
//验证成功
echo "yes";
}else{
//验证失败
echo "no";
}
}

出自:扎客网络

原创粉丝点击