gpt4 book ai didi

zend-framework - Zend 框架和 ReCaptcha

转载 作者:行者123 更新时间:2023-12-04 08:58:10 25 4
gpt4 key购买 nike

我需要在 ZF 应用程序的表单中插入 ReCaptcha。我正在尝试遵循官方文档,但 ReCaptcha 服务总是向我返回错误“incorrect-captcha-sol”。
我正在使用的代码:

(在表格中)

// configure the captcha service
$privateKey = 'XXXXXXXXXXXXXXXXXXX';
$publicKey = 'YYYYYYYYYYYYYYYYYYYY';
$recaptcha = new Zend_Service_ReCaptcha($publicKey, $privateKey);

// create the captcha control
$captcha = new Zend_Form_Element_Captcha('captcha',
array('captcha' => 'ReCaptcha',
'captchaOptions' => array(
'captcha' => 'ReCaptcha',
'service' => $recaptcha)));

$this->addElement($captcha);

(在 Controller 中)
$recaptcha = new Zend_Service_ReCaptcha('YYYYYYYYYYYYY', 'XXXXXXXXXXXXXXX');

$result = $recaptcha->verify($this->_getParam('recaptcha_challenge_field'),
$this->_getParam('recaptcha_response_field'));

if (!$result->isValid()) {
//ReCaptcha validation error
}

请问有什么帮助吗?

最佳答案

为什么要从表单中拉出一个单独的元素来进行检查?这就是我这样做的方式:

表格

<?php
class Default_Form_ReCaptcha extends Zend_Form
{
public function init()
{
$publickey = 'YOUR KEY HERE';
$privatekey = 'YOUR KEY HERE';
$recaptcha = new Zend_Service_ReCaptcha($publickey, $privatekey);

$captcha = new Zend_Form_Element_Captcha('captcha',
array(
'captcha' => 'ReCaptcha',
'captchaOptions' => array('captcha' => 'ReCaptcha', 'service' => $recaptcha),
'ignore' => true
)
);

$this->addElement($captcha);

$this->addElement('text', 'data', array('label' => 'Some data'));
$this->addElement('submit', 'submit', array('label' => 'Submit'));
}
}

Controller
$form = new Default_Form_ReCaptcha();

if ($this->getRequest()->isPost()===true) {
if($form->isValid($_POST)===true) {
$values = $form->getValues();
var_dump($values);
die();
}
}

$this->view->form = $form

查看
echo $this->form;

这是非常透明的代码。当表单的 isValid() 被执行时,它会验证它的所有元素,并且只有当每个元素都有效时才返回 true。

当然,请确保您使用的 key 与您运行此代码的域相关。

如果您有更多问题,请告诉我。

关于zend-framework - Zend 框架和 ReCaptcha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1890622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com