davodm / codeigniter4-turnstile
此包的最新版本(v0.1.7)没有可用的许可证信息。
CodeIgniter 4 包,用于集成 Cloudflare Turnstile Captcha
v0.1.7
2024-08-19 23:23 UTC
Requires
- php: >=7.4
- codeigniter4/framework: ^4.0
README
CI4CFTurnstile 是一个 CodeIgniter 4 库,它集成了 Cloudflare 的 Turnstile CAPTCHA 用于表单验证。它支持隐式和显式渲染模式。
您可以在以下位置找到 Cloudflare Turnstile 文档:这里。
安装
1. Composer 安装
通过 Composer 安装包
composer require davodm/codeigniter4-turnstile
2. 配置
安装后,配置您的 Cloudflare Turnstile 网站 secret key。您可以通过在 .env 文件中设置环境变量来完成此操作
turnstile.siteKey=your-site-key turnstile.secretKey=your-secret-key
使用
渲染 CAPTCHA
该库提供了辅助函数 turnstile
来在视图中渲染 CAPTCHA:turnstile_implicit()
、turnstile_explicit()
和 turnstile_explicit_render()
。
隐式模式
在您的视图文件中,您可以通过调用以下代码以隐式模式渲染 Turnstile CAPTCHA:
helper('turnstile'); echo turnstile_implicit('turnstile_field_name', 'auto', 'normal');
显式模式
对于显式模式,您需要遵循以下步骤
- 注册字段:在您的视图文件中,注册 CAPTCHA 应出现的位置的字段
helper('turnstile'); turnstile_explicit('turnstile_field_name', 'dark', 'normal');
- 创建一个 元素:在您的视图中手动创建一个元素,其 id 与 fieldName 参数匹配
<div id="turnstile_field_name"></div>
- 渲染 CAPTCHA:最后,在关闭标签之前调用 turnstile_explicit_render() 来渲染 CAPTCHA
<?= turnstile_explicit_render(); ?>
验证
要验证 CAPTCHA 响应,您可以在控制器或模型中使用 TurnstileRules 验证规则。
添加验证规则
首先,在您的验证配置文件(app/Config/Validation.php
)中注册验证规则
public $ruleSets = [ // other rules \CI4CFTurnstile\Validation\TurnstileRules::class, ];
然后,在您的表单验证逻辑中
$validation = \Config\Services::validation(); $validation->setRules([ 'turnstile_field_name' => 'required|turnstile_verify', ]); if (!$validation->withRequest($this->request)->run()) { // Handle validation errors $errors = $validation->getErrors(); // Display errors to the user }
示例
以下是在控制器中使用 CI4CFTurnstile 的完整示例
namespace App\Controllers; use CodeIgniter\Controller; class FormController extends Controller { public function index() { helper('turnstile'); return view('form'); } public function submit() { $validation = \Config\Services::validation(); $validation->setRules([ 'turnstile_field_name' => 'required|turnstile_verify', ]); if (!$validation->withRequest($this->request)->run()) { return redirect()->back()->withInput()->with('errors', $validation->getErrors()); } // CAPTCHA passed // Proceed with form processing } }
在您的 form.php 视图文件中
<!-- Implicit form model --> <form method="post" action="/form/submit"> <!-- Other form fields --> <?= turnstile_implicit('turnstile_field_name'); ?> <button type="submit">Submit</button> </form> <!-- Explicit form model --> <form method="post" action="/form/submit"> <!-- Other form fields --> <div id="turnstile_field_name"></div> <?= turnstile_explicit('turnstile_field_name', 'dark', 'normal'); ?> <button type="submit">Submit</button> </form> <?=turnstile_explicit_render?> </body>
许可证
该项目采用 MIT 许可证 - 有关详细信息,请参阅 许可证文件。
作者
Davod Mozafari - Twitter