php 验证码 干扰线,做的验证码可以显示干扰线和点但是数字显示不出来,望大神帮忙看一下,谢谢...

require_once 'string.func.php';

function verifyImage($type=1,$length=4,$pixel=40,$line=20,$sess_name = "verify"){

$sess_name = "verify";

session_start();

$width = 200;

$height = 100;

$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 

$size = mt_rand ( 14, 18 );

$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 ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );

$text = substr ( $chars, $i, 1 );

imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );

}

if ($pixel) {

for($i = 0; $i 

imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );

}

}

if ($line) {

for($i = 1; $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,11);

字体在font文件中<?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 );

}

function getUniName(){

return md5(uniqid(microtime(true),true));

}

function getExt($filename){

return strtolower(end(explode(".",$filename)));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值