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初学者最好的开发工具 利用stream_socket_client实现多线程遇到问题,stream_socket_client没有调用给定的url,是不是方法不对? 小妹请教phpExcelReader读取中文excel文件出错问题 PHP中">>"符号是什么意思,高手帮看下这段代码 有谁搞过在php 扩展中 调用mysql php 与mysql 更新数据出现了错位的情况 找php软件工程师工作 一个牛人的代码,php发邮件的!不用fsocket MacOS上能安装PHP环境吗? 请问PHP如何处理这种数据类型? PHP命名空间问题 不使用表单提交,怎么获取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把分号去了