PHPackages                             davodm/codeigniter4-recaptcha - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. davodm/codeigniter4-recaptcha

ActiveLibrary

davodm/codeigniter4-recaptcha
=============================

0109PHP

Since Nov 21Pushed 3y agoCompare

[ Source](https://github.com/davodm/codeigniter4-recaptcha)[ Packagist](https://packagist.org/packages/davodm/codeigniter4-recaptcha)[ RSS](/packages/davodm-codeigniter4-recaptcha/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

Google reCAPTCHA CodeIgniter 4 Library
======================================

[](#google-recaptcha-codeigniter-4-library)

This is a fork repo is based on [denis303/codeigniter4-recaptcha](https://github.com/denis303/codeigniter4-recaptcha) that had some pull requests which the owner/maintainer didn't accept it. So I had to use this repo instead.

Installation
------------

[](#installation)

`composer require davodm/codeigniter4-recaptcha:dev-master`

Configuration
-------------

[](#configuration)

In the .env file you need to add your personal ReCaptcha keys.

```
# --------------------------------------------------------------------
# ReCaptcha 2
# --------------------------------------------------------------------
recaptcha2.key = 'XXXXXXXX-XXXXXXXX'
recaptcha2.secret = 'XXXXXXXX-XXXXXXXX'

# --------------------------------------------------------------------
# ReCaptcha 3
# --------------------------------------------------------------------
recaptcha3.key = 'XXXXXXXX-XXXXXXXX'
recaptcha3.secret = 'XXXXXXXX-XXXXXXXX'
recaptcha3.scoreThreshold = 0.5

```

In the /app/Config/Validation.php file you need to add settings for validator:

```
public $ruleSets = [
    ...
    \Denis303\ReCaptcha\Validation\ReCaptchaRules::class
];

```

### Rendering ReCaptcha v2

[](#rendering-recaptcha-v2)

```
helper(['form', 'reCaptcha']);

echo form_open('/form_processing_path', array('id' => 'contactForm'));

echo reCaptcha2('reCaptcha2', ['id' => 'recaptcha_v2'], ['theme' => 'dark']);

echo form_submit('submit', 'Submit');

echo form_close();

```

### Rendering ReCaptcha v3

[](#rendering-recaptcha-v3)

```
helper(['form', 'reCaptcha']);

form_open('/form_processing_path', array('id' => 'contactForm'));

echo reCaptcha3('reCaptcha3', ['id' => 'recaptcha_v3'], ['action' => 'contactForm']);

echo form_submit('submit', 'Submit');

echo form_close();

```

### Checking ReCaptcha in a model:

[](#checking-recaptcha-in-a-model)

```
public $validationRules = [
    'reCaptcha2' => 'required|reCaptcha2[]'
    'reCaptcha3' => 'required|reCaptcha3[contactForm,0.9]'
    ....
];

```

In the settings of the reCaptcha3 validator, the first parameter you specify is expectedAction.

So If you want to captcha doesn't expire, the form id attribute needs to share the same name as the action. This allows `grecaptcha.execute` to be called on form submission to prevent token expiration warnings. Otherwise, it could be working without action name.

You can override a global scoreThreshold parameter in the second reCaptcha3 rule parameter.

Note that in your form you shouldn't have any `submit` field name such as button name.

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity26

Early-stage or recently created project

 Bus Factor1

Top contributor holds 85.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/4b30abdf7be032daaa2618d8a968b66a54156db753b2abfc027c6b1e72280216?d=identicon)[davodm](/maintainers/davodm)

---

Top Contributors

[![davodm](https://avatars.githubusercontent.com/u/10187129?v=4)](https://github.com/davodm "davodm (6 commits)")[![denis303](https://avatars.githubusercontent.com/u/55409598?v=4)](https://github.com/denis303 "denis303 (1 commits)")

### Embed Badge

![Health badge](/badges/davodm-codeigniter4-recaptcha/health.svg)

```
[![Health](https://phpackages.com/badges/davodm-codeigniter4-recaptcha/health.svg)](https://phpackages.com/packages/davodm-codeigniter4-recaptcha)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
