ReCaptcha for Codeigniter 4
Use the package with composer install
> composer require daycry/recaptcha
Download this repo and then enable it by editing app/Config/Autoload.php and adding the Daycry\ReCaptcha namespace to the $psr4 array. For example, if you copied it into app/ThirdParty:
$psr4 = [
'Config' => APPPATH . 'Config',
APP_NAMESPACE => APPPATH,
'App' => APPPATH,
'Daycry\ReCaptcha' => APPPATH .'ThirdParty/recaptcha/src',
];
Run command:
> php spark recaptcha:publish
This command will copy a config file to your app namespace.
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 = [
...
\Daycry\ReCaptcha\Validation\ReCaptchaRules::class
];
helper(['form', 'reCaptcha']);
echo form_open();
echo reCaptcha2('reCaptcha2', ['id' => 'recaptcha_v2'], ['theme' => 'dark']);
echo form_submit('submit', 'Submit');
echo form_close();
helper(['form', 'reCaptcha']);
echo form_open();
echo reCaptcha3('reCaptcha3', ['id' => 'recaptcha_v3'], ['action' => 'contactForm']);
echo form_submit('submit', 'Submit');
echo form_close();
If you are using Twig: https://github.com/daycry/twig
add helper in array of helpers in the controller
helper(['form', 'reCaptcha']);
add 'reCaptcha3' in functions_safe in config file and call the helper funcion.
public $functions_safe = [ 'form_hidden', 'form_open', 'form_close', 'csrf_token', 'csrf_hash', 'url_title', 'reCaptcha3' ];
and call the function in twig file.
{{ reCaptcha3( 'reCaptcha', {'id' : 'recaptcha_v3'}, {'action' : 'signup'} ) | raw }}
public $validationRules = [
'reCaptcha2' => 'required|reCaptcha2[]'
'reCaptcha3' => 'required|reCaptcha3[contactForm,0.9]'
....
];