为了账号安全,请及时绑定邮箱和手机立即绑定

图片出不来

就是图片出不来,求大神指点,急求http://img1.sycdn.imooc.com//57404d170001050205170327.jpg

这是我的代码

<?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 border="1" src="./captcha.php?r=<?php echo rand();?>" width="100px" height="30px"></p>
           <p>请输入图片中的内容: <input type="text" name="authcode" value=""/></p>
           <p><input type="submit" value="提交"  style="padding:6px 20px;"></p>
       </form>
  </body>
</html>
    

正在回答

3 回答

我,加了  换一个  以后又出不来了

应该只是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>
    

0 回复 有任何疑惑可以回复我~

ok~~~不用谢


0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//574450bc0001275f04280158.jpg



你好,整篇看下来,说实话没看出来,

我就未经你的允许吧你的代码完全拷贝到我的文件中去现地做实验,是可以生成出图片的

我估计是不是你的文件存储编码格式有差别,首先说明,我将你的代码拷贝后,所有文件的编码格式都是utf-8的,最终都生成出来了图片,你自己检查一下。

同时,我把所有文件都存为utf-8后,我将

<?php
 header("content-type:text/html;charset=gb2312");
 if(isset($_REQUEST['authcode'])){

加粗地方也改成了utf-8,不然我这里显示乱码。


ps:

    <p>验证码图片: <img border="1" src="./captcha.php?r=<?php echo rand();?>" width="100px" height="30px"></p>

请问我加粗的地方,你为什么要加这一段代码?我有点没看懂,

0 回复 有任何疑惑可以回复我~
#1

notmatter 提问者

其实,我两天之后,又打开运行就可以出来图片了,,,,所以,原来是我网速的问题,sorry啊,那个编码方式,我的utf-8是出不来的,我的适合GB2312,下面加粗那里,是代表随机获得,我是看着视频敲的,不是很清楚。谢谢你啊
2016-05-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP实现验证码制作
  • 参与学习       37915    人
  • 解答问题       321    个

各种形态验证码核心原理与实现技巧,讲解实现过程中的技术难点

进入课程

图片出不来

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信