These instructions are for version 2 of reCaptcha. You can also read the deprecated instructions for reCaptcha version 1.
Built-In Support for reCaptcha
Using reCaptcha with Tectite FormMail is easier than using it with other form processors. This is because Tectite FormMail has built-in support for reCaptcha.
However, you still need to perform some steps to install reCaptcha and configure your HTML forms to use it.
The reCaptcha website provides instructions for setting it up with any PHP form processor.
For Tectite FormMail, you must skip the instructions for modifications/additions to the form processor.
Please follow the instructions below for installing reCaptcha with Tectite FormMail.
Note that unlike other CAPTCHA systems, reCaptcha does not use PHP sessions. This can make it easy to get working if your server is poorly configured and you have problems with PHP sessions.
Please note the following server requirements for using reCaptcha:
- PHP version 5.2.0 or later
- Tectite FormMail version 9.14 or later
- Tectite formval-v12.js (version 12) or later (if you're using Ajax forms)
Note: FormMail can use CAPTCHA to prevent incorrect or spam form submissions, as well as use it for auto responding. If you want to do both, make sure you read the section in the Autoresponding How-To guide.
Getting Started - First Step
This means you won't be confused by other unrelated errors or problems when you try to add in reCaptcha.
In particular, it's important that FormMail can alert you about errors. So, make sure you have set DEF_ALERT inside FormMail's configuration section and run the testalert test.
Read how reCaptcha works.
Here's what you need to do:
- Signup on the reCaptcha website to obtain a public and private key.
- Add the reCaptcha Challenge Widget. You need to decide where in your form you
want to display the Captcha request (just before the Submit button is a good place).
Click to view the detailed instructions and sample HTML code.
In case Google change the URL unexpectedly (they do that sometimes!), we've replicated their instructions below.
Install the reCaptcha widget code into the <head> section of your page:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
Display the reCaptcha widget in your HTML (just before your submit button, for example):
<div class="g-recaptcha" data-sitekey="your_site_key"></div>
Replace your_site_key with your reCaptcha site key (this is not the secret key; it's the other one.)
- Reload your HTML form in your browser. It should now display the reCaptcha widget.
- You must derive a field
called "imgverify" from the reCaptcha field "g-recaptcha-response"
so that FormMail
receives the user's CAPTCHA input. Here's an example of this:
<input type="hidden" name="derive_fields" value="imgverify=g-recaptcha-response" />
- Now proceed to the following steps on this page (below).
Modify the configuration section of your copy of FormMail to include the secret key you received from the reCaptcha admin.
You need to set the RECAPTCHA_PRIVATE_KEY setting in FormMail. For example:
$RECAPTCHA_PRIVATE_KEY = "6LgQQgATAAAAALWHy4k0uPSmnr7chET_T74cvzqZ";
Use the REQUIRE_CAPTCHA feature to enforce reCaptcha validation:
$REQUIRE_CAPTCHA = "Confirm you are not a robot.";
From around August 2016, reCaptcha started using larger responses. If your MAXSTRING setting is the default of 1024, you'll need to increase this to allow the reCaptcha response to be passed correctly.
$MAXSTRING = 2048;
The Final Step
Test your form now with the following separate tests (reload the form each time):
- click to confirm you are not a robot, and solve any problem shown by reCaptcha
- do not click the confirmation
Using reCaptcha to Allow Auto Responding
FormMail's auto responding feature requires CAPTCHA to protect your server from becoming a spam gateway.
To use reCaptcha for this purpose, simple derive the field called "arverify" from "recaptcha_response_field" instead of "imgverify". (In the instructions above, replace "imgverify" with "arverify".
To enforce CAPTCHA for form submission and also enable auto responding, you simply do two derivations:
<input type="hidden" name="derive_fields" value="imgverify=g-recaptcha-response, arverify=g-recaptcha-response" />
<input type="hidden" name="derive_fields" value="imgverify=g-recaptcha-response, arverify=imgverify" />