davodm/codeigniter4-turnstile

此包的最新版本(v0.1.7)没有可用的许可证信息。

CodeIgniter 4 包,用于集成 Cloudflare Turnstile Captcha

v0.1.7 2024-08-19 23:23 UTC

This package is auto-updated.

Last update: 2024-09-19 23:30:42 UTC


README

Build Status Packagist Version License Downloads GitHub stars

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');

显式模式

对于显式模式,您需要遵循以下步骤

  1. 注册字段:在您的视图文件中,注册 CAPTCHA 应出现的位置的字段
helper('turnstile');
turnstile_explicit('turnstile_field_name', 'dark', 'normal');
  1. 创建一个 元素:在您的视图中手动创建一个元素,其 id 与 fieldName 参数匹配
<div id="turnstile_field_name"></div>
  1. 渲染 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