How to use multiple google recaptcha on same page

Actually I’m using Mailster for WordPress to collect subscriptions on Chatcloud.

To fight against spam subscriptions I’m using double opt-in for email verification and Google Recaptcha Version 3.

But there was one problem. The problem why you are reading this! Only one recaptcha field got the callback from google and all other forms showed and error „Please proof that you are human“.

Multiple Google Captchas on one site is not quite easy and this stackoverflow-thread didn’t help me much.

Old code

Fills in the callback token in a form field with a specific id.

grecaptcha.ready(function() {
	grecaptcha.execute('YOUR ID', {
		action : 'mailster_form_3_submit'
	}).then(function(token) {
		document.getElementById('mailster-_recaptcha-3-5d1b9cc5dcf84').value = token;
	});
}); 

New code for multiple fields

Fills in the callback token in all form fields with a specific name.

jQuery(document).ready(function() {

	grecaptcha.ready(function() {
		grecaptcha.execute('YOUR ID', {
			action : 'mailster_form_submit'
		}).then(function(token) {
			responseInputs = document.getElementsByName('g-recaptcha-response');
			
			for (var x = 0; x < responseInputs.length; x++) {
				responseInputs[x].value = token;
			}
		});
	});
}); 

Be shure to render this code under the generic mailster js code. Maybe before the closing </body> tag.

Sei sozial und teile

Über den Autor Andreas Grundner

Ich bin Wordpress, Joomla, Typo3 Integrator, Unix Rootserver Administrator und Webanwendungsprogrammierer. Mittlerweile habe ich über 70 Webprojekte weitgehend selbstständig mit enger Kundenabsprache realisiert. Ich bin auf One Page Websites auf Wordpress-Basis spezialisiert, biete aber auch Suchmaschinenoptimierung (SEO), Blogs, Facebook, Youtube und Google+ Seiten an. Meine Verpflichtung gilt dem Datenschutz, meine Leidenschaft dem Finden und Aufzeigen von Sicherheitslücken in Webanwendungen.

Meinung sagen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.