Laravel 整合 Geetest驗證碼的方法php實例
這篇文章主要介紹了Laravel 整合 Geetest驗證碼的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
Geetest 整合大致流程
-
實作登入的大致邏輯
註冊一個極驗的帳號
在「極驗」的後台管理中註冊一個行為驗證
根據官方Demo 配置我們的控制器和路由
- ##根據官方Demo 配置我們的登入模板 ##測試
Geetest 整合詳細流程#1、實作登入的大致邏輯
建立控制器php artisan make:controller GeetestController
編輯控制器/app/Http/Controllers/GeetestController
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; /** * 这是一个集成 Geetest 验证码的 Demo 类 */ class GeetestController extends Controller { /** * 导入登录视图 */ public function login() { return view('Geetest/login'); } ** * 验证用户信息 */ public function check() { return '用户已经在前端通过了验证码验证, 你可以在这里完善后续的逻辑'; } }
2、省略=> “註冊”
#不要拷貝類,拷貝類裡面的內容進來即可
#GeetestController 控制器實作邏輯
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\GeetestLib; // 我们创建然后拷贝得来的 GeetestLib 核心库 /** * 这是一个集成 Geetest 验证码的 Demo 类 */ class GeetestController extends Controller { // 这里配置 id & key private $captchaId = "5d467a3cb22a9310837d51720c5251f0"; private $privateKey = "40764e6b94344f780d4b6b07148c9495"; /** * 导入登录视图 */ public function login() { return view('Geetest/login'); } /** * 验证用户信息 */ public function check() { return '用户已经在前端通过了验证码验证, 你可以在这里完善后续的逻辑'; } /** * 实现验证功能: 直接复制官方demo提供得 */ public function startCaptchaServlet() { // 这里使用配置的 id & key $GtSdk = new GeetestLib($this->captchaId, $this->privateKey); session_start(); $data = array( "user_id" => "test", # 网站用户id "client_type" => "web", #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式 "ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP ); $status = $GtSdk->pre_process($data, 1); $_SESSION['gtserver'] = $status; $_SESSION['user_id'] = $data['user_id']; echo $GtSdk->get_response_str(); } }
// 集成 Geetest 验证码 Route::get('GeetestLogin', 'GeetestController@login'); //登录页面 Route::get('GeetestCheck', 'GeetestController@check'); //登录验证 (我们没写具体逻辑) Route::get('GeetestStartCaptchaServlet', 'GeetestController@startCaptchaServlet'); // 调用方法启用验证码
需要導入Demo 給gt.js ,我們放在public/js 下
#其實理論上還可以放在/resouces/assets/js/ 下, 並且在/resouces/assets/js/app.js 中require 進來讓它參與被編譯,直接在public/js 打包整合生效。
在模板上,需要定義兩個樣式類別.show & .hide => 用於gt.js 操控提示訊息的樣式同樣可以寫進/resouces/assets/sass/ 下
給表單提交「登入」按鈕一個id
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 这是我们用 npm run dev 编译后的 css / js --> <link rel="stylesheet" href="/css/app.css" rel="external nofollow" > <script src="/js/app.js"></script> <!-- 这里需要用到两个样式 --> <style> .show { display: block; } .hide { display: none; } </style> <title> Geetest 集成 Demo</title> </head> <body> <p class="container"> <p class="row"> <p class="col-lg-12"> <h1 class="text-center">Geetest 集成 Demo <small> <a href="http://www.geetest.com/" rel="external nofollow" rel="external nofollow" > Geetest 官方网站 </a> </small> </h1> </p> <p class="col-lg-12"> <form method="GET" action="/GeetestCheck"> <p class="form-group"> <label for="exampleInputEmail1">模拟邮箱地址</label> <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="请输入邮箱..."> <small id="emailHelp" class="form-text text-muted">我们不会公开您的邮箱</small> </p> <p class="form-group"> <label for="exampleInputPassword1">模拟密码</label> <input type="password" class="form-control" id="exampleInputPassword1" placeholder="请输入密码..."> </p> <p class="form-group"> <p id="embed-captcha"></p> <p id="wait" class="show">正在加载验证码......</p> <p id="notice" class="hide">请先完成验证</p> </p> <!-- 这里需要绑定一个按钮 --> <button type="submit" class="btn btn-primary" id="embed-submit">登录</button> </form> </p> </p> </p> <!-- 引用 gt.js --> <script src="/js/gt.js"></script> <!-- 直接复制官方Demo里的js代码 --> <script> var handlerEmbed = function (captchaObj) { $("#embed-submit").click(function (e) { var validate = captchaObj.getValidate(); if (!validate) { $("#notice")[0].className = "show"; setTimeout(function () { $("#notice")[0].className = "hide"; }, 2000); e.preventDefault(); } }); // 将验证码加到id为captcha的元素里,同时会有三个input的值:geetest_challenge, geetest_validate, geetest_seccode captchaObj.appendTo("#embed-captcha"); captchaObj.onReady(function () { $("#wait")[0].className = "hide"; }); // 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html }; $.ajax({ // 获取id,challenge,success(是否启用failback) url: "/GeetestStartCaptchaServlet", // 加随机数防止缓存 type: "get", dataType: "json", success: function (data) { console.log(data); // 使用initGeetest接口 // 参数1:配置参数 // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件 initGeetest({ gt: data.gt, challenge: data.challenge, new_captcha: data.new_captcha, product: "embed", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效 offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注 // 更多配置参数请参见:http://www.geetest.com/install/sections/idx-client-sdk.html#config }, handlerEmbed); } }); </script> </body> </html>
可以優化的地方
最好不要用一個「控制器」 充當核心類別庫, 應該把GeetestLib 想辦法整合到另一個地方去視圖範本上的js & css 應該寫在resources/assets 裡面參與生成app.css & app.js 的編譯
具體登入邏輯我們沒寫。應該還可以在登入驗證check() 方法再確認一次Geetest驗證是否成功,可以參考Demo
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援php中文網。
Phpstorm Xdebug斷點調試PHP的方法php實例
##
以上是Laravel 整合 Geetest驗證碼的方法php實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

Laravel郵件發送失敗時的退信代碼獲取方法在使用Laravel開發應用時,經常會遇到需要發送驗證碼的情況。而在實�...

LaravelEloquent模型檢索:輕鬆獲取數據庫數據EloquentORM提供了簡潔易懂的方式來操作數據庫。本文將詳細介紹各種Eloquent模型檢索技巧,助您高效地從數據庫中獲取數據。 1.獲取所有記錄使用all()方法可以獲取數據庫表中的所有記錄:useApp\Models\Post;$posts=Post::all();這將返回一個集合(Collection)。您可以使用foreach循環或其他集合方法訪問數據:foreach($postsas$post){echo$post->

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

利用地理空間技術高效處理700萬條記錄並創建交互式地圖本文探討如何使用Laravel和MySQL高效處理超過700萬條記錄,並將其轉換為可交互的地圖可視化。初始挑戰項目需求:利用MySQL數據庫中700萬條記錄,提取有價值的見解。許多人首先考慮編程語言,卻忽略了數據庫本身:它能否滿足需求?是否需要數據遷移或結構調整? MySQL能否承受如此大的數據負載?初步分析:需要確定關鍵過濾器和屬性。經過分析,發現僅少數屬性與解決方案相關。我們驗證了過濾器的可行性,並設置了一些限制來優化搜索。地圖搜索基於城

Laravel是如何在後端邏輯中發揮作用的?它通過路由系統、EloquentORM、認證與授權、事件與監聽器以及性能優化來簡化和增強後端開發。 1.路由系統允許定義URL結構和請求處理邏輯。 2.EloquentORM簡化數據庫交互。 3.認證與授權系統便於用戶管理。 4.事件與監聽器實現松耦合代碼結構。 5.性能優化通過緩存和隊列提高應用效率。

Laravel 提供了一個全面的 Auth 框架,用於實現用戶登錄功能,包括:定義用戶模型(Eloquent 模型)創建登錄表單(Blade 模板引擎)編寫登錄控制器(繼承 Auth\LoginController)驗證登錄請求(Auth::attempt)登錄成功後重定向(redirect)考慮安全因素:哈希密碼、防 CSRF 保護、速率限制和安全標頭。此外,Auth 框架還提供重置密碼、註冊和驗證電子郵件等功能。詳情請參閱 Laravel 文檔:https://laravel.com/doc

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。
