it-swarm.com.de

Mein Captcha funktionierte nach dem Upgrade auf Joomla 3.5 nicht mehr

Nach dem Upgrade auf Joomla 3.5 funktioniert meine Site/Erweiterung/benutzerdefiniertes Formular-Captcha funktioniert nicht mehr. Es wird nicht angezeigt und es werden nirgendwo Fehler generiert.

Was ist passiert?

3

Antwort für Joomla! Benutzer

Nun, das ist nicht sehr einfach zu beantworten, und andere haben bereits versucht, es zu erklären.
Nämlich:

GitHub-Ausgabe Nr. 9544
ähnlicher Beitrag in Joomla.StackExchange.com
Joomla Forum Related Post

Was tatsächlich passiert ist, ist, dass einige Details des in Joomla enthaltenen Standard-Captcha geändert wurden und benutzerdefinierte Formularentwickler , die keine bestimmte Methode verwenden, um es in ihre Formulare aufzunehmen , müssen ihren Code aktualisieren.

Stellen Sie zunächst mit sicher, dass Sie die neueste Version der Erweiterung verwenden, die nicht mehr funktioniert .

Wenn Sie sich zu 100% sicher sind, müssen Sie sich an den Entwickler des benutzerdefinierten Formulars wenden und ihn über das Problem informieren. Das Einfügen eines Links zu dieser Seite kann ihnen helfen.

Wenn Sie der Meinung sind, dass Sie mit PHP vertraut genug sind, können Sie versuchen, in den Code für benutzerdefinierte Formulare einzutauchen und die Anweisungen für Entwickler weiter unten zu befolgen, bis der Entwickler für benutzerdefinierte Formulare ein Update herausgibt.

Antwort für Entwickler

Der ReCaptcha-Plugin-Code wurde geändert. Insbesondere wurde die Funktion onInit in der Datei plugins/captcha/recaptcha/recaptcha.php Geändert. Dieses Problem tritt mit Sicherheit bei Ihrem Formular auf, wenn Sie die Anweisungen von diese StackOverflow-Antwort befolgt haben.
Viele Entwickler folgten dieser offensichtlich nicht so guten Idee, anstatt die JFormField zu verwenden, einschließlich Virtuemart, HikaShop und mir.

Überraschenderweise wird die in dieser Funktion enthaltene Option $id Nicht mehr verwendet. Stattdessen wurde die Datei media/plg_captcha_recaptcha/js/recaptcha.min.js Eingeführt, um eine Rückruffunktion für das Google ReCaptcha-Skript bereitzustellen:
https://www.google.com/recaptcha/api.js?onload=JoomlaInitReCaptcha2&render=explicit

Aus irgendeinem hoffentlich guten Grund hat das Joomla-Team die erwartete Feldklasse in der Datei recaptcha.js fest auf g-recaptcha Kodiert und die Verwendung des Feldes id insgesamt. Wie auch in den bereitgestellten Links angegeben, funktioniert ein Feld ohne dieses class und ein data-sitekey - Attribut mit dem öffentlichen ReCaptcha-Schlüssel als Wert nicht.

Zum Glück ist die Lösung sehr einfach. Verwenden Sie stattdessen die Klasse JCaptcha.

$captcha_plugin = JFactory::getConfig()->get('captcha');
if ($captcha_plugin != '0') {
  $captcha = JCaptcha::getInstance($captcha_plugin);
  $field_id = 'your_old_and_useless_id';
  print $captcha->display($field_id, $field_id, 'g-recaptcha');
}

Und natürlich eine einzeilige Version. Yay!!

print (JFactory::getConfig()->get('captcha') != '0') ? JCaptcha::getInstance(JFactory::getConfig()->get('captcha'))->display('old_field_id', 'old_field_id', 'g-recaptcha') : '';
8