2012-04-06 64 views
0

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

我知道如何添加字段,但没有人知道如何添加代码以拒绝表单,如果该字段有值?

谢谢!

回答

2

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

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

最后,在重写的行动,把

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

赶上。

1

我不确定你要去哪里,但也许这会有所帮助。

的标准控制器是Mage_Contacts_IndexController,它位于:应用程序/代码/核心/法师/联系人/控制器/ IndexController.php

当然,你要么想将它复制到local目录或用你自己定制的模块扩展这个类。你可以尝试使用这个文件的副本。我希望这有帮助。

1

我对寻找人的次要贡献 - 这种防御称为蜜罐。所以你去了。

在Magento的1.3.2,我说这在我的控制器的复制75线在code/local/Mage/Contacts/controllers/IndexController.php

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

其中“美味”是隐藏字段我template/contacts/form.phtml增加。

0

我想你可以把隐藏字段,而你在这样的主块创建表单:

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

,并在此之后,你可以在saveAction()检查,以检查这些值设置或不是