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运行结果!汗!。。。。。。。
这也太打击人了! 展开
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运行结果!汗!。。。。。。。
这也太打击人了! 展开
3个回答
展开全部
给你这个代码用吧
我给你改好了
<?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++,企鹅的软件库就能下载
展开全部
我试了下我以前碰到过一下,是由于php的文件(utf8编码)有了dom 头造成的。你可以用个编辑器dw,notepad++什么的,另存php为不含dom头的文件试试。另外注意你的php是否开启了gd库
更多追问追答
追答
看着想起来了,高版本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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询