0

如何在 zend 框架 2 中包含 Recaptcha 服务?

我试着这样做:

public function contactAction()
{
    $formContact = new ContactForm();
    $pubKey = 'mypubkey';
    $privKey = 'myprivkey';
    $recaptcha = new ZendService\ReCaptcha\ReCaptcha($pubKey, $privKey);
    return array ('formContact' => $formContact, 'recaptcha' => $recaptcha);

}

但是我发现下载框架时 ZendService\ReCaptcha 默认不存在。所以,我从这里下载了它 https://github.com/zendframework/ZendService_ReCaptcha

我把它和vendor\zendframework\zendframework\library\zend图书馆的其他部分放在一起。

我尝试刷新页面,但由于找不到 zend 服务重新验证,因此无法再次工作。

Fatal error: Class 'Application\Controller\ZendService\ReCaptcha\ReCaptcha' not found in C:\Program Files (x86)\xampp\htdocs\Zf-tutorial\module\Application\src\Application\Controller\IndexController.php on line 79

有人能帮我吗?我认为实施 recaptcha 很简单,但事实并非如此!谢谢!

4

3 回答 3

2

将 zendservice-recaptcha 模块添加到您的 composer.json 文件并运行更新:

{
        ...
        "repositories": [
            {
                "type": "composer",
                "url": "http://packages.zendframework.com/"
            }
        ],
        ...
        "require": {
            ...
            "zendframework/zendservice-recaptcha": "*",
            ...
        }
        ...
    }

更新作曲家:

php composer.phar update

这将安装模块并配置相关的类映射,您将能够通过添加 use 语句来访问这些类,就像您使用的任何其他类一样。

于 2014-11-22T15:27:33.383 回答
0

即使我尝试了recaptcha但没有成功,所以实施了一些不同的方法来刷新验证码并且效果很好,试试这个

重置验证码功能

    $form = $this->getServiceLocator()->get('zfcuser_register_form');
    $captcha = $form->get('captcha')->getCaptcha();
    $data = array();
    $data['id'] = $captcha->generate();
    $data['src'] = $captcha->getImgUrl() .
    $captcha->getId() .
    $captcha->getSuffix();
    return $data;

ajax 请求:

$(document).ready(function() {
        $('#refreshcaptcha').click(function() {
            var data = [];
            var form = <?php $this->registerForm; ?>
            data.push({name: "action", value: 'resetCaptcha'});
            data.push({name: "params[form]", value: form});
            $.post("<?php echo BASE_URL ?>/user/iajax", data,
               function(data) {
                        $('#form_reg img').attr('src', data.src);
                        $('#captcha-id-hidden').attr('value', data.id);
                    }, 'json');
        });
    });

html调用:

   <p class="refresh_captcha"><?php echo $this->formCaptcha($form->get('captcha')); ?>
                <input type="button" id="refreshcaptcha" value="refresh">
            </p>
于 2014-10-22T10:02:49.733 回答
-1

您没有正确安装库ZendService\ReCaptcha

你的系统写:

Class 'Application\Controller\ZendService\ReCaptcha\ReCaptcha' not found

你必须:

  • 将其放入vendor\zendframework\zendframework\library
  • 在文件vendor/ZF2/library/Zend/Loader/StandardAutoloader.php中插入字符串

    $this->registerNamespace('ZendService', dirname(dirname((__DIR__))) . '/ZendService');

    case self::AUTOREGISTER_ZF:

  • 在文件中init_autoloader.php插入字符串

    $loader->add('ZendService', $zf2Path);.

于 2014-11-22T10:36:45.597 回答