PHP做验证码无法显示图片 图片为X
<?phpsession_start();for($i=0;$i<4;$i++){$LL.=dechex(mt_rand(0,15));$_SESSION['code']...
<?php
session_start();
for ($i=0;$i<4;$i++){
$LL.=dechex(mt_rand(0,15));
$_SESSION['code']=$LL;
$_width =75;
$_height=20;
$_img=imagecreatetruecolor($_width,$_height);
$_white=imagecolorallocate($_img,255,255,255);
imagefill($_img,0,0,$_white);
$_black=imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagerectangle($_img,0,0,$_width,$_height,$_black);
for($i=0;$i<6;$i++){
$_rnd_color=imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imageline($_img,mt_rand(0,$_width), mt_rand(0,$_height),mt_rand(0,$_width), mt_rand(0,$_height), $_rnd_color);
}
header('content-Type:image/png');
imagepng($_img);
imagedestroy($_img);
?> 展开
session_start();
for ($i=0;$i<4;$i++){
$LL.=dechex(mt_rand(0,15));
$_SESSION['code']=$LL;
$_width =75;
$_height=20;
$_img=imagecreatetruecolor($_width,$_height);
$_white=imagecolorallocate($_img,255,255,255);
imagefill($_img,0,0,$_white);
$_black=imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagerectangle($_img,0,0,$_width,$_height,$_black);
for($i=0;$i<6;$i++){
$_rnd_color=imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imageline($_img,mt_rand(0,$_width), mt_rand(0,$_height),mt_rand(0,$_width), mt_rand(0,$_height), $_rnd_color);
}
header('content-Type:image/png');
imagepng($_img);
imagedestroy($_img);
?> 展开
2个回答
2015-10-29 · 知道合伙人软件行家
关注
展开全部
两个错误:
$LL 变量没有提前声明。
最外层的for循环没有与之匹配的右花括号。
修改后的代码:
session_start();
$LL 橡樱早= ''; // 变量要提前声明,并赋初始值。
for ($i = 0; $i < 4; $i ++) {
$LL .= dechex(mt_rand(0, 15));
$_SESSION['code'] = $LL;
$_width = 颂袭75;
$_height = 20;
$_img = imagecreatetruecolor($_width, $_height);
$_white = imagecolorallocate($_img, 255, 255, 255);
imagefill($_img, 0, 0, $_white);
$_black = imagecolorallocate($_img, mt_rand(0, 255), 梁雀mt_rand(0, 255), mt_rand(0, 255));
imagerectangle($_img, 0, 0, $_width, $_height, $_black);
for ($i = 0; $i < 6; $i ++) {
$_rnd_color = imagecolorallocate($_img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imageline($_img, mt_rand(0, $_width), mt_rand(0, $_height), mt_rand(0, $_width), mt_rand(0, $_height), $_rnd_color);
}
} // 缺少了最外层for循环对应的右花括号。
header('content-Type:image/png');
imagepng($_img);
imagedestroy($_img);
更多追问追答
追问
谢谢提醒啊。但是$LL.=dechex(mt_rand(0,15)); 也是声明啊,我自己重新弄了下 原来是IE浏览器设置问题。。。
追答
$LL .= dechex(mt_rand(0,15));
与
$LL = $LL . dechex(mt_rand(0,15));
等价。
那么所以,该操作之前,还是需要对$LL变量进行初始化的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询