Joomla 2.5 中的验证码自定义表单

Posted

技术标签:

【中文标题】Joomla 2.5 中的验证码自定义表单【英文标题】:Captcha Custom Form in Joomla 2.5 【发布时间】:2017-10-06 19:05:48 【问题描述】:

经过数小时的尝试和搜索以解决验证码问题以及多次尝试解决问题失败后,我决定寻求您的帮助,我在 Joomla 2.5 上有一个网站我有一个新用户的自定义注册表单我想添加一个验证码机制,在这里我做了什么(我在***中找到了它,但我有一些问题)。 到目前为止,我做了以下几点:

1)我启用了 capcha-recaptcha 插件并输入了来自 google captcha 的私钥和站点密钥

2)我在全局配置中将验证码设置为默认验证码

3)在我的文件模板\mytemplate\html\mod_login\default.php

I enter the following code which I found here in ***

//php code
JPluginHelper::importPlugin('captcha');

$dispatcher = JDispatcher::getInstance();

$dispatcher->trigger('onInit','dynamic_recaptcha_1');

//html code inside form tag
<div id="dynamic_recaptcha_1"></div>

到目前为止,它显示验证码图像和输入框,但是当我按下提交按钮时,我收到无效令牌

我怀疑这与它应该验证/处理表单的以下代码部分有关

$post = JRequest::get('post'); 

JPluginHelper::importPlugin('captcha');

$dispatcher = JDispatcher::getInstance();

$res = $dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
if(!$res[0])
    die('Invalid Captcha');

在 joomla 中我应该在哪个文件中插入验证码?我试过提交按钮:template\mytemplate\html\mod_login\default.php

但什么都没有,我也尝试过 com_users\controllers\registrattion.php 仍然没有任何想法我应该在哪里插入这部分代码?为了让它工作?

提前感谢您的时间!!

问候, 吉姆

【问题讨论】:

您绝对应该更新您的 Joomla!对 2.5 的支持很久以前就结束了。你很容易让你的 Joomla 被黑! 【参考方案1】:

编辑答案 试试下面来自https://forum.joomla.org/viewtopic.php?t=833213的代码

$app = JFactory::getApplication();

$captchaResponse = JRequest::get('recaptcha_response_field');
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$res = $dispatcher->trigger('onCheckAnswer',$captchaResponse);
if(!$res[0])

  // Invalid captcha
  $app->redirect(JRoute::_('index.php?option=com_users&view=login', false));
  return false;

原始答案 确保您使用的是 2.5 系列的最新版本。原来的 recaptcha 插件无法工作,因为 Google 将他们的 API 脚本位置从 recaptcha.net 更改为 google.com/recaptcha 。您可以打开 recaptcha 文件进行快速检查。

【讨论】:

您好,谢谢您的回答和您的时间,是的,我有 joomla 2.5 的最终版本(我的版本是 2.5.28),下一步是升级到 joomla 3.x,但对我来说这是不可能的因为有几个插件在升级后会出现问题 再次检查 API 路径以确定。如果您在此过程中使用了一些升级包,它们并不总是包含该插件。多年来,我有几个客户网站不得不手动覆盖。 嗨,再次感谢您的回复和帮助,我再次检查了 API 路径,一切似乎都很好,我也将模板更改为(joomla beez 标准)并且那里的验证码可以正常工作我也没有为验证码使用任何外部插件,但是从验证码在默认模板中工作的那一刻起,默认值就在 joomla 安装中,我相信它与应该在文件中输入的代码的最后部分有关它是验证/处理表单,我将该代码输入到以下文件:template\mytemplate\html\mod_login\default.php 已编辑答案。确保您已设置 $app。 最后我解决了它,因为我认为这是用于验证/处理表单的代码的最后部分我在提交/注册按钮后放置了一个检查解决方案,我的问题得到了解决,谢谢你时间和你的帮助我的朋友

以上是关于Joomla 2.5 中的验证码自定义表单的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenID 的 Joomla 2.5 自定义身份验证插件

如何使用自定义插件将值插入 Joomla 2.5 DB

需要Joomla 2.5 自定义组件Router.php 说明

如何自定义 Joomla 2.5 联系人组件?

在自定义组件中更改 joomla 2.5 默认编辑器

joomla 自定义表单注销用户