首頁 後端開發 php教程 GD庫產生圖片驗證碼

GD庫產生圖片驗證碼

Oct 22, 2019 pm 01:32 PM
gd庫

對於驗證碼,我們並不陌生,隨處可見,例如:登入註冊、論壇灌水、刷票、密碼破解等,主要作用是屏蔽機器請求,保障業務不受機器提交請求幹擾。

下面就來寫一個驗證碼demo,使用最常見的字母加數字驗證碼,加上乾擾點和乾擾線,使用的GD庫生成的,如果你沒有安裝的話,請自行谷歌安裝,另如何判斷是否安裝啟用,請直接在phpinfo頁面搜尋GD庫即可

效果如下圖:

GD庫產生圖片驗證碼

前台頁面

<?php
if(isset($_REQUEST["code"])){
    session_start();
    if(strtolower($_POST["code"])==$_SESSION["code"]){
        echo "<script>alert(&#39;正确!&#39;)</script>";
    }else{
        echo "<script>alert(&#39;错误!&#39;)</script>";
    }
}
?>
<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>验证码</title>
    <style>
        #code{
            border: 1px solid #ccc;
            vertical-align: bottom;
        }
        #refresh{
            text-decoration: none;
            font-size: .875em;
        }
    </style>
</head>
<body>
<form action="" method="post">
    <p>
        验证码:
        <img  src="/static/imghw/default1.png"  data-src="code.php?r=<?php echo rand()? alt="GD庫產生圖片驗證碼" >"  class="lazy"   alt="" id="code">
        <a href="javascript:;" id="refresh">看不清?</a>
    </p>
    <p>
        输入验证码:
        <input type="text" name="code">
    </p>
    <input type="submit" value="提交">
    <script>
        document.getElementById("code").onclick = document.getElementById("refresh").onclick = refresh;
        function refresh() {
            document.getElementById(&#39;code&#39;).src=&#39;code.php?r=&#39;+Math.random()
        }
    </script>
</form>
</body>
</html>
登入後複製

後台頁面

<?php
//启动session
session_start();
$code = "";         //验证码字符串
$str = "qwertyuiopasdfghjklzxcvbnm1234567890";  //验证码字符取值范围[a-z0-9]
$w = 160;           //图片宽度
$h = 40;            //图片高度
$num = 4;           //验证码字符数
$dotNum = 300;      //干扰点个数
$lineNum = rand(3, 5);         //干扰线条数
$font = "./api/DejaVuSansMono.ttf";     //设置字体文件
$image = imagecreatetruecolor($w, $h);  //创建一张指定宽高的图片
$imageColor = imagecolorallocate($image, 255, 255, 255);   //设置背景图片颜色为白色
imagefill($image, 0, 0, $imageColor);  //填充图片背景
//随机验证码,包含字母和数字
for ($i = 0; $i < $num; $i++) {
    $fontColor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));  //生成随机字体颜色
    $content = substr($str, rand(0, strlen($str)), 1);      //随机取字符集中的值
    $code .= $content;
    $fontSize = rand(15, 25);                    //字体大小
    $x = $i * $w / $num + rand(5, 10);          //指定生成位置X轴偏移量
    $y = rand(20, 30);                          //指定生成位置Y轴偏移量
    imagettftext($image, $fontSize, 0, $x, $y, $fontColor, $font, $content);
}
$_SESSION["code"] = $code;  //保存验证码字符串到session中
//生成干扰点
for ($i = 0; $i < $dotNum; $i++) {
    $dotColor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imagesetpixel($image, rand(0, $w), rand(0, $h), $dotColor);
}
//生成干扰线
for ($i = 0; $i < $lineNum; $i++) {
    $lineColor = imagecolorallocate($image, rand(0, 100), rand(0, 100), rand(0, 100));
    imageline($image, rand(0, $w), rand(0, $h), rand(0, $w), rand(0, $h), $lineColor);
}
header("content-type:image/png");
imagepng($image);
imagedestroy($image);
登入後複製

以上是GD庫產生圖片驗證碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP中的GD函式庫操作指南 PHP中的GD函式庫操作指南 May 20, 2023 pm 02:40 PM

一、什麼是GD庫? GD庫是一組用於建立和處理各種影像格式的函式庫函數,是PHP中最常用的影像處理庫之一。二、安裝GD庫在CentOS/RedHat下安裝GD庫1.安裝PHP的GD擴充庫yuminstallphp-gd2.重啟web伺服器servicehttpdrestart3.查看PHP支援的GD庫版本php-i|grep-igd在Ubunt

