【问题标题】:Magento - Add Hidden Field to Contact FormMagento - 将隐藏字段添加到联系表
【发布时间】:2012-04-06 18:56:16
【问题描述】:

我偶尔会收到来自我的 Magento 商店的联系表单的垃圾邮件。我不愿意添加验证码,所以想尝试在表单中添加一个隐藏字段。如果该字段被填写,则不会提交表单(大多数机器人会自动填写所有字段)。

我知道如何添加字段,但是如果字段有值,有人知道如何/在哪里添加代码以拒绝表单吗?

谢谢!

【问题讨论】:

    标签: magento


    【解决方案1】:

    首先,您需要知道联系人表单请求的控制器操作。如果您还不知道,请检查您的<form>action 参数,或使用Fiddler,或使用某些浏览器特定工具(如Firebug 等)来查找。

    接下来,override你自己找到的控制器动作。

    最后,在你重写的动作中,放

    $sMyHiddenField = $this->getRequest()->getParam('my_hidden_field', '');
    if ($sMyHiddenField) {
        $this->_forward('noRoute');    // or whatever
    }
    

    捕捉。

    【讨论】:

      【解决方案2】:

      我不确定你到底想要什么,但也许这会有所帮助。

      标准控制器是Mage_Contacts_IndexController,它位于:app/code/core/Mage/Contacts/controllers/IndexController.php

      当然,您可能希望将其复制到local 目录,或者使用您自己的自定义模块扩展该类。您可以尝试使用此文件的副本。我希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        我对人们搜索的小贡献 - 这种防御称为蜜罐。就这样吧。

        在 Magento 1.3.2 中,我在 code/local/Mage/Contacts/controllers/IndexController.php 控制器副本的第 75 行添加了这个:

        // check the spam honeypot
        if (!empty($post['yummy'])) {
            $error = true;
        }
        

        其中 'yummy' 是我在 template/contacts/form.phtml 中添加的隐藏字段。

        【讨论】:

          【解决方案4】:

          我认为您可以像这样在主块中创建表单时放置隐藏字段:

          $fieldset->addField('entity_type_id', 'hidden', array(
                'name'               => 'entity_type_id',
                'value'              => 11
          ));
          

          然后你可以在 saveAction() 中检查这些值是否被设置

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-07-28
            • 1970-01-01
            • 2014-09-24
            • 1970-01-01
            • 2018-08-30
            • 2017-12-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多