书上抄的一个图片验证码,为什么只输出一位。新手求解!!

qq_34270201 2016-04-04 12:37:18
<?php

session_start ();
header ( "content-type:image/png" );
$width = 100;
$height = 30;
$im = imagecreate ( $width, $height );
imagecolorallocate ( $im, 255, 200, 200 );

for($i=0;$i<4;$i++) {
$num =dechex(rand ( 0, 15 ));
}
@$_SESSION [check] = $num;

for($i = 0; $i < strlen( @$_SESSION [check] ); $i ++) {
$font = mt_rand ( 3, 5 );
$x = mt_rand ( 1, 8 )+$width*$i/4;
$y = mt_rand ( 1, $height / 4 );
$string = @$_SESSION [check];
$color = imagecolorallocate ( $im, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) );
imagestring ( $im, $font, $x, $y, $string, $color );
}
imagepng ( $im );
imagedestroy($im);
...全文
117 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33958482 2016-04-05
  • 打赏
  • 举报
回复
函数有问题,dechex是将十进制变为16进制,也就是说不管你怎么弄都不可能出现你要的结果。
xuzuning 2016-04-04
  • 打赏
  • 举报
回复
1、 for($i=0;$i<4;$i++) { @$num .=dechex(rand ( 0, 15 )); } 不然只会是最后一个,这就是图中只有一个字符的原因 2、 imagestring ( $im, $font, $x, $y, $string[$i], $color ); 循环中每次只能写一个字符
qq_34270201 2016-04-04
  • 打赏
  • 举报
回复
谢谢了,那个点,我也有看到,点上去就出错,现在发现是编码的原因, 现在代码应该没错了,但是换成了UTF-8的编码图片出不来了。是个X。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