php生成图片,网页上显示一堆乱码,哪里设置错了?,求大神啊!

<?phpsession_start();for($i=0;$i<4;$i++){$_number.=dechex(mt_rand(0,15));//随机15个数,然后转... <?php
session_start();
for($i=0;$i<4;$i++) {
$_number.= dechex(mt_rand(0,15));
//随机15个数,然后转换成16进制,输出单一的,再进行累积
}
$_SESSION['code'] = $_number;
//跨页面调用
$_width = 100;
//设置图片的属性
$_height = 30;
//设置图片的属性
$_img = imagecreatetruecolor($_width,$_height);
//创建一个真彩图片
header('Content-Type:image/png');
//标头设置图片
imagepng($_img);
//输出图像
imagedestroy($_img);
?>
底下那张图是我转为utf-8无bom运行结果!汗!。。。。。。。
这也太打击人了!
展开
 我来答
zzs1949
2014-07-30 · TA获得超过1600个赞
知道小有建树答主
回答量:1250
采纳率:80%
帮助的人:1113万
展开全部

给你这个代码用吧

我给你改好了

<?php
session_start();

header("content-type:image/png");    //设置创建图像的格式

$image_width=70;                      //设置图像宽度

$image_height=18;                     //设置图像高度

srand(microtime()*100000);          //设置随机数的种子

for($i=0;$i<4;$i++){                  //循环输出一个4位的随机数

   $new_number.=dechex(rand(0,15));

}

$_SESSION['code'] =$new_number;    //将获取的随机数验证码写入到SESSION变量中     


$num_image=imagecreate($image_width,$image_height);  //创建一个画布

imagecolorallocate($num_image,255,255,255);     //设置画布的颜色

for($i=0;$i<strlen($_SESSION['code']);$i++){  //循环读取SESSION变量中的验证码

   $font=mt_rand(3,5);                             //设置随机的字体

   $x=mt_rand(1,8)+$image_width*$i/4;               //设置随机字符所在位置的X坐标

   $y=mt_rand(1,$image_height/4);                   //设置随机字符所在位置的Y坐标

   $color=imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));   //设置字符的颜色

   imagestring($num_image,$font,$x,$y,$_SESSION['code'][$i],$color);     //水平输出字符

}

imagepng($num_image);       //生成PNG格式的图像

imagedestroy($num_image);   //释放图像资源
?>
更多追问追答
追问
感谢了,可是还是乱码!
追答
你用的什么编辑器?试着用下notepad++,企鹅的软件库就能下载
yukon12345
2014-07-30 · TA获得超过1713个赞
知道大有可为答主
回答量:1827
采纳率:66%
帮助的人:991万
展开全部
我试了下我以前碰到过一下,是由于php的文件(utf8编码)有了dom 头造成的。你可以用个编辑器dw,notepad++什么的,另存php为不含dom头的文件试试。另外注意你的php是否开启了gd库
更多追问追答
追问

还是不行啊!

gd库貌似开着呢!

我试了,转为utf-8的无bom也不行还是乱码!

晕死了!搞了一上午了!

追答

看着想起来了,高版本php不能使用未定义变量,否则会报notice错误。

$_number和$_SESSION['code']在使用前必须用isset判断一下

或者你用老代码的话在最开始处加上

error_reporting(E_ALL & ~E_NOTICE);

屏蔽掉notice错误(不推荐)

isset()判断一下

来确保它被定义了。

下面这个图就输出一个黑底的PNG

<?php

session_start();

$_number="";

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

    $_number.= dechex(mt_rand(0,15));

    //随机15个数,然后转换成16进制,输出单一的,再进行累积

}

isset($_SESSION['code'])?0:$_SESSION['code']="";

$_SESSION['code'] = $_number;

//跨页面调用

$_width = 100;

//设置图片的属性

$_height = 30;

//设置图片的属性

$_img = imagecreatetruecolor($_width,$_height);

//创建一个真彩图片

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

//标头设置图片

imagepng($_img);

//输出图像

imagedestroy($_img);

?>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-07-30
展开全部

好像没有设置文件保存路径跟文件类型吧。这样我发另外一个给你。看下适合你用不。在外面没地方帮你调试PHP。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式