PHP 用图片输出验证码 无法正常显示
生活随笔
收集整理的這篇文章主要介紹了
PHP 用图片输出验证码 无法正常显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在學習PHP用圖片生產驗證碼過程中,圖片無法正常生成,從網上查了一些資料找到兩種解決方法
最初的代碼:
<?php session_start(); //循環出四位 創建隨機碼 for ($i=0;$i<4;$i++) {$_nmsg .= dechex(mt_rand(0,15)); } //將隨機碼保存在session $_SESSION['code'] = $_nmsg; echo $_SESSION['code'];//開始創建圖片 //長和高 $_width = 75; $_height = 25; //創建一張圖像 $_img = imagecreatetruecolor($_width,$_height); //輸出圖像 header("Content-Type: image/png"); imagepng($_img); imagedestroy($_img); ?>在瀏覽器無法正常輸出,結果如下圖所示:
根據從網上搜索的資料,總結了兩種方法:
第一種:用 ob_clean();方法清理緩沖區的內容。
如果在網站中經常使用生成圖片這類的文件,要想不出現上述錯誤,就要用ob_clean();方法清理緩沖區。
<?php session_start(); //循環出四位 創建隨機碼 for ($i=0;$i<4;$i++) {$_nmsg .= dechex(mt_rand(0,15)); } $_SESSION['code'] = $_nmsg; echo $_SESSION['code'];/*用ob_clean();函數清理輸出緩沖區中的內容*/ ob_clean();//長和高 $_width = 75; $_height = 25; //創建一張圖像 $_img = imagecreatetruecolor($_width,$_height); //輸出圖像 header("Content-Type: image/png"); imagepng($_img); imagedestroy($_img); ?>加上ob_clean();函數后瀏覽器輸出正常,結果如下,有個 75*25的黑色區域,圖片正常輸出:
第二種方法:
因為圖片是二進制的文件,如果前邊有輸出(echo print_r等)的話,可能會相當于在圖片前面多出某些字節內容,使瀏覽器輸出錯誤。
解決方法,輸出(echo print_r)注釋掉 即可。我在這把代碼移到后邊注釋掉。
<?php session_start(); //長和高 $_width = 75; $_height = 25; //創建一張圖像 $_img = imagecreatetruecolor($_width,$_height); //輸出圖像 header("Content-Type: image/png"); imagepng($_img); imagedestroy($_img);//循環出四位 創建隨機碼 //for ($i=0;$i<4;$i++) //{// $_nmsg .= dechex(mt_rand(0,15)); //} //將隨機碼保存在session 一個站點session可跨頁面持久保存//$_SESSION['code'] = $_nmsg; //echo $_SESSION['code'];
?>
結果 正常輸出:
轉載于:https://www.cnblogs.com/yangjunnan/p/8005990.html
總結
以上是生活随笔為你收集整理的PHP 用图片输出验证码 无法正常显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: markdown转html
- 下一篇: 用于改善质量、稳定性和多样性的可增长式G