나는 이것을 분류 해 놓았을 것이라고 생각했지만 걸쇠에 부딪쳤다. 고객 등록 양식에 '꿀 냄비'를 추가하고 싶습니다. 익숙하지 않은 사람들은 CSS를 사용하여 텍스트 입력을 숨기고 평균 봇이 입력한다고 가정합니다. 그러나 인간은 필드를 볼 수 없으므로 비어있는 것으로 확인해야합니다. 나는 새 모듈을 생성 젠토에서Magento 고객 등록 'Honey Pot'captcha
는,하여 config.xml 파일에 다음을 추가 :
<global>
<fieldsets>
<customer_account>
<honeytrap><create>1</create><update>1</update></honeytrap>
</customer_account>
</fieldsets>
<models>
<customer>
<rewrite>
<customer>MyStore_Honeytrap_Model_Customer</customer>
</rewrite>
</customer>
</models>
</global>
내가 다음 필드가 비어 확인하는 유효성 검사 기능에 약간의 여분의 추가. 이 모든 올바른 내가 볼 수 있지만 약 line 278
에서 AccountController.php
extractData()
요청의 게시물 데이터에서 입력 된 필드를 삭제합니다. 나는 아직도 Magento에게 아주 새로운 것을 알고 있기 때문에 무언가를 여기에서 배우기를 희망한다. 그러나 나는 필드가 게시물에서 벗겨지는 것을 extractData()
에 의해 어떻게 막을 수 있을까?
추측 나는 내가 무엇을 놓쳤는 지 알고 싶다. 인터넷에서 내가 정의한 필드를 추가하는 것과 관련하여 몇 가지 게시물을 읽었으므로 이것이 작동해야한다는 것을 알았다. 그러나 아마도 나는 뭔가를 놓친 것 같다. 데이터베이스에서이 필드를 저장할 필요가 없기 때문에 엔티티 설치를 포함하지 않았습니다. 등록을 검증하는 것은 순수한 것입니다 (가능한 한 많이).
어떤 도움을 주셔서 감사합니다. 아마도 내가 놓친 것은 어쩌면 우스운 이야기 일 것입니다.
편집 : config.xml
이 함께
public function check_trap(Varien_Event_Observer $observer)
{
$event = $observer->getEvent();
$post = $event->getControllerAction()->getRequest()->getPost();
// Check Honeytrap is empty
if (Zend_Validate::is(trim($post['fname']) , 'NotEmpty'))
{
$customerHelper = Mage::helper('customer');
$error = $customerHelper->__('A problem has occured with your registration.');
Mage::getModel('customer/session')->addError($error);
Mage::app()->getResponse()
->setRedirect(Mage::getUrl('customer/account', array('_secure' => true)))
->sendResponse();
exit;
}
}
: @ 고든 - knoppe 포인터 이벤트를 사용하는 방법에 대한 감사
<events>
<controller_action_predispatch_customer_account_createpost>
<observers>
<mystore_honeytrap_observer>
<type>singleton</type>
<class>Mystore_Honeytrap_Model_Observer</class>
<method>check_trap</method>
</mystore_honeytrap_observer>
</observers>
</controller_action_predispatch_customer_account_createpost>
</events>
대신 위 이벤트를 사용하여 실험을 반영하기 위해 위의 게시물을 편집했습니다. 내가 리디렉션과 약간의 싸움을 했음에도 불구하고 작동하지만 잠재적으로 더 나은/깨끗한 방법으로 할 수 있습니다. 포인터 주셔서 감사합니다 :) – createdbypete