php验证码显示红色叉叉这个问题困扰我半天了。在本机上测试是正常的,环境是win2003+php+mssql.显示正常。现在我把程序转移到新服务器上,验证码就不显示了,不知道是什么情况,我检测了服务器环境,gd是支持的,如下图:但是,就是不显示,如有高手,请跟帖,谢谢了。

解决方案 »

  1.   

    请问你的服务器是linux还是window2003?
    如果是linux 看看路径有没有问题...
      

  2.   

    还有一种就是直接访问你的生成验证码图片的php文件.
    看服务器能否生成...
      

  3.   


    服务器是win2003,我直接访问下,不能生成。请指教。
      

  4.   

    把代码贴出来看啊。你的header写得正确吗?
      

  5.   

    我试了刚刚,还是显示红叉。代码是: 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);
      

  6.   

    代码没问题呀。
    你把header前面的@去掉会有错误提示吗?比如header already sent.之类的。
      

  7.   

    可能有问题了..
    你的session_start();居然就是在本页面...
    如果你引入到要使用的php页面的时候,你的开启session之前已经有输出了....
    所以建议将session_start()放在要用验证码的页面的顶部,或者配置文件中..(导入配置文件也要在顶部.)
      

  8.   

    如果你将代码放在服务器上直接访问还是不能生成php验证码
    就是说明你的环境有问题...
      

  9.   

    你打开错误提示信息
    看看你的服务器的 php 是哪个版本
      

  10.   

    先测试一下,是否能生成图片文件。图片文件是否正常。
    再检查一下header("Content-Type:image/png");
    这个语句前是否有输出?
    用firefox里的fireDebug看看头信息输出了什么?
      

  11.   

    你让我很纠结。我就是换了个php.ini文件,然后修改下配置,还能怎么说清楚呢。
      

  12.   

    1、extension_dir = "c:\php\extensions"
    2、extension=php_gd_gif.dll
    extension=php_gd.dll
    extension=php_gd2.dll1把路径改了,2把分号去了
      

  13.   

    女孩子适合做程序员吗,PHP初学者最好的开发工具