php验证码显示红色叉叉 php验证码显示红色叉叉这个问题困扰我半天了。在本机上测试是正常的,环境是win2003+php+mssql.显示正常。现在我把程序转移到新服务器上,验证码就不显示了,不知道是什么情况,我检测了服务器环境,gd是支持的,如下图:但是,就是不显示,如有高手,请跟帖,谢谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请问你的服务器是linux还是window2003?如果是linux 看看路径有没有问题... 还有一种就是直接访问你的生成验证码图片的php文件.看服务器能否生成... 服务器是win2003,我直接访问下,不能生成。请指教。 把代码贴出来看啊。你的header写得正确吗? 我试了刚刚,还是显示红叉。代码是: session_start(); function random($len) { if($i==0) { $str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $s=""; for($i=0;$i <$len;$i++){ $s.=$str[rand(0,35)]; } } return strtoupper($s); } $code=random(4); $width = 50; $height = 20; @header("Content-Type:image/png"); $_SESSION['VCODE'] = $code; $im=imagecreate($width,$height); $back=imagecolorallocate($im,255, 255, 255); $pix=imagecolorallocate($im,187,230,247); $font=imagecolorallocate($im,41,163,238); for($i=0;$i <1000;$i++) { imagesetpixel($im,rand(0,$width),rand(0,$height),$pix); } imagestring($im, 5, 7, 2,$code, $font); imagerectangle($im,0,0,$width-1,$height-1,$font); imagepng($im); imagedestroy($im); 代码没问题呀。你把header前面的@去掉会有错误提示吗?比如header already sent.之类的。 可能有问题了..你的session_start();居然就是在本页面...如果你引入到要使用的php页面的时候,你的开启session之前已经有输出了....所以建议将session_start()放在要用验证码的页面的顶部,或者配置文件中..(导入配置文件也要在顶部.) 如果你将代码放在服务器上直接访问还是不能生成php验证码就是说明你的环境有问题... 你打开错误提示信息看看你的服务器的 php 是哪个版本 先测试一下,是否能生成图片文件。图片文件是否正常。再检查一下header("Content-Type:image/png");这个语句前是否有输出?用firefox里的fireDebug看看头信息输出了什么? 你让我很纠结。我就是换了个php.ini文件,然后修改下配置,还能怎么说清楚呢。 1、extension_dir = "c:\php\extensions"2、extension=php_gd_gif.dllextension=php_gd.dllextension=php_gd2.dll1把路径改了,2把分号去了 女孩子适合做程序员吗,PHP初学者最好的开发工具 如何将PHP页面中的变量值传给HTML页面 网站一般怎样批量发送邮件? 求助一个PHP的网站程序,达到的效果请看文章说明 求一个PHP,AJAX的会员在线即时聊天程序 mysql 连接错误'localhost' (10055) 请问取左边5个字符应该用什么函数? 如何将 Session 存放在数据库中,进行跨域名!(求源码) 求取得浏览者IP地址的正确代码(包括公网和内网)! 用递归addslashes函数转义数组 PHP post为空 不使用表单提交,怎么获取HTML中的变量? 使用哪种php开发工具比较好
如果是linux 看看路径有没有问题...
看服务器能否生成...
服务器是win2003,我直接访问下,不能生成。请指教。
function random($len)
{
if($i==0)
{
$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$s="";
for($i=0;$i <$len;$i++){
$s.=$str[rand(0,35)];
}
}
return strtoupper($s);
}
$code=random(4);
$width = 50;
$height = 20;
@header("Content-Type:image/png");
$_SESSION['VCODE'] = $code;
$im=imagecreate($width,$height);
$back=imagecolorallocate($im,255, 255, 255); $pix=imagecolorallocate($im,187,230,247); $font=imagecolorallocate($im,41,163,238); for($i=0;$i <1000;$i++)
{
imagesetpixel($im,rand(0,$width),rand(0,$height),$pix);
}
imagestring($im, 5, 7, 2,$code, $font);
imagerectangle($im,0,0,$width-1,$height-1,$font);
imagepng($im);
imagedestroy($im);
你把header前面的@去掉会有错误提示吗?比如header already sent.之类的。
你的session_start();居然就是在本页面...
如果你引入到要使用的php页面的时候,你的开启session之前已经有输出了....
所以建议将session_start()放在要用验证码的页面的顶部,或者配置文件中..(导入配置文件也要在顶部.)
就是说明你的环境有问题...
看看你的服务器的 php 是哪个版本
再检查一下header("Content-Type:image/png");
这个语句前是否有输出?
用firefox里的fireDebug看看头信息输出了什么?
2、extension=php_gd_gif.dll
extension=php_gd.dll
extension=php_gd2.dll1把路径改了,2把分号去了