当前位置: 代码迷 >> PHP >> php注册码,该如何解决
  详细解决方案

php注册码,该如何解决

热度:66   发布时间:2016-04-28 18:40:22.0
php注册码
一个网站的注册码显示不出来
用 firefox 看是下面的问题 (服务器返回的是 text/html, php5.4)

在本地环境 把 php 改成5.3 就能显示注册码。 服务器返回的是 image/jpeg

以下是部门调试代码,帮忙分析为什么验证码在php5.3以上版本没法正常显示?

<?php
session_register("valicode");
$width=50;    //先定义图片的长、宽 
$height= isset($_REQUEST['height'])?$_REQUEST['height']:24;
$rand_str = "";
for($i=0;$i<4;$i++){
$rand_str .= chr(mt_rand(48,57));
}
if(function_exists("imagecreate")){

echo "fuction image create exists"; //added by stone on 20140724
$_SESSION["valicode"]=strtolower($rand_str);//注册session

$img = imagecreate($width,$height);//生成图片
    imagecolorallocate($img, 255,255,255);  //图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了 
    $black = imagecolorallocate($img,127,157,185);        

    for ($i=1; $i<=50; $i++) { //背景显示雪花的效果
        imagestring($img,1,mt_rand(1,$width),mt_rand(1,$height),"#",imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255))); 
    } 

for($i=0;$i<4;$i++){ //加入文字
imagestring($img, mt_rand(2,5), $i*10+6, mt_rand(2,5), $rand_str[$i],imagecolorallocate($img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
 }

   imagerectangle($img,0,0,$width-1,$height-1,$black);//先成一黑色的矩形把图片包围

if(function_exists("imagejpeg")){
ob_clean();
header("content-type:image/jpeg\r\n"); imagejpeg($img); 
}else{ 
ob_clean();
header("content-type:image/png\r\n"); imagepng($img); 
}

imagedestroy($img);

}else{
    echo "fuction image create NOT exists"; //added by stone on 20140724
$_SESSION["valicode"]="1234";
ob_clean();
header("content-type:image/jpeg\r\n");
$fp = fopen("./valicode.jpg","r");
echo fread($fp,filesize("./validate.jpg"));
fclose($fp);
}

?>


------解决方案--------------------
echo "fuction image create exists"; //added by stone on 20140724
echo "fuction image create NOT exists"; //added by stone on 20140724
你把这两句去掉就正常了。
  相关解决方案