web-dev-qa-db-fra.com

Comment configurer recaptcha sur un remplacement de "default_login.php"

J'ai mis en place le plugin recaptcha standard dans Joomla. J'ai fait une substitution de la page de connexion et elle ne montrait pas le recaptcha, alors j'ai essayé de l'ajouter en suivant la réponse de ces pages:

Mon Captcha a cessé de fonctionner après la mise à niveau vers Joomla 3.5

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

Le problème est que le recaptcha se présente bien, mais je suis en mesure de me connecter sans utiliser le bouton de contrôle captcha/le clic sur l'image ... J'ai pensé un moyen de vérifier avant d’envoyer avec jQuery, mais le gros problème, c’est que je ne comprends pas pourquoi cela se passe du côté serveur? should'n Joomla devrait-il gérer cela car il s’agit d’un plugin intégré?

Voici le code que j'ai mis à l'intérieur du <form tag> _ (copier coller du premier lien):

<?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');
}
?>

Et je ne sais pas ce que cela définit? $field_id = 'your_old_and_useless_id'; J'ai essayé de chercher, mais je ne trouve pas vraiment de documentation sur la mise en œuvre du recaptcha standard Joomla.

J'apprécie vraiment votre aide! Merci!!

1
JonasB

Je ne vois pas comment la réponse acceptée répond à la question. Donc, puisque vous citez ma réponse à l’autre question, je vais expliquer ce que je voulais dire.

La fonction JCaptcha::display() accepte trois arguments: Name, ID et Class. Depuis Joomla 3.5, les deux premiers arguments ont été rendus inutiles. C'est pourquoi j'ai écrit your_old_and_useless_id Comme $field_id. Comme cela fait plus de 2 ans que j'ai vérifié ce code Joomla, je ne peux pas être sûr qu'il est toujours inutile!

Maintenant, votre question semble demander si le captcha est automatiquement validé. Ce n'est pas. Vous devez le valider parmi vos autres champs pour le valider. Voici le code que j'ai utilisé:

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

Cela ne marchera pas. La vue ne gère pas et ne peut pas gérer la validation des données. C'est une tâche pour contrôleur/modèle. Formulaires de connexion dans Joomla! ne supporte pas les plugins pour le moment. Il y a plusieurs façons de réaliser ce que vous voulez:

1) Créez un composant personnalisé pour la fonctionnalité de connexion et un plugin pour rediriger com_users _ trafic vers ce composant.

2) Créez un plug-in qui modifie le formulaire de connexion et effectue une validation personnalisée de la tâche de connexion.

3) Utilisez le plugin MVCOverride pour remplacer com_users contrôleur de connexion/modèle.

2
Sharky