日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 用图片输出验证码 无法正常显示

發布時間:2025/5/22 php 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 用图片输出验证码 无法正常显示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。