2012-04-06 103 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()檢查,以檢查這些值設置或不是