为了账号安全,请及时绑定邮箱和手机立即绑定

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

<?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 < $length; $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 < 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,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)));
}


正在回答

2 回答

$sess_name = "verify";你在第三行已经变成可选参数赋值,为什么还要在第四行赋值?

0 回复 有任何疑惑可以回复我~
#1

半城疯沙 提问者

你好,刚把第4行去掉了,但还是有时候只有2,3个字母数字,不能全部显示,能否帮我再看一下呢,谢谢O(∩_∩)O
2017-01-05 回复 有任何疑惑可以回复我~
#2

半城疯沙 提问者

轮叔,找到问题了,string.func,php里join里,引号里面不能有空格,还是谢谢啦,昨天看的都要吐血了
2017-01-05 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//586c9eff000189a800930066.jpg

验证码不能显示完全,想问一下,如何让4个字母全部显示

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
手把手教你实现电商网站后台开发
  • 参与学习       117283    人
  • 解答问题       1999    个

手把手教你用PHP搭建电子商务平台,由浅入深教你搭建电商系统

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信