首頁 後端開發 php教程 php實作算術驗證碼的方法

php實作算術驗證碼的方法

Jul 05, 2018 pm 03:04 PM
php實現

這篇文章主要介紹了關於php實現算術驗證碼的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

最近學了php的圖像函數,也練習的驗證碼的實現,在聽從老師的建議下,自己寫了一個算術驗證碼的函數,第一次自己獨立完成一個小練習,感覺挺開心的.但是,也知道自己的局限,所以特意寫出來,希望各路大神指點一下,能夠更多的拓展自己的視野

#php程式碼如下:實作驗證碼的功能

<?php/**
 * @param int $width 宽度,默认为120
 * @param int $height 高度,默认为50
 * @param int $fontSize 字体的大小
 * @return 图片资源
 */function arithmeticCode($width=120,$height=50,$fontSize=20){
    //开启session
    session_start();    //创建画布
    $img = imagecreatetruecolor($width,$height);    //分配颜色
    $color = imagecolorallocate($img,255,255,255);    //填充颜色
    imagefill($img,0,0,$color);    //干扰点
    for ($i = 0;$i < 500;$i++){        $pixColor = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200));
        imagesetpixel($img,mt_rand(0,$width),mt_rand(0,$height),$pixColor);
    }    //干扰线
    for ($i = 0;$i < 4;$i++){        $lineColor = imagecolorallocate($img,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120));
        imageline($img,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$width),mt_rand(0,$height),$lineColor);
    }    //定义一个数组存放运算符号
    $arr = [&#39;+&#39;,&#39;-&#39;,&#39;*&#39;];    //计算数组的长度
    $len = count($arr);    //定义一个1到20的数组
    $num = range(1,20);    $numLen = count($num);    //定义一个空数组来存放随机取得的验证码
    $code = [];    for ($i = 0;$i < $len;$i++) {        if ($i == 1) {            $code[] = $arr[mt_rand(0,$len-1)];
        }else {            $code[] = $num[mt_rand(0,$numLen-1)];
        }
    }    $str = implode($code);//将数组转为字符串
    $textColor = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200));    $fontAngle = 0;    $x = ($width - $fontSize*3)/2;    $y = ($height - $fontSize) / 2 + $fontSize;
    imagettftext($img,$fontSize,$fontAngle,$x,$y,$textColor,"./img/msyh.ttc",$str);    $res = getRes($code);    //将函数存放在session中
    $_SESSION[&#39;res&#39;] = $res;    //输出图片
    header("content-type:image/png");
    imagepng($img);
}/**
 * @param $arr 一个包含运算符号的数组
 * @return 返回一个运算结果
 */function getRes($arr) {
    $sum = 0;    //判断数组元素下标为1的运算符号是什么
    switch ($arr[1]){        case &#39;+&#39;:            $sum = $arr[0] + $arr[2];            break;        case &#39;-&#39;:            $sum = $arr[0] - $arr[2];            break;        case &#39;*&#39;:            $sum = $arr[0] * $arr[2];            break;
    }    return $sum;
}//调用函数arithmeticCode(100,40,18);
登入後複製

html的部分程式碼

<!doctype html><html lang="en"><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>Document</title>
    <style>
        img {            position: relative;            top: 20px;        }
    </style></head><body><form action="test.php">
    验证码 <input type="text" name="code">
    <img src="./demo5.php" alt="点击刷新">
    <br>
    <button>提交</button></form></body></html><script>
    //实现点击图片刷新验证码的功能
    var img = document.querySelector("img");
    img.onclick = function () {
        this.src = this.src+"?m="+Math.random();
    }</script>
登入後複製

#test.php的測試

<?phpsession_start();$res = $_SESSION[&#39;res&#39;];$value = $_GET[&#39;code&#39;];if ($res == $value) {    echo "test success";
}else{    echo "test fail";
}
登入後複製

以上就是我的程式碼組成.
希望各路大神不吝賜教[期待臉]

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

PHP7中MongoDB Driver的使用介紹

PHP中把陣列中的值賦給一組變數的方法

以上是php實作算術驗證碼的方法的詳細內容。更多資訊請關注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中實現? 控制快取失效時間如何在PHP中實現? Jun 19, 2023 pm 11:23 PM

隨著網路應用的普及,網站響應速度越來越成為用戶關注的重點。為了快速回應用戶的請求,網站往往採用快取技術快取數據,從而減少資料庫查詢次數。但是,快取的過期時間對反應速度有著重要影響。本文將對控制快取失效時間的方法進行探討,以幫助PHP開發者更好地應用快取技術。一、什麼是快取失效時間?快取失效時間是指快取中的資料被認為已經過期的時間。它決定了快取中的資料何時需

