为什么我的验证码只显示一个数字?
丫头
丫头 2018-04-21 11:01:31
0
5
2923

//这节课我的代码是这样的,我检查了几遍,没看出有什么错误,但是显示出来的验证码只有一个数字...为什么会这样,求各位大神指导


//生成验证码的背景

header('Content-type:image/jpeg');

//背景图的尺寸

$width=60;

$height=15;

//创建画布

$img=imagecreatetruecolor($width, $height);

//分配颜色

$white=imagecolorallocate($img, 0xff, 0xff, 0xff);

//填充颜色到画布

imagefill($img, 0, 0, $white);

//生成验证码的值

$chars='1234567890';

$chars_len=strlen($chars);

$code_len=4;//验证码长度

$code="";//初始值

for ($i=1; $i < $code_len; ++$i) {

$rand=mt_rand(0,$chars_len-1);//随机取出四个数字

$code=$rand;//将取出的数字连接在一起

}

//存入session中,用验证

session_start();

$_SESSION['ver_code']=$code;

//随机分配字符串颜色

$str_color=imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));

//计算字符串居中显示

//字符串的大小

$font=5;

//画布尺寸

$img_w=imagesx($img);

$img_h=imagesy($img);

//字体尺寸

$font_w=imagefontwidth($font);

$font_h=imagefontheight($font);

//字符串尺寸

$code_w=$font_w*$code_len;

$code_h=$font_h;

$x=($img_w-$code_w)/2;

$y=($img_h-$code_h)/2;

//把验证码输出到画布上

imagestring($img, $font, $x, $y, $code, $str_color);

//直接输出

imagejpeg($img);

imagedestroy($img);


?>


丫头
丫头

好好学PHP。

全部回复 (3)
王承毅

for($i=0;$i<$code_len;$i++){

$rand=mt_rand(0,$chars_len-1);//随机取出数字

$code.=$rand; //将取出的四位数字拼接在一起

}

你少了个连接符

  • 回复 可以了哎,谢谢哈
    丫头 作者 2018-04-22 10:53:02
丫头

//生成验证码的背景

header('Content-type:image/jpeg');

//背景图的尺寸

$width=60;

$height=15;

//创建画布

$img=imagecreatetruecolor($width, $height);

//分配颜色

$white=imagecolorallocate($img, 0xff, 0xff, 0xff);

//填充颜色到画布

imagefill($img, 0, 0, $white);

//生成验证码的值

$chars='1234567890';

$chars_len=strlen($chars);

$code_len=4;//验证码长度

$code="";//初始值

for ($i=1; $i < $code_len; ++$i) {

$rand=mt_rand(0,$chars_len-1);//随机取出四个数字

$code.=$rand;//将取出的数字连接在一起

}

//存入session中,用验证

session_start();

$_SESSION['ver_code']=$code;

//随机分配字符串颜色

$str_color=imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));

//计算字符串居中显示

//字符串的大小

$font=5;

//画布尺寸

$img_w=imagesx($img);

$img_h=imagesy($img);

//字体尺寸

$font_w=imagefontwidth($font);

$font_h=imagefontheight($font);

//字符串尺寸

$code_w=$font_w*$code_len;

$code_h=$font_h;

$x=($img_w-$code_w)/2;

$y=($img_h-$code_h)/2;

//把验证码输出到画布上

imagestring($img, $font,$x.$y.$code,$str_color);

//直接输出

imagejpeg($img);

imagedestroy($img);


?>


    丫头

    TIM图片20180421112016.png

    改成这样之后就会变成3个数字了...

    • 回复 你for循环出错了,应该是这样的。 for($i=0;$i<$code_len;$i++){ $rand=mt_rand(0,$chars_len-1);//随机取出数字 $code.=$rand; //将取出的四位数字拼接在一起 }
      王承毅 作者 2018-04-21 12:35:29
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!