PHP验证码

image.func.php

<?php
require_once 'string.func.php';
function verifyImage($type=1,$length=4,$pixel=40,$line=20,$sess_name = "verify"){
session_start();
$width = 80;
$height = 28;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image,255,255,255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 1, 1,$width-2,$height-2, $white);
$chars =getString ( $type, $length );
$_SESSION [$sess_name] = $chars;
$fontfiles =  array("consola.ttf","consolaz.ttf");
for($i = 0; $i < $length; $i ++) {
        $size = mt_rand ( 14, 22 );
        $angle = mt_rand ( - 15, 15 );
        $x = 5+$i*$size;
        $y = mt_rand ( 20, 26 );
        $fontfile = "font/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];
        $color = imagecolorallocate ( $image, mt_rand ( 20, 90 ), mt_rand ( 100, 180 ), mt_rand ( 190, 233) );
        $text = substr ( $chars, $i, 1 );
        imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );
    }
if ($pixel) {
    for($i = 0; $i < 50; $i ++) {
        imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );
    }
}
if ($line) {
    for($i = 1; $i < $line; $i ++) {
        $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
        imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );
    }
}
ob_clean();
header ( "content-type:image/gif" );
imagegif($image);
imagedestroy ( $image );
}
ob_clean();
verifyImage(3,4,20,5);

string.func.php

<?php 
function getString($type = 3,$length = 4){
    if($type == 1){
        $chars = join("",range("A", "Z"));
    }elseif($type == 2){
        $chars = join("",range(0,9));
    }elseif($type == 3){
        $chars = join("",array_merge(range(0,9),range("A", "Z"),range("a", "z")));
    }
   if ($length > strlen ( $chars )) {
        exit ( "字符串长度不够" );
    }
    $chars = str_shuffle ( $chars );
    return substr ( $chars, 0, $length );
}

验证码效果

注意:join()函数,分割符会占位置,默认为空,不用添加空格,否则字符会显示不完全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值