Neviditelná Recaptcha - Expired
12. dub 2022 01:36 #146111
od Cony
Neviditelná Recaptcha - Expired vytvořil uživatel Cony
Pokud používáte na svém webu plugin pro neviditelnou ReCaptchu, možná jste se setkali s tím, že při složitějším formuláři se nepodaří formulář uložit, a Joomla zahlásí chybu "Captcha expired" (popř. nějakou českou variantu této hlášky).
Děje se to proto, že Google ReCaptcha má expiraci 2 minuty. Pokud v rámci toho času nestihne uživatel odeslat formulář, kontrola ReCaptcha neprojde. Joomla má bohužel implementaci ReCaptcha v3 nesprávně, dle Google by se měla spouštět až v okamžiku uživatelské akce (tedy odeslání formuláře) a ne při nahrání stránky (tak jak to dělá Joomla).
Obejít lze pomocí javascriptu, který automaticky reCaptchu přegeneruje každých 90s.
Děje se to proto, že Google ReCaptcha má expiraci 2 minuty. Pokud v rámci toho času nestihne uživatel odeslat formulář, kontrola ReCaptcha neprojde. Joomla má bohužel implementaci ReCaptcha v3 nesprávně, dle Google by se měla spouštět až v okamžiku uživatelské akce (tedy odeslání formuláře) a ne při nahrání stránky (tak jak to dělá Joomla).
Obejít lze pomocí javascriptu, který automaticky reCaptchu přegeneruje každých 90s.
Code:
jQuery(function() {
if(typeof grecaptcha === 'undefined') {
grecaptcha = {};
}
grecaptcha.ready = function(cb){
if(typeof grecaptcha === 'undefined') {
const c = '___grecaptcha_cfg';
window[c] = window[c] || {};
(window[c]['fns'] = window[c]['fns']||[]).push(cb);
} else {
cb();
}
}
grecaptcha.ready(function(){
setInterval(() => {
jQuery('[data-recaptcha-widget-id]').each(function () {
grecaptcha.execute(jQuery(this).data('recaptcha-widget-id'));
console.log('ReCaptcha reset #' + jQuery(this).data('recaptcha-widget-id'));
});
}, 90 * 1000);
});
});
Pro možnost přispívání do fóra se přihlaste.