如何使用 PHP 實作檔案轉換和格式轉換功能 如何使用 PHP 實作檔案轉換和格式轉換功能 Sep 05, 2023 pm 03:40 PM

如何使用PHP實作檔案轉換和格式轉換功能1.引言在開發Web應用程式過程中,我們經常需要實作檔案轉換和格式轉換的功能。無論是將圖片檔案轉換為其他格式,還是將文字檔案從一種編碼轉換為另一種編碼,這些操作都是常見的需求。本文將介紹如何使用PHP實作這些功能,並附帶程式碼範例。 2.檔案轉換2.1將圖片檔案轉換為其他格式在PHP中,我們可以使用

PHP實現的線上投票系統的使用者隱私保護 PHP實現的線上投票系統的使用者隱私保護 Aug 09, 2023 am 10:29 AM

PHP實現的線上投票系統的使用者隱私保護隨著網路的發展和普及,越來越多的投票活動開始轉移到線上平台進行。線上投票系統的便利性為用戶帶來了許多好處,但同時也引發了用戶隱私外洩的擔憂。隱私保護已經成為線上投票系統設計的重要方面。本文將介紹如何使用PHP編寫一個線上投票系統,並重點介紹用戶隱私保護的問題。在設計和開發線上投票系統時,需要遵循以下幾個原則來保

如何利用PHP實現用戶註冊功能 如何利用PHP實現用戶註冊功能 Sep 25, 2023 pm 06:13 PM

如何利用PHP實現用戶註冊功能在現代的網路應用程式中,用戶註冊功能是一個非常常見的需求。透過註冊功能,使用者可以建立自己的帳戶並使用相應的功能。本文將透過PHP程式語言來實現使用者註冊功能,並提供詳細的程式碼範例。首先,我們需要建立一個HTML表單,用於接收使用者的註冊資訊。在表單中,我們需要包含一些輸入字段,如使用者名稱、密碼、郵箱等。可根據實際需求自訂表單欄位。

PHP資料快取的一致性雜湊演算法實作原理 PHP資料快取的一致性雜湊演算法實作原理 Aug 10, 2023 am 11:10 AM

PHP資料快取的一致性雜湊演算法實作原理一致性雜湊演算法(ConsistentHashing)是一種常用於分散式系統中資料快取的演算法,可以在系統擴展和縮減時,最小化資料遷移的數量。在PHP中,實作一致性雜湊演算法可以提高資料快取的效率和可靠性,本文將介紹一致性雜湊演算法的原理,並提供程式碼範例。一致性哈希演算法的基本原理傳統的哈希演算法將資料分散到不同的節點上,但當節點

如何使用 PHP 實現行動端適配與響應式設計 如何使用 PHP 實現行動端適配與響應式設計 Sep 05, 2023 pm 01:04 PM

如何使用PHP實現行動端適配和響應式設計行動端適配和響應式設計是現代網站開發中重要的實踐,它們能夠保證網站在不同裝置上的良好展示效果。在本文中,我們將介紹如何使用PHP實現行動端適配和響應式設計,並附帶程式碼範例。一、理解行動端適配和響應式設計的概念行動端適配是指根據設備的不同特性和尺寸,針對不同的設備提供不同的樣式和佈局。而響應式設計則是指透過使用

PHP如何實現微信小程式指紋登陸 PHP如何實現微信小程式指紋登陸 May 31, 2023 pm 10:40 PM

隨著微信小程式的不斷發展,越來越多的使用者開始選擇微信小程式進行登陸。為了提高使用者的登入體驗,微信小程式開始支援指紋登陸。在本文中,我們將會介紹如何使用PHP來實現微信小程式的指紋登陸。一、了解微信小程式的指紋登陸在微信小程式的基礎上,開發者可以使用微信的指紋辨識功能,讓使用者透過指紋登陸微信小程序,從而提高登入體驗的安全性和便利性。二、準備工作在使用PHP實現

如何使用 PHP 實現數據分析和報表生成 如何使用 PHP 實現數據分析和報表生成 Sep 06, 2023 pm 03:07 PM

如何使用PHP實現資料分析和報表產生簡介:在現今的資訊時代,資料分析和報表產生是企業決策不可或缺的一部分。幸運的是,使用PHP程式語言可以輕鬆實現這項功能。本篇文章將介紹如何使用PHP實現資料分析和報表產生的基本方法和技巧,同時提供一些程式碼範例。一、資料分析資料收集首先,我們需要收集和準備要分析的資料。資料可以來自於各種來源,如資料庫、日誌檔案、

See all articles