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

黑色背景中间白框,没有显示验证码,弄了一天了,求解救

<?php
/**
 * Created by PhpStorm.
 * User: a117
 * Date: 2018/10/14
 * Time: 5:45 PM
 */

require_once 'string.func.php';

//创建画布,GD库做验证码
$width=80;
$height=30;
$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);
$type=1;
$length=4;
$chars=buildRandomString($type,$length);

//比对验证码
$sess_name="verify";
$_SESSION[$sess_name]=$chars;

//字体数组
$fontfile=array("Avenir.ttc","Helvetica.ttc","Kohinoor.ttc");

//产生验证码
for ($i=9;$i<$length;$i++){
    $size=mt_rand(14,18);
    $angle=mt_rand(-15,15);
    $x=5+$i*$size;
    $y=mt_rand(20,26);
    $fontfile="../fonts/".$fontfile[mt_rand(0,count($fontfile)-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);
}

header("content-type:image/gif");
imagegif($image);
imagedestroy($image);

下面是string.func.php的

<?php
/**
 * Created by PhpStorm.
 * User: a117
 * Date: 2018/10/14
 * Time: 5:46 PM
 */
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库应该开了

https://img1.sycdn.imooc.com//5bc42b3b00018f5c20700770.jpg

正在回答

6 回答

我也出现了这种情况,如果你的代码跟老师的一模一样且运行结果没有出现验证码,试着切换到5.*版本运行

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

黑背景可能是浏览器的原因,好象没关系的,不妨碍以后代码的使用。您使用360??

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

qq_AgentSH_fxLP45

但是换了谷歌也是黑背景没有文字…
2019-07-15 回复 有任何疑惑可以回复我~
1、$fontfile=array("Avenir.ttc","Helvetica.ttc","Kohinoor.ttc");这里的变量名$fontfile改为
$fontfiles,即$fontfiles=array("Avenir.ttc","Helvetica.ttc","Kohinoor.ttc");
2、 $fontfile="../fonts/".$fontfile[mt_rand(0,count($fontfile)-1)];改为
$fontfile="../fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];
试试看,应该可以了


0 回复 有任何疑惑可以回复我~
1、$fontfile=array("Avenir.ttc","Helvetica.ttc","Kohinoor.ttc");这里的变量名$fontfile改为$fontfiles,即$fontfiles=array("Avenir.ttc","Helvetica.ttc","Kohinoor.ttc");
2、 $fontfile="../fonts/".$fontfile[mt_rand(0,count($fontfile)-1)];改为$fontfile="../fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];
试试看,应该可以了


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

我也是

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

举报

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

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

进入课程

黑色背景中间白框,没有显示验证码,弄了一天了,求解救

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