在PHP 中,如果你想要通過瀏覽器顯示圖片或者生成動態圖片(如驗證碼),你需要藉助header()函數來設置響應頭,從而告訴瀏覽器返回的是一個圖像類型,而不是普通的文本或HTML 頁面。
在這篇文章中,我們將介紹如何使用PHP 的header()函數生成並返回驗證碼圖片。驗證碼廣泛應用於網站註冊、登錄等場景,用於防止機器人自動提交表單。
生成驗證碼圖片通常需要以下幾個步驟:
生成隨機驗證碼字符:驗證碼的內容可以是數字、字母或數字與字母的組合。
創建圖像資源:使用PHP 的imagecreate()或imagecreatetruecolor()函數創建一個空白圖像。
繪製文字:在圖片上繪製驗證碼字符,通常會使用imagettftext()或imagestring()函數。
設置響應頭:使用header()函數告知瀏覽器圖片類型。
輸出圖片:通過imagepng() 、 imagejpeg()等函數將圖片輸出到瀏覽器。
銷毀圖像資源:使用imagedestroy()函數釋放圖像資源。
以下是一個使用PHP 創建並返回驗證碼圖片的代碼示例:
<?php
// 設置響應頭,告訴瀏覽器返回的是一個圖片
header("Content-Type: image/png");
// 創建一個空白圖像,寬度為 120px,高度為 40px
$width = 120;
$height = 40;
$image = imagecreate($width, $height);
// 設置背景色和文字顏色
$background_color = imagecolorallocate($image, 255, 255, 255); // 白色背景
$text_color = imagecolorallocate($image, 0, 0, 0); // 黑色文字
// 生成隨機驗證碼字符
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$captcha_text = substr(str_shuffle($characters), 0, 5);
// 在圖片上繪製驗證碼文字
imagestring($image, 5, 30, 10, $captcha_text, $text_color);
// 輸出圖片
imagepng($image);
// 銷毀圖像資源,釋放內存
imagedestroy($image);
?>
設置響應頭: header("Content-Type: image/png");這一行設置了響應頭,告訴瀏覽器返回的內容是PNG 格式的圖片。可以根據需求更改為其他圖片格式,比如JPEG ( image/jpeg )。
創建圖像資源: imagecreate($width, $height);創建了一個指定寬度和高度的空白圖片,返回一個圖像資源。
設置顏色: imagecolorallocate($image, 255, 255, 255);和imagecolorallocate($image, 0, 0, 0);用於定義圖像的背景色(白色)和文字顏色(黑色)。
生成隨機驗證碼: substr(str_shuffle($characters), 0, 5);這行代碼會從一個字符集中隨機選取5 個字符作為驗證碼。
繪製文字: imagestring($image, 5, 30, 10, $captcha_text, $text_color);負責將生成的驗證碼文字繪製到圖像上。
輸出圖片: imagepng($image);將圖像輸出到瀏覽器,瀏覽器會自動顯示為一張圖片。
銷毀圖像資源: imagedestroy($image);用於釋放圖像資源,避免內存洩漏。
如果在生成驗證碼時,你需要引用外部資源,如字體、圖片等,可能會涉及URL 地址。在這種情況下,我們可以將URL 的域名替換成m66.net ,例如:
相關標籤:
header