Php 如何使用ATK4实现图像验证

Php 如何使用ATK4实现图像验证,php,atk4,Php,Atk4,我正在开发一个简单的web表单来收集我网站访问者的反馈。由于访问者没有经过身份验证,我想为用户实现一个图像验证步骤。我在atk4文档中搜索过,找不到类似实现的任何参考。我还检查了4个插件的源代码,找到了两个资源-查看\u repatcha和表单\u字段\u验证 我不确定我应该跟着哪个。是否有任何示例代码或教程可供我参考为我的web表单实施图像验证步骤? 这实现了一个非常核心的验证码实现,而不使用任何控制器或视图。当然,不鼓励这样编写代码,但如果您有截止日期,这是您可以使用的最后手段: $sec_

我正在开发一个简单的web表单来收集我网站访问者的反馈。由于访问者没有经过身份验证,我想为用户实现一个图像验证步骤。我在atk4文档中搜索过,找不到类似实现的任何参考。我还检查了4个插件的源代码,找到了两个资源-查看\u repatcha和表单\u字段\u验证

我不确定我应该跟着哪个。是否有任何示例代码或教程可供我参考为我的web表单实施图像验证步骤?

这实现了一个非常核心的验证码实现,而不使用任何控制器或视图。当然,不鼓励这样编写代码,但如果您有截止日期,这是您可以使用的最后手段:

$sec_image_field = $f->addField('line', 'sec_image', 'Security code')
    ->setNotNull()
    ->setNoSave();


$captcha_src = '/lib/kcaptcha/?' . $session_name . '=' . session_id();
$kaptcha_img = $sec_image_field->getTag('img',array('src' => $captcha_src, 'id' => 'kpt' ));
$kaptcha_img .= ' <a href="#" onclick="d=new Date(); (jQuery(\'#kpt\')'.
   '.attr(\'src\', \'' . $captcha_src . '&t=\' + d.getTime()));return false;">';
$kaptcha_img .= '<i class="atk-icon atk-icons-nobg atk-icon-arrows-left3"></i>';
$kaptcha_img .= ' reload</a>';
$sec_image_field->template->set('after_field', '<ins>Enther the code you see below</ins> <span>' . $kaptcha_img . '</span>'
注意:您需要安装recapcha lib。见资料来源

制作更好的卡普查
也许最好的方法是引入一种新的字段类型(Form_field_Capcha),它可以完全自动完成整个过程。它不应该捆绑任何PHP库,而是依赖第三方服务生成图像。它还必须使用。

目前没有教程。它也不是完美的,是从一个项目捐赠的。我会在答案中添加用法,如果您认为您可以改进此组件,我将不胜感激。非常感谢您提供详细的答案。由于需求非常迫切,我现在似乎必须使用kcaptcha解决方案。我会让你知道实施的进展。一旦有更好的东西出现,我肯定会在博客上发表,并可能在这里编辑我的文章。
$rc = $form->add('View_ReCaptcha');
....
if($form->isSubmitted()){
    ...

    if(!$rc->isValid()){

        $js=$this->js->univ();

        if($r->getError()){
            $js->alert($rc->getError());
        }else{
            $js->alert('Error in capcha');
        }
        $js->execute();
    }
    ....
}