老师,为什么只有一个字母?

老师,为什么只有一个字母?

mycode.php

<?php


//生成验证码

$im = imagecreatetruecolor(400,200);


$back = imagecolorallocate($im,mt_rand(200,250),mt_rand(200,250),mt_rand(200,250));


imagefill($im,0,0,$back);




//生成随机字符串

$string = 'abcdefg123456789ABCDEFGHIGK';


//生成随机字符串

for($i=0;$i<4;$i++)

{

    //创建字体颜色

    $stringColor = imagecolorallocate($im,mt_rand(50,150),mt_rand(50,150),mt_rand(50,150));

    $str = $string[mt_rand(0,strlen($string)-1)];

    imagettftext($im,15,mt_rand(-10,10),20+$i*15,100,$stringColor,'font/comicz.ttf',$str);


}


//图像中写入字符串

imagestring($im,5,mt_rand(20,imagesx($im)-50),mt_rand(10,imagesy($im)),$str,$stringColor);


ob_clean();

header('Content-Type:image/png');

imagepng($im);

----------------------------------------------http://img1.sycdn.imooc.com//climg/5d6fb62e0001c3f719110862.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

您好,字符显示不同颜色参考如下:

<?php
//生成验证码
$im = imagecreatetruecolor(400,200);
$back = imagecolorallocate($im,mt_rand(200,250),mt_rand(200,250),mt_rand(200,250));
imagefill($im,0,0,$back);
//生成随机字符串
$string = 'abcdefg123456789ABCDEFGHIGK';
//生成随机字符串
for($i=0;$i<4;$i++)
{
    //创建字体颜色
    $stringColor = imagecolorallocate($im,mt_rand(50,150),mt_rand(50,150),mt_rand(50,150));
    // 会将获取的随机数拼接在一起
    $str = $string[mt_rand(0,strlen($string)-1)];
    imagettftext($im,15,mt_rand(-10,10),20+$i*15,100,$stringColor,'font/comicz.ttf',$str);
}
header('Content-Type:image/png');
imagepng($im);

祝学习愉快!

好帮手慕小尤 2019-09-05 09:47:04

同学你好,因在循环中生成的字符串没有进行拼接导致在循环中进行覆盖。代码如下:

<?php
//生成验证码
$im = imagecreatetruecolor(400,200);
$back = imagecolorallocate($im,mt_rand(200,250),mt_rand(200,250),mt_rand(200,250));
imagefill($im,0,0,$back);
//生成随机字符串
$string = 'abcdefg123456789ABCDEFGHIGK';
//生成随机字符串
for($i=0;$i<4;$i++)
{
    //创建字体颜色
    $stringColor = imagecolorallocate($im,mt_rand(50,150),mt_rand(50,150),mt_rand(50,150));
    // 会将获取的随机数拼接在一起
    $str .= $string[mt_rand(0,strlen($string)-1)];
    imagettftext($im,15,mt_rand(-10,10),20+$i*15,100,$stringColor,'font/comicz.ttf',$str);
}

//图像中写入字符串
imagestring($im,5,mt_rand(20,imagesx($im)-50),mt_rand(10,imagesy($im)),$str,$stringColor);
ob_clean();
header('Content-Type:image/png');
imagepng($im);

祝学习愉快!

  • 提问者 陈莺莺呀 #1
    老师,加了.之后变成四个字母了,但是四个字母的颜色是一样的,为什么不是每次生成不一样的颜色呢?
    2019-09-05 19:30:34
  • 好帮手慕小尤 回复 提问者 陈莺莺呀 #2
    同学你好,因在循环中生成的颜色变量会下一次循环进行覆盖,所以字母的颜色时是相同的。祝学习愉快!
    2019-09-06 09:40:48
  • 提问者 陈莺莺呀 #3
    那怎样才能生成4个颜色不一样的数字呢?
    2019-09-07 20:53:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师