Heim > php教程 > php手册 > Hauptteil

PHP验证码图片不能输出解决办法

WBOY
Freigeben: 2016-06-13 09:32:41
Original
800 Leute haben es durchsucht

   PHP验证码图片不能输出

  文件名 global_func.php

  function _code(){

  //运行验证码

  //随记码个数

  $_rnd_code=4;

  for($i=0;$i

  $_nmsg.=dechex(mt_rand(0, 15));

  }

  //保存在session中

  $_SESSION['code']=$_nmsg;

  //长和高

  $_width=75;

  $_height=25;

  //创建一张图片

  $_img=imagecreatetruecolor($_width,$_height);

  //白色

  $_white=imagecolorallocate($_img, 255, 255, 255);

  //填充

  imagefill($_img, 0, 0, $_white);

  $_flag=false;

  if($_flag){

  //黑色,边框

  $_black=imagecolorallocate($_img, 0,0,0);

  imagerectangle($_img, 0,0, $_width-1,$_height-1,$_black);

  }

  //画出6个线条

  for($i=0;$i

  $_rnd_color=imagecolorallocate($_img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));

  imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height), $_rnd_color);

  }

  //随即雪花

  for($i;$i

  $_rnd_color=imagecolorallocate($_img,mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));

  imagestring($_img,1, mt_rand(1, $_width),mt_rand(1,$_height), '*', $_rnd_color);

  }

  //输出验证码

  for($i=0;$i

  $_rnd_color=imagecolorallocate($_img, mt_rand(0, 100), mt_rand(0, 150), mt_rand(0, 200));

  imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10), mt_rand(1,$_height/2),$_SESSION['code'][$i],$_rnd_color);

  }

  //输出图像

  header('Content-Type:image/png');

  imagepng($_img);

  //销毁

  imagedestroy($_img);

  }

  这个我要是调用 global_func.php 这个文件下的 function _code(); 就出错是一个红叉。

  code.php

  _code();

  这个是我直接写在code.php中就能够使用。

  code.php

  //随记码个数

  $_rnd_code=4;

  for($i=0;$i

  $_nmsg.=dechex(mt_rand(0, 15));

  }

  //保存在session中

  $_SESSION['code']=$_nmsg;

  //长和高

  $_width=75;

  $_height=25;

  //创建一张图片

  $_img=imagecreatetruecolor($_width,$_height);

  //白色

  $_white=imagecolorallocate($_img, 255, 255, 255);

  //填充

  imagefill($_img, 0, 0, $_white);

  $_flag=false;

  if($_flag){

  //黑色,边框

  $_black=imagecolorallocate($_img, 0,0,0);

  imagerectangle($_img, 0,0, $_width-1,$_height-1,$_black);

  }

  //画出6个线条

  for($i=0;$i

  $_rnd_color=imagecolorallocate($_img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));

  imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height), $_rnd_color);

  }

  //随即雪花

  for($i;$i

  $_rnd_color=imagecolorallocate($_img,mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));

  imagestring($_img,1, mt_rand(1, $_width),mt_rand(1,$_height), '*', $_rnd_color);

  }

  //输出验证码

  for($i=0;$i

  $_rnd_color=imagecolorallocate($_img, mt_rand(0, 100), mt_rand(0, 150), mt_rand(0, 200));

  imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10), mt_rand(1,$_height/2),$_SESSION['code'][$i],$_rnd_color);

  }

  //输出图像

  header('Content-Type:image/png');

  imagepng($_img);

  //销毁

  imagedestroy($_img);

  这段验证码我直接运行不封装成函数的形式可以使用验证码一切正常。

  但是我用function _code() 之后 在调用 _code() 在html中显示的是一个红叉。不知道是为什么

  ------解决方案--------------------

  会不会是 header('Content-Type:image/png'); 的原因,

  BOM头会影响到浏览器预期的文件类型

  ------解决方案--------------------

  即使是写成函数,调用也是没有问题的。

  

  function _code(){

  //运行验证码

  }

  ?>

  另一个页面

  

  include("./test/test.php");

  _code();

  ------解决方案--------------------

  你打开php的出错提示你就会知道为什么了..

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!