mirko-pagliai / cakephp-recaptcha-mailhide
A CakePHP plugin that allows you to hide email addresses using reCAPTCHA
Installs: 24 559
Dependents: 1
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
Type:cakephp-plugin
Requires
- php: >=7.4
- cakephp/cakephp: ~4.3
- crabstudio/recaptcha: ~3.0.1
- mirko-pagliai/php-tools: ~1.7.1
Requires (Dev)
- cakephp/cakephp-codesniffer: ^4.0
- mirko-pagliai/me-tools: ~2.21
- phpstan/phpstan: ^1.7
- phpunit/phpunit: ^9.1|^9.5
- psalm/phar: ^4.24
README
reCAPTCHA Mailhide is a CakePHP plugin that allows you to hide email addresses using reCAPTCHA. It works by using the crabstudio/Recaptcha plugin, which must first be loaded and configured correctly.
Did you like this plugin? Its development requires a lot of time for me. Please consider the possibility of making a donation: even a coffee is enough! Thank you.
Installation
You can install the plugin via composer:
$ composer require --prefer-dist mirko-pagliai/cakephp-recaptcha-mailhide
Then you have to load the plugin. For more information on how to load the plugin, please refer to the Cookbook.
Simply, you can execute the shell command to enable the plugin:
bin/cake plugin load RecaptchaMailhide
This would update your application's bootstrap method.
Then you also need to set up a key to encrypt/decrypt email addresses:
Configure::write('RecaptchaMailhide.encryptKey', 'thisIsAKeyForEncrypt12345678901234567890');
Installation on older CakePHP and PHP versions
Recent packages and the master branch require at least CakePHP 4.0 and PHP 7.2. Instead, the cakephp3 branch requires at least PHP 5.6.
In this case, you can install the package as well:
$ composer require --prefer-dist mirko-pagliai/cakephp-recaptcha-mailhide:dev-cakephp3
Note that the cakephp3
branch will no longer be updated as of May 7, 2021,
except for security patches, and it matches the
1.4.7 version.
Configuration
First, you have to load the Recaptcha
component provided by the
crabstudio/Recaptcha plugin, as described here.
The component must be loaded inside the initialize()
method of your
AppController
class.
For more information on how to load the component, please refer to the Cookbook.
Then, you have to load the Mailhide
helper:
$this->loadHelper('RecaptchaMailhide.Mailhide');
For more information on how to load the helper, please refer to the Cookbook.
Usage
You can now use the link()
method provided by the Mailhide
helper in your
template files. Example:
echo $this->Mailhide->link('My mail', 'myname@mymail.com');
This will create a link. By clicking on the link, a popup will open and it will contain the reCAPTCHA control. If the check was filled in correctly, the clear email will be shown.
You can also use the email address as the title of the link. Example:
echo $this->Mailhide->link('myname@mymail.com', 'myname@mymail.com');
In this case, the email will be obfuscated (myn***@mymail.com) to be shown as the title of the link.
The third parameter of the method can be used for link options. Example:
echo $this->Mailhide->link('My mail', 'myname@mymail.com', ['class' => 'my-custom-class']);
Versioning
For transparency and insight into our release cycle and to maintain backward compatibility, reCAPTCHA Mailhide will be maintained under the Semantic Versioning guidelines.