`
kirenenko04
  • 浏览: 152051 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Magento native captcha for contact form

 
阅读更多

Native CAPTCHA settings

First of all find Customer Configuration and open CAPTCHA settings

How to add new form to CAPTCHA settings?

Create new module and add this lines to config.xml:

<?xml version="1.0"?>
<config>
  ...
  <global>
    <events>
      <controller_action_predispatch_routename_controller_method>
        <observers>
          <module>
            <class>module/observer</class>
            <method>checkCaptcha</method>
          </module>
        </observers>
      </controller_action_predispatch_routename_controller_method>
    </events>
  </global>
  <default>
    <captcha>
      <frontend>
        <areas>
          <contact_form>
            <label>Contact Form</label>
          </contact_form>
        </areas>
      </frontend>
    </captcha>
    <customer>
      <captcha>
        <always_for>
          <contact_form>1</contact_form>
        </always_for>
      </captcha>
    </customer>
  </default>
</config>

 You might found here module/observer. It is explained further.

How to show CAPTCHA in contacts form?

Find your form template and insert:

<form action="<?php echo $this->getFormAction(); ?>" id="contactForm" method="post" class="form">
...
<?php echo $this->getChildHtml('captcha'); ?>
...
</form>

 After that find layout xml for your page, for example mine was contacts.xml:

<layout version="0.1.0">
    <contacts_index_index translate="label">
        <label>Contact Us Form</label>
        <reference name="root">
            <action method="setTemplate"><template>page/3columns.phtml</template></action>
            <action method="setHeaderTitle" translate="title" module="contacts"><title>Contact Us</title></action>
        </reference>
        <reference name="content">
            <block type="core/template" name="contactForm" template="contacts/form.phtml">
                <block type="captcha/captcha" name="captcha">
                    <reference name="head">
                        <action method="addJs"><file>mage/captcha.js</file></action>
                    </reference>
                    <action method="setFormId"><formId>contact_form</formId></action>
                    <action method="setImgWidth"><width>230</width></action>
                    <action method="setImgHeight"><width>50</width></action>
                </block>
            </block>
        </reference>
    </contacts_index_index>
</layout>

 

How to check CAPTCHA?

Create Observer for your module:

<?php
class Your_Module_Model_Observer
{
    /**
     * Get Captcha String
     *
     * @param Varien_Object $request
     * @param string $formId
     * @return string
     */
    protected function _getCaptchaString($request, $formId)
    {
        $captchaParams = $request->getPost(Mage_Captcha_Helper_Data::INPUT_NAME_FIELD_VALUE);
        return $captchaParams[$formId];
    }
 
    /**
     * Break the execution in case of incorrect CAPTCHA
     *
     * @param Varien_Event_Observer $observer
     * @return Your_Module_Model_Observer
     */
    public function checkCaptcha($observer)
    {
        $formId = 'contact_form';
        $captchaModel = Mage::helper('captcha')->getCaptcha($formId);
        if ($captchaModel->isRequired()) {
            $controller = $observer->getControllerAction();
            if (!$captchaModel->isCorrect($this->_getCaptchaString($controller->getRequest(), $formId))) {
                Mage::getSingleton('customer/session')->addError(Mage::helper('captcha')->__('Incorrect CAPTCHA.'));
                $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
                Mage::getSingleton('customer/session')->setCustomerFormData($controller->getRequest()->getPost());
                $controller->getResponse()->setRedirect(Mage::getUrl('*/*/index'));
            }
        }
 
        return $this;
    }
}

 

分享到:
评论

相关推荐

    smaily-magento-extension:Magento 2.0+的Smaily扩展

    Magento内置的CAPTCHA和Google reCAPTCHA支持。 Magento产品RSS提要 生成具有50种最新产品的默认RSS提要,以轻松导入到Smaily模板中; 可以根据产品类别自定义生成的RSS提要的选项; 选择将生成的RSS提要产品的...

    magento创建动态菜单 Create Dynamic CMS Navigation For Magento Frontend

    在这个主题中,“Create Dynamic CMS Navigation For Magento Frontend”指的是在Magento的前端生成可以根据CMS页面自动生成的动态菜单。 在Magento中,静态菜单通常是通过后台管理界面手动创建和维护的,而动态...

    magento-react-native:适用于Magento 2.x的React Native移动应用

    适用于Magento 2的开源React Native移动应用 Magento React Native是适用于您的Magento 2网站的功能齐全的电子商务应用程序。 它使用来分发目录,产品,将产品添加到购物车,下订单等等。 :megaphone: 宣告这个项目...

    开源网店系统 Magento

    Magento是一款强大的开源电子商务平台,由Varien公司开发,并在2008年首次发布。它以其高度可定制性、丰富的功能集以及灵活的架构而受到全球电商从业者的广泛青睐。这款网店系统的出现,为中小型企业提供了与大型...

    magento快速复制网站_magento_magento快速复制站_

    在电商领域,经常会有需求将一个已经建立并运行良好的Magento站点快速复制到另一个服务器,用于测试、备份或者创建一个新的独立站点。这个过程涉及到数据库的备份与还原、文件系统的复制以及配置的调整等多个步骤。 ...

    SpecialPromotionsProforMagento2-2.7.0-CE_magento_magento2_builte

    "Special Promotions Pro for Magento 2 - 2.7.0-CE" 是一款专为Magento 2电子商务平台设计的扩展模块,由Amasty开发。这个模块的主要目标是增强商家的促销策略,提供更灵活和定制化的优惠活动,以吸引并留住客户。...

    Magento深入理解Magento

    ### Magento深入理解——强大配置系统解析 #### 一、引言 Magento是一款极其灵活且功能丰富的电子商务平台,其核心竞争力之一在于其强大的配置系统。这一系统不仅为开发者提供了极高的定制化能力,还确保了平台的...

    Magento 2 Beginners Guide

    He is an active member of the community and has been recognized as a Magento Master for 2017. He is the Chief Operating Officer of Wagento, a full-service Magento Solution Partner with offices in ...

    varnish-magento

    这个文件可能包含了一个解决此问题的荷兰语支持工作流,例如通过修改Varnish的配置或者 Magento 的代码来确保form key在缓存过程中正确处理。 在部署Varnish时,有几点需要注意: 1. **配置Varnish**: 需要为...

    magento数据结构分析

    标题:“Magento数据结构分析” 描述:“Magento数据字典”提供了对Magento系统中各种数据库表的深入理解,这对于理解和优化Magento的性能至关重要。 一、Magento数据结构解析 Magento是一款功能强大的电子商务...

    magento二次开发大全

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。在进行Magento的二次开发时,你需要理解并掌握以下几个核心概念和技术: 1. **MVC架构**:Magento基于Model-View-Controller(MVC)设计模式...

    Magento-SMTP-Email

    Magento是开源的电子商务平台,广泛用于在线商店的建设。SMTP(Simple Mail Transfer Protocol)是用于发送电子邮件的标准协议。在Magento中,SMTP插件扮演着关键角色,它允许商家通过更安全、可靠的SMTP服务器发送...

    magento入门学习资料

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。作为一款基于PHP开发的系统,它为商家提供了丰富的功能,包括商品管理、订单处理、客户管理、营销工具等。以下将详细介绍`magento入门学习资料...

    magento-java-master.zip_magento

    这个“magento-java-master.zip_magento”压缩包可能是为了提供一个Java连接Magento源码的示例或者库,帮助开发者实现Java与Magento系统的交互。 在Java中与Magento进行交互通常涉及到以下几个关键知识点: 1. **...

    magento static block

    New GUI added 10 predefined block positions on each page Ability to place any block in any position by easily ... Meets Magento programming practices for most versions and customizations compatibility

    magik shoes magento 模板, magento 1.7 模板

    Magento是一款开源的电子商务平台,专为在线商家设计,提供强大的购物车系统和丰富的功能。"Magik Shoes Magento 模板"是专为Magento 1.7版本设计的商店主题,旨在提升在线鞋类销售商店的用户体验和视觉吸引力。在这...

    magento2 developers cookbook

    根据给定文件信息,以下为《Magento 2 Developer's Cookbook》一书中的知识点介绍。 首先,《Magento 2 Developer's Cookbook》是一本针对Magento 2开发的指导手册,它向开发者提供了实用的食谱来解决在Magento 2...

    magento图片延时加载插件

    Magento是一款强大的开源电子商务平台,它的灵活性和可扩展性使得开发者能够根据需求定制各种功能。在电商网站中,图片是至关重要的元素,它们可以展示产品细节,吸引顾客注意力。然而,大量的图片也会对网站性能...

    Magento插件开发手册 Magento Extension Developers Guide

    Magento是一款强大的开源电子商务平台,为开发者提供了广泛的定制和扩展能力。《Magento插件开发手册》是一份详尽的指南,旨在帮助开发者理解Magento的核心架构、编码标准以及如何创建和部署自定义插件。 ### ...

    Magento php开发指南

    Magento是一款流行的开源电子商务平台,其功能强大且模块化,它支持在线零售业务的创建和管理。Magento使用PHP语言编写,它为开发者提供了丰富的扩展性和灵活性,使得定制网站功能和外观成为可能。本指南是为后台...

Global site tag (gtag.js) - Google Analytics