<?php
session_start();
header("content-type:image/png");     //设置创建图像的格式
$image_width=70;                      //设置图像宽度
$image_height=18;                     //设置图像高度
srand(microtime()*100000);            //设置随机数的种子
for($i=0;$i<4;$i++){                  //循环输出一个4位的随机数
   $new_number.=dechex(rand(0,15));
}
$_SESSION[check_checks]=$new_number;    //将获取的随机数验证码写入到SESSION变量中     $num_image=imagecreate($image_width,$image_height);  //创建一个画布
imagecolorallocate($num_image,255,255,255);       //设置画布的颜色
for($i=0;$i<strlen($_SESSION[check_checks]);$i++){  //循环读取SESSION变量中的验证码
   $font=mt_rand(3,5);                             //设置随机的字体
   $x=mt_rand(1,8)+$image_width*$i/4;               //设置随机字符所在位置的X坐标
   $y=mt_rand(1,$image_height/4);                   //设置随机字符所在位置的Y坐标
   $color=imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));    //设置字符的颜色
   imagestring($num_image,$font,$x,$y,$_SESSION[check_checks][$i],$color);      //水平输出字符
}
imagepng($num_image,"a.png");       //生成PNG格式的图像
imagedestroy($num_image);   //释放图像资源
?>------------------------------------------我是快吐血的分割线---------------------------------------------能在本地文件夹下生成A.PNG的图片,但是在DW和浏览器均不能显示,DW里一个问号,浏览器大红XX,运行不报错。

解决方案 »

  1.   

    如果网页显示,开头加上error_reporting(E_ALL ^ E_NOTICE);//这是因为你有些变量未定义,会有notice提示
    imagepng($num_image,"a.png");你都输出到文件了,耍人吧?
      

  2.   

    不是啊。。因为index.php文件显示不出验证码,才在这里加了个A.PNG看能不能输出文件
      

  3.   

    这是index.php<?php
    session_start();
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>CAPTCHA应用</title>
    <style type="text/css">
    <!--
    .STYLE1 {
    font-size: 12px;
    color: #FFFFFF;
    font-weight: bold;
    }
    .style2 {font-weight: bold; font-size: 12px;}
    -->
    </style>
    </head>
    <body>
    <form name="form" method="post" action="home.php">
      <table width="675" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td background="images/index_05.gif">
          <table width="675" height="300"  border="0" cellpadding="0" cellspacing="0">
            <tr height="70" align="center" valign="top"></tr>        
            <tr>
              <td height="43" align="center" valign="baseline">&nbsp;</td>
              <td align="center" valign="middle">&nbsp;</td>
              <td align="center" valign="baseline">&nbsp;</td>
            </tr>
            <tr>
              <td width="382" height="24" align="center" valign="baseline">&nbsp;</td>
              <td width="207" height="24" valign="middle"><span class="style2">用户名</span><span class="STYLE1">
                <input  name="txt_user" id="txt_user" style="height:20px " size="10">
                  </span></td>
              <td width="86" height="24" align="center" valign="baseline">&nbsp;</td>
            </tr>
            <tr>
              <td height="24" align="center" valign="baseline">&nbsp;</td>
              <td height="24" valign="middle"><span class="style2">密 码</span><span class="STYLE1">
              <input  name="txt_pwd" type="password" id="txt_pwd" style="FONT-SIZE: 9pt; height:20px" size="10">
              </span></td>
              <td height="24" align="center" valign="baseline">&nbsp;</td>
            </tr>
            <tr>
              <td height="24" align="center" valign="baseline">&nbsp;</td>
              <td height="24" valign="middle"><span class="style2">验证码</span><span class="STYLE1">
              <input name="checks" size="6" style="height:20px ">
              <img src="checks.php"></span>&nbsp;&nbsp;</td>
              <td height="24" align="center" valign="baseline">&nbsp;</td>
            </tr>
            <tr>
              <td height="40" align="center" valign="baseline">&nbsp;</td>
              <td align="center" valign="baseline">&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="Submit" value="登录"></td>
              <td align="center" valign="baseline">&nbsp;</td>
            </tr>
            <tr height="70" align="center" valign="baseline"></tr>
          </table></td>
        </tr>  </table>
    </form>
    </body>
    </html>
      

  4.   

    <?php
    ob_start();
    session_start();
    header("content-type:image/png"); //设置创建图像的格式
    $image_width=70; //设置图像宽度
    $image_height=18; //设置图像高度
    srand(microtime()*100000); //设置随机数的种子
    for($i=0;$i<4;$i++){ //循环输出一个4位的随机数
       $new_number.=dechex(rand(0,15));
    }
    $_SESSION[check_checks]=$new_number; //将获取的随机数验证码写入到SESSION变量中   $num_image=imagecreate($image_width,$image_height); //创建一个画布
    imagecolorallocate($num_image,255,255,255); //设置画布的颜色
    for($i=0;$i<strlen($_SESSION[check_checks]);$i++){ //循环读取SESSION变量中的验证码
       $font=mt_rand(3,5); //设置随机的字体
       $x=mt_rand(1,8)+$image_width*$i/4; //设置随机字符所在位置的X坐标
       $y=mt_rand(1,$image_height/4); //设置随机字符所在位置的Y坐标
       $color=imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)); //设置字符的颜色
       imagestring($num_image,$font,$x,$y,$_SESSION[check_checks][$i],$color); //水平输出字符
    }
    ob_clean();
    imagepng($num_image,"a.png"); //生成PNG格式的图像
    imagedestroy($num_image); //释放图像资源
    ?>
    试试看
      

  5.   

    你的代码没有问题!鉴于
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">你首先应检查
    checks.php 文件是否有 BOM 头
      

  6.   

    6楼,是把在DW里面 标题/编码里面的 包括Unicode签名(bom)的勾选去掉吗?已经去掉了,还是不显示。。
      

  7.   

    你先看看你的浏览器是不是所有的png都无法显示。也就是别的网站的png文件是否正常显示
      

  8.   

    8楼,我的浏览器可以显示png的。。
      

  9.   

    我 在 你 的 显 示 图 片 代 码 开 头 ,加 上
    error_reporting(E_ALL ^ E_NOTICE);
    就 能 正 确 显 示
    你 还 有 问 题,可 以 取 消 header,以 及 图 片 输 出 ,看 看 有 什 么 错 误 、提 示
      

  10.   

    看你的浏览器是不是所有的png都无法显示
      

  11.   

    10楼大大大大大好人啊!!!TOT终于出来了技术帝,小女子表示崇拜您