【问题标题】:Error: Call to undefined function recaptcha_check_answer() in CakePHP 2.5.1 (PHP 5.3.28)错误:在 CakePHP 2.5.1 (PHP 5.3.28) 中调用未定义函数 recaptcha_check_answer()
【发布时间】:2016-05-25 10:27:11
【问题描述】:

我正在尝试在我的 CakePHP 应用程序的登录和注册页面中添加 google 的 reCAPTCHA。但它显示以下错误:

致命错误 错误:调用未定义函数 recaptcha_check_answer()
文件:C:...\app\Controller\UsersController.php

在 UsersController 中,我有错误消息中指示的以下行。

$recaptchaResp = recaptcha_check_answer(Configure::read("Recaptcha.privateKey"),
                            $_SERVER["REMOTE_ADDR"],

                            $this->params['form']["recaptcha_challenge_field"],
                            $this->params['form']["recaptcha_response_field"]);

谁能告诉我这段代码有什么问题?它是否缺少像 recaptchalib 这样的文件?如果是这样,我在哪里可以获得 CakePHP 2.5.1 的这个库?

【问题讨论】:

  • 只要阅读错误信息,您就知道出了什么问题?如果您阅读了它但不理解它,只需谷歌它或查看 php 手册。
  • 您回答了自己的问题:“错误:调用未定义的函数 recaptcha_check_answer()”。
  • 我已经用谷歌搜索过这个问题,但找不到任何解决方案。有一些关于如何在 PHP 应用程序中添加 reCAPTCHA 的建议。但是关于如何将它集成到使用 CakePHP 2.5.1 (PHP 5.3.28) 开发的应用程序中并不精确。似乎有不同的方法来添加这个插件。
  • @burzum,php 手册适用于 CakePHP 2.5.1 吗?
  • @Tom 您还没有包括声明该函数的位置。即根据the docs for that,您缺少require_once('recaptchalib.php'); 或同等学历;使用 CakePHP 编写应用程序并不会从根本上改变您的应用程序是用 ... PHP 编写的。

标签: cakephp recaptcha


【解决方案1】:

cakephp 中有一个用于 google reCaptcha 的插件。可以从Here下载

要使用recaptcha 插件,需要在/app/Config/bootstrap.php 文件中包含以下两行。

Configure::write('Recaptcha.publicKey', 'public-api-key');
Configure::write('Recaptcha.privateKey', 'private-api-key');

将使用recaptcha 的控制器需要包含Recaptcha 组件。通过包含该组件,助手会自动提供给您的视图。

public $components = array('Recaptcha.Recaptcha');

在视图中只需调用助手的 display() 方法来呈现 recaptcha 输入:

echo $this->Recaptcha->display();

要检查结果,只需在控制器中执行以下操作:

if ($this->request->is('post')) {
    if ($this->Recaptcha->verify()) {
        // verified
    } else {
        // display the error
    }
}

【讨论】:

  • 你实际上并没有回答这个问题,只是提出了一个不同的解决方案。
  • @AIPD TECH ,我从您提到的站点下载了插件,但没有 recaptchalib 文件。如果没有这个 recaptchalib,它是如何工作的?
  • @Tom 在供应商那里,你试过插件吗?
  • @AIPD TECH ,在 vendor 中,有一个文件 ReCaptcha.php。是否是 CakePHP 的 app/Vendor 文件夹中包含的 recaptchalib 文件?
  • @Tom 你所要做的就是包含插件,在bootstrap.php 中放置密钥,加载组件,并使用$this->Recaptcha->display() 显示,并使用$this->Recaptcha->verify() 进行验证,你就完成了。
猜你喜欢
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多