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

验证码没显示

前半部分完全按照老师的代码来写的,验证码就是不显示,也没报错,跪求解答啊!!!

http://img1.sycdn.imooc.com//55acbbfe000159b411641627.jpg

正在回答

4 回答

问题以解决string.func.php 这文件的问题

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

Mr_zMin 提问者

非常感谢!
2015-07-23 回复 有任何疑惑可以回复我~
#2

Mr_zMin 提问者

再请问下 为什么在type=1时要用(array(range(0,9)),而在type=3时不需要呢
2015-07-23 回复 有任何疑惑可以回复我~
#3

Mr_zMin 提问者

非常感谢,我重新检查了下代码,应该是我粗心,代码写错了,很感谢您的解答!!!
2015-07-23 回复 有任何疑惑可以回复我~
#4

铁板烧上的鱿鱼 回复 Mr_zMin 提问者

join函数的第二参数是要数组的 而你给的是什么样的数组 就在这些值里面找显示的验证码 比如 $chars = join("",(array(0,1,2,3,4,5,6,7,8,9))); 就在这里面找 你显示的验证码 而你说的type 可能就是让你的验证码 显示 数字 还是字母 或者 大些字母 我也没仔细看也不知道是不是这样的
2015-07-23 回复 有任何疑惑可以回复我~
查看1条回复
<?php 
require_once 'string.func.php';
//通过GD库做验证码
function verifyImage($type=1,$length=4,$pixel=0,$line=0,$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 = buildRandomString ( $type, $length );
	$_SESSION [$sess_name] = $chars;
	//$fontfiles = array ("msyh.ttf", "msyhbd.ttf", "simkai.ttf", "SIMLI.TTF", "simsun.ttc", "SIMYOU.TTF" );
	$fontfiles = array ("SIMYOU.TTF" );
	//由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体
	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 = "../fonts/" . $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 );
		}
	}
	header ( "content-type:image/gif" );
	imagegif ( $image );
	imagedestroy ( $image );
}
<?php 
/**
 * 生成验证码
 * @param int $type
 * @param int $length
 * @return string
 */
function buildRandomString($type=1,$length=4){
	if ($type == 1) {
		$chars = join ( "", range ( 0, 9 ) );
	} elseif ($type == 2) {
		$chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ) ) );
	} elseif ($type == 3) {
		$chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ), range ( 0, 9 ) ) );
	}
	if ($length > strlen ( $chars )) {
		exit ( "字符串长度不够" );
	}
	$chars = str_shuffle ( $chars );
	return substr ( $chars, 0, $length );
}

为什么我复制老师的代码测试不显示?gd库也开了http://img1.sycdn.imooc.com//563da8600001e54212000675.jpg

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

把你的header("Content-type: image/png;")替换成下面三行看看

header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");

ob_clean(); 

header("Content-type: image/png;charset=utf8");


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

Mr_zMin 提问者

还是不行,貌似是require_once 的路径问题,因为我在文件头上加一句echo 'here';exit;,可以打印出here,加到require_once后面就打印不出来了,请问能帮我解答下require_once的路径问题吗?谢谢啦
2015-07-22 回复 有任何疑惑可以回复我~
#2

Mr_zMin 提问者

我自己在网上也看了,改成绝对路径require_once (dirname(__FILE__).'/'."shopImooc/lib/string.func.php");也不行!!!
2015-07-22 回复 有任何疑惑可以回复我~

gd库有开吗

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

Mr_zMin 提问者

extension=php_gd2.dll 是这个吧 开启了哦
2015-07-21 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

验证码没显示

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