程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP驗證碼圖片不能輸出解決辦法

PHP驗證碼圖片不能輸出解決辦法

編輯:關於PHP編程

       PHP驗證碼圖片不能輸出

      文件名 global_func.php

      function _code(){

      //運行驗證碼

      //隨記碼個數

      $_rnd_code=4;

      for($i=0;$i<$_rnd_code;$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<6;$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<100;$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<$_rnd_code;$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<6;$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<100;$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的出錯提示你就會知道為什麼了..

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved