问答详情
源自:1-7 PHP验证码制作之通过SESSION存储验证信息

图片就是出不来啊

别的按钮什么的都可以出来,单独的captcha.php也可以出来,就是没有图片啊,如果我改变图片的宽度和高度的话,会有反应,就是不现实图片是什么情况,help

提问者:notmatter 2016-05-19 23:27

个回答

  • notmatter
    2016-06-02 17:37:28

    本来已经出来了,加了   换一个   以后又出不来了,这是我的captcha和form代码,应该是form有问题

    <?php
          
        session_start();
          
        $image=imagecreatetruecolor(100,30);//创建一个宽100,高30的图片
       $bgcolor=imagecolorallocate($image,255,255,255);
        imagefill($image,0,0,$bgcolor);//将白色$bgcolor填充底图,从左上角填充到右上角
        
     /*   
         for($i=0;$i<4;$i++) //增加数字
         {             
         $fontsize=6;//定义数字的字体大小
         $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//在这张图片资源上申请一个颜色,就是数字的颜色
         $fontcontent=rand(0,9);//数字的内容,随机生成0-9
          $x=($i*100/4)+rand(5,10);//坐标来标识随机数字写在哪里
          $y=rand(5,10);
         imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);//在$image的图像资源上,画随机数字
        }
    */
      $captch_code='';
       for($i=0;$i<4;$i++)//增加字母和数字
    {
          $fontsize=6;
          $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
          

          $data='abcdefghijkmnpqrstuvwxyz23456789';
          $fontcontent=substr($data,rand(0,strlen($data)),1);
           
           $captch_code.=$fontcontent;   //将生成的内容加入到空字符$captch_code中
          
           $x=($i*100/4)+rand(5,10);
           $y=rand(5,10);
         imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
        }
      $_SESSION['authcode']=$captch_code;



      for($i=0;$i<200;$i++)//增加200个以内的随机点
    {
         $pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));//生成点的颜色
         imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);//
    }
    for($i=0;$i<3;$i++)//增加线
    {
         $linecolor=imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
         imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
    }
         header('content-type: image/png');//表明输出内容的格式
        imagepng($image);//输出&image
    //end
      imagedestroy($image);//销毁&image
    ?>


    <?php
     header("content-type:text/html;charset=gb2312");
     if(isset($_REQUEST['authcode'])){
     session_start();
     if(strtolower($_REQUEST['authcode'])==$_SESSION['authcode']){
     echo '<font color="#0000CC">输入正确</font>';
     }else{
     echo '<font color="#CC0000"><b>输入错误</b></font>';
     }
     exit();
     }
    ?>


    <!DOCTYPE html>
    <html>
       <head>
          <meta charset="utf-8" />
           <title>确认验证码</title>
      </head>
      <body>
           <form method="post" action="./form.php">
               <p>
                 验证码图片:
                 <img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand();?>" width="100" height="30"/>
                 <a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?</a>
               </p>
               <p>请输入图片中的内容: <input type="text" name="authcode" value=""/></p>
               <p><input type="submit" value="提交"  style="padding:6px 20px;"></p>
           </form>
      </body>
    </html>
        

  • notmatter
    2016-06-02 17:25:05

    后来出来了,是我网速的问题,谢谢你啊

  • hello_cffex
    2016-05-31 16:33:03

    附上代码来看看啊