php無法開啟gd 函式庫怎麼辦 php無法開啟gd 函式庫怎麼辦 Nov 18, 2022 am 10:31 AM

php無法開啟gd函式庫的解決方法:1、找到並開啟php.ini設定檔;2、將「extension_dir」前面的註解符號「;」去掉;3、將其值改為ext資料夾的絕對路徑即可。

PHP與GD庫教學:如何為圖片加入模糊效果 PHP與GD庫教學:如何為圖片加入模糊效果 Jul 12, 2023 pm 01:51 PM

PHP和GD庫教學:如何為圖片添加模糊效果概述:在網頁開發中,經常需要對圖片進行處理,其中之一就是添加模糊效果。 PHP提供了強大的GD函式庫,讓我們輕鬆實現圖片的模糊處理。本教學將介紹如何使用PHP和GD庫為圖片添加模糊效果,並附帶程式碼範例。步驟一:設定GD庫要使用GD庫,我們要確保PHP已經啟用了GD庫。可以透過以下程式碼檢查GD庫是否已經啟用:if(

利用PHP和GD庫實現圖片旋轉的方法 利用PHP和GD庫實現圖片旋轉的方法 Jul 12, 2023 am 11:52 AM

利用PHP和GD庫實現圖片旋轉的方法圖片旋轉是一個常見的影像處理需求,透過旋轉圖片可以實現一些特殊的效果或滿足使用者需求。在PHP中,可以藉助GD庫來實現圖片旋轉功能。本文將介紹如何使用PHP和GD庫來實現圖片旋轉,並附帶程式碼範例。首先,確保你的PHP環境已經安裝了GD庫拓展。在命令列中輸入php-m,查看是否有gd模組,如果沒有則需要先安裝。下面是一個簡單

利用PHP和GD庫實現圓角圖片的方法 利用PHP和GD庫實現圓角圖片的方法 Jul 12, 2023 am 09:21 AM

利用PHP和GD庫實現圓角圖片的方法介紹在網頁設計中,有時需要使用圓角圖片來美化頁面的外觀。本文將介紹如何使用PHP和GD函式庫來實現圓角圖片的方法。 GD庫是PHP擴充庫之一,提供了一系列處理影像的函數。透過使用GD庫,我們可以對圖片進行裁剪、調整尺寸、添加濾鏡等操作。而要實現圓角圖片,我們需要利用GD庫中的一些函數進行影像的處理。步驟以下是實現圓角圖片的具體步

使用PHP和GD庫建立影像縮圖的步驟 使用PHP和GD庫建立影像縮圖的步驟 Jul 12, 2023 am 08:03 AM

標題:使用PHP和GD庫建立圖像縮圖的步驟引言:在Web開發中,圖像常常需要進行縮略處理以適應不同的頁面佈局。本文將介紹如何使用PHP和GD庫來建立圖像縮圖的步驟,並附上相關程式碼範例。一、安裝和設定GD庫GD庫是一個用於影像處理的函式庫,可以使用一些簡單的函數來處理影像。在開始之前,我們需要確保GD庫已正確安裝和設定。檢查GD庫是否已經安裝:在PHP腳本中執

PHP和GD函式庫實作圖片裁剪的方法 PHP和GD函式庫實作圖片裁剪的方法 Jul 14, 2023 am 08:57 AM

PHP和GD庫實現圖片裁剪的方法概述:圖片裁剪是網頁開發中常見的需求之一,它可以用於調整圖片的尺寸,剪裁不需要的部分,以適應不同的頁面佈局和展示需求。在PHP開發中,我們可以藉助GD函式庫來實現圖片裁切的功能。 GD庫是一個強大的圖形庫,可提供一系列函數來處理和操控影像。程式碼範例:以下我們將詳細介紹如何使用PHP和GD庫來實作圖片裁切。首先,確保你的PHP環境已經

利用PHP和GD庫產生隨機背景圖片 利用PHP和GD庫產生隨機背景圖片 Jul 13, 2023 pm 12:30 PM

利用PHP和GD庫產生隨機背景圖片隨機背景圖片在網頁設計中起著重要的作用,可以增加頁面的美觀性和吸引力。本文將介紹如何使用PHP和GD庫來產生隨機背景圖。 GD庫是一個用於影像處理的PHP擴充模組,可在PHP中建立、編輯和操作影像。透過結合GD庫的強大功能,我們可以輕鬆地產生各種風格的隨機背景圖片。首先,我們需要在伺服器上安裝GD庫。你可以透過以下命令來檢

See all articles