PHP實現簡單的驗證碼功能機制
網站的安全性是開發者不可忽視的一個問題,目前使用最多的一種可以提高網站安全性的方法就是使用驗證碼功能機制,有的僅僅使用一個幾位數字字母混亂的驗證碼,有的進行手機發送簡訊進行驗證,有的使用郵箱傳送郵件進行驗證,但是這個驗證碼功能機制是如何實現的呢?下面就為大家詳細解釋驗證碼功能機制的實現思路以及簡單的實現方法。
1、驗證碼功能機制實現思路
① 常規的驗證碼實現:
a、產生一張png的圖片
b、為圖片設定背景色
c、設定字型顏色和樣式
d、產生4位數的隨機的驗證碼
e、把產生的每個字元調整旋轉角度和位置畫到png圖片上
f、加入噪點和干擾線防止註冊機器分析原圖片來惡意註冊
g、輸出圖片
h、釋放圖片所佔記憶體
i、將驗證碼儲存到session或是資料庫
j、將和輸入的驗證碼進行對比
② 簡訊(郵箱)驗證碼機制:
a、產生4-6位數的隨機的驗證碼
b、把產生的每個字元儲存到session或是資料庫
c、將驗證碼傳送到使用者的手機(郵箱)
d、使用者在規定時間內進行輸入
e、將驗證碼從session或是資料庫中取出
f、將和輸入的驗證碼進行對比驗證
2、簡單的實現驗證碼功能機制
① 新建captcha.php,寫入以下程式碼
<?php /** * ======================================= * Created by WeiBang Technology. * User: Wei ZhiHua * Date: 2016/10/12 0020 * Time: 下午 4:14 * Power: 實現驗證碼功能 * ======================================= */ //開啟session session_start(); //建立一個大小為 100*30 的驗證碼 $image = imagecreatetruecolor(100, 30); $bgcolor = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bgcolor); $captch_code = ''; for ($i = 0; $i < 4; $i++) { $fontsize = 6; $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120)); $data = 'abcdefghijkmnpqrstuvwxy3456789'; $fontcontent = substr($data, rand(0, strlen($data) - 1), 1); $captch_code .= $fontcontent; $x = ($i * 100 / 4) + rand(5, 10); $y = rand(5, 10); imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); } //就生成的驗證碼儲存到session $_SESSION['authcode'] = $captch_code; //在圖片上增加點干擾元素 for ($i = 0; $i < 200; $i++) { $pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200)); imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor); } //在圖片上增加線干擾元素 for ($i = 0; $i < 3; $i++) { $linecolor = imagecolorallocate($image, rand(80, 220), rand(80, 220), rand(80, 220)); imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $linecolor); } //設定頭 header('content-type:image/png'); imagepng($image); imagedestroy($image); ?>
② 新建form.php,寫入以下程式碼
<?php /** * ======================================= * Created by WeiBang Technology. * User: Wei ZhiHua * Date: 2016/10/12 0021 * Time: 下午 4:14 * Power: 實現驗證碼功能 * ======================================= */ if (isset($_REQUEST['authcode'])) { session_start(); if (strtolower($_REQUEST['authcode']) == $_SESSION['authcode']) { echo "輸入正確!"; } else { echo "輸入錯誤!"; } exit(); } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <title>確認驗證碼</title> </head> <body> <form method="post" action="./form.php"> <p>驗證碼圖片: <img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand(); ?>" width=100 height=30> <a href="javascript:void(0)" onClick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">換一個?</a> </p> <p>請輸入圖片中的內容:<input type="text" name="authcode" value=""/></p> <p><input type="submit" value="提交" style="padding:6px 20px;"></p> </form> </body> </html>
以上就是php驗證碼的製作思路和實現方法,從簡單到複雜,可以根據這些寫出非常完美的驗證碼功能機制。
相關推薦
PHP實現簡單的驗證碼功能機制
網站的安全性是開發者不可忽視的一個問題,目前使用最多的一種可以提高網站安全性的方法就是使用驗證碼功能機制,有的僅僅使用一個幾位數字字母混亂的驗證碼,有的進行手機發送簡訊進行驗證,有
php+mysql實現簡訊驗證碼功能
class Sms { const EXPIRE_SEC = 300; // 過期時間間隔 5分鐘 const RESEND_SEC = 60; // 重發時間間隔 const ONE_DAY_FREQ = 10; // 每日向同一個手機號發簡訊的次數
Tornado框架實現圖形驗證碼功能
tor length turn 黑客 body world 工作流 params fun 圖形驗證碼是項目開發過程中經常遇到的一個功能,在很多語言中都有對應的不同形式的圖形驗證碼功能的封裝,python 中同樣也有類似的封裝操作,通過繪制生成一個指定的圖形數據,讓前端HTM
QT實現簡單驗證碼
ase 窗口 事件 實現 draw date() res pragma init 主要思路: 在QT designer 中繪制QLabel控件 自定義類繼承QLabel類,並提升至控件 提升至 生成隨機數 重寫paintEvent繪制圖形 重寫mousePressEvent
PHP 短信驗證碼功能
短信發送 lse gin return name 當前 phpstorm ++ 數據 現在網站在建設網站時為了保證用戶信息的真實性,往往會選擇發短信給用戶手機發驗證碼信息,只有通過驗證的用戶才可以註冊,這樣既保證了用戶的聯系信息資料的100%的準確性,也為用戶提供了一種最
java實現手機驗證碼功能
java實現給手機發送驗證碼,是需要平臺的支援的這裡我使用的是http://user.ihuyi.com/互億的簡訊服務 大家可以註冊一個賬號http://user.ihuyi.com/register.htmls這裡是比較簡單的實現大家可以根據自己的需求自行編寫 import org.a
php實現圖形驗證碼詳解!
最近由於專案需要,圖形驗證碼,就寫了一個,為大家詳細介紹下實現過程! 1、驗證碼封裝實現方法 //生成驗證碼 public function get_img_code(){ ob_clean(); cookie('code',NULL); session('code',NU
【簡訊外掛】微贊微信管理系統如何實現簡訊驗證碼功能
找到了一家不錯的簡訊外掛,有需要對接的可以檢視學習,在這邊分享一下,有需要的可以詳細看看,瞭解一下。http://www.ihuyi.com/外掛說明本外掛系互億無線針對微贊管理系統簡訊外掛開發,請按以下說明進行安裝,外掛內的所有檔案均為對原檔案的修改,如果你的系統經過二次開發,安裝本外掛之前,請仔細核對修改
一步一步實現web程式資訊管理系統之三----登陸業務邏輯實現(驗證碼功能+引數獲取)
本篇緊接著上一篇文章[一步一步實現web程式資訊管理系統之二----後臺框架實現跳轉登陸頁面] 驗證碼功能 一般驗證碼功能實現方式為,前端介面訪問一個url請求,後端服務程式碼生成一個圖片流返回至瀏覽器,瀏覽器通過img標籤來展示圖片資訊,其流程模式如下所示: 前端介面 前端介面需
【簡訊外掛】 WSTMart多使用者商城如何實現簡訊驗證碼功能
找到了一家不錯的簡訊外掛,有需要對接的可以檢視學習,在這邊分享一下,有需要的可以詳細看看,瞭解一下。http://www.ihuyi.com/外掛說明本外掛系互億無線針對WSTMart多使用者商城v2.0.0簡訊外掛開發,外掛內的所有檔案均為對原檔案的修改,如果你的系統經過二次開發,安裝本外掛之前,請仔細核對
Python實現簡單驗證碼的轉文字
宣告:本文章中的驗證碼爬取和識別僅用作試驗! 1.首先就是驗證碼的爬取,這裡我爬取的是學校oj的註冊驗證碼。背景基本沒有噪聲,容易處理。 2.在獲得驗證碼圖片的二進位制資料後,我們使用以下程式碼實現對圖片的本地儲存: def save_img(content):
使用nodejs實現郵箱驗證碼功能
今天做了個小demo,是用nodejs實現註冊時(當然在別的地方也是可以用的)的郵箱驗證功能,大體就是往指定的郵箱傳送六位驗證碼。以下是詳細步驟。 1、使用模組:nodemailer 安裝:npm install nodemailer --save 2、
Spring Security、實現圖形驗證碼功能、實現"記住我"功能
說在前面 博主最近會有很多專案跟大家一起分享,做完後會上傳github上的,希望讀友們能給博主提提意見哈哈 這個專案是第三方登入和安全方面的,關於後臺與a
Java加騰訊雲實現簡訊驗證碼功能
一、概要 現如今在日常工作和生活中簡訊驗證碼對於我們來說是非常熟悉的,比較常見的註冊賬號或者交易支付時候,手機會收到一個簡訊驗證碼,我們可以通過驗證碼來有效驗證身份,避免一些資訊被盜。 驗證身份 目前隨著app軟體以及一些電商網站發展,在註冊相關賬號或者支付時候都離不了簡訊驗證碼,通過驗證碼能
ASP.NET中怎樣實現圖片驗證碼功能,並且點選圖片會重新整理
------ 基本思路: 圖片的src=後臺的一個函式,此函式返回按照一定規則生成的圖片檔案流。 然後此圖片即可生成。 那麼怎樣重新整理驗證碼呢,這是個問題。 因為給圖片的src賦了值之後,想要更換一個圖片,那麼src的那個函式必須再執行一次才行。 <img src=
通過js 實現簡單驗證碼的 重新整理 看不清 換一張
【原理】當一個<img>的src改變時,頁面會自動重新整理這個<img>原始碼如下: <script type="text/javascript"> function reImg(){ var
javascript實現動態驗證碼功能
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> <body
前端js+html實現簡單驗證碼
前些日子接觸到一個專案,要求實現一個簡單的驗證碼,參考萬能的百度結合自己的想法實現了一個簡單的前端驗證碼,當然跟後臺的不能比安全性, 頁面部分: <div class="new-web-row
Kaptcha實現的驗證碼功能
驗證碼分析 1. 選型 jQuery.buttonCaptcha需要引用jquery一系列檔案,對於沒有采用jquery的系統中會造成載入資源過多,影響頁面速度。 Kaptcha使用java來生成驗證碼,可配置(自定義)驗證碼的型別(中文,字母,數字)、字型型別、字
Python 新手實戰之機器學習實現簡單驗證碼識別(一):用PIL簡單繪製驗證碼
驗證碼生成 from PIL import Image, ImageDraw, ImageFont import random, os def draw(): #隨機生成背景顏色 (RGB顏色範圍為0-255,越高越接近白色),背景顏色不宜過深,