it-swarm.com.de

Wie richte ich recaptcha ein, wenn "default_login.php" überschrieben wird?

Ich habe das Standard-Recaptcha-Plugin in Joomla eingerichtet. Ich habe die Anmeldeseite überschrieben und es wurde kein Recaptcha angezeigt. Deshalb habe ich versucht, es hinzuzufügen, indem ich die Antwort von diesen Seiten befolgt habe:

Mein Captcha funktionierte nach dem Upgrade auf Joomla 3.5 nicht mehr

https://stackoverflow.com/questions/12840015/how-to-use-joomla-recaptcha-plugin-to-my-custom-module

Das Problem ist , dass das Recaptcha gut angezeigt wird, ich mich aber anmelden kann, ohne den Captcha-Check-Button/das Bild anzuklicken ... das habe ich mir gedacht Sie haben eine Möglichkeit, es zu überprüfen, bevor Sie es mit jquery senden, aber das große Problem ist, dass ich nicht verstehe, warum es auf der Serverseite durchläuft? Sollte nicht Joomla damit umgehen, da es sich um ein eingebautes Plugin handelt?

Hier ist der Code, den ich in das <form tag> (Kopieren Einfügen vom ersten Link):

<?php
$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 ich weiß nicht, was das definiert? $field_id = 'your_old_and_useless_id'; Ich habe versucht, es nachzuschlagen, aber ich kann wirklich keine Dokumentation finden, wie man das Joomla-Standard-Recaptcha implementiert.

Ich bedanke mich sehr für Ihre Hilfe! Vielen Dank!!

1
JonasB

Ich kann nicht sehen, wie die akzeptierte Antwort die Frage beantwortet. Da Sie also aus meiner Antwort auf die andere Frage zitieren, werde ich erklären, was ich meinte.

Die Funktion JCaptcha::display() akzeptiert drei Argumente: Name, ID und Klasse. Seit Joomla 3.5 wurden die ersten beiden Argumente unbrauchbar gemacht. Deshalb habe ich your_old_and_useless_id Als $field_id Geschrieben. Da es mehr als 2 Jahre her ist, dass ich diesen Joomla-Code zum letzten Mal überprüft habe, kann ich nicht sicher sein, dass er immer noch unbrauchbar ist!

Nun scheint Ihre Frage zu fragen, ob das Captcha automatisch validiert wird. Es ist nicht. Sie müssen es in Ihren anderen Feldern validieren, um es zu validieren. Hier ist der Code, den ich verwendet habe:

if (JFactory::getConfig()->get('captcha') != '0') {
    $captcha = JCaptcha::getInstance(JFactory::getConfig()->get('captcha'));
    $isValidated = $captcha->checkAnswer('your_old_and_useless_id');
}
2

Das wird nicht funktionieren. View kann und kann die Datenvalidierung nicht verarbeiten. Es ist eine Aufgabe für Controller/Modell. Anmeldeformulare in Joomla! unterstütze im Moment keine Plugins. Es gibt verschiedene Möglichkeiten, um das zu erreichen, was Sie wollen:

1) Erstellen Sie eine benutzerdefinierte Komponente für die Anmeldefunktionalität und ein Plugin, um den com_users - Verkehr auf diese Komponente umzuleiten.

2) Erstellen Sie ein Plugin, das das Anmeldeformular ändert und eine benutzerdefinierte Validierung für die Anmeldeaufgabe durchführt.

3) Verwenden Sie das MVCOverride-Plugin, um den com_users - Login-Controller/das Login-Modell zu überschreiben.

2
Sharky