2012-04-06 5 views
0

Magento 매장의 문의 양식에서 가끔 스팸이 발송되었습니다. Captcha를 추가하는 것을 꺼려하여 양식에 숨겨진 필드를 추가하려고합니다. 필드가 채워지면 양식이 제출되지 않습니다 (대부분의 로봇은 자동으로 모든 필드를 완료합니다).Magento - 문의 양식에 숨겨진 필드 추가

필드를 추가하는 방법을 알고 있지만 필드에 값이있는 경우 양식을 거부하는 코드를 추가하는 방법과 방법을 알고있는 사람이 있습니까?

감사합니다.

답변

2

먼저 연락처 양식에서 요청한 컨트롤러 동작을 알아야합니다. 아직 알지 못하는 경우 <form>action 매개 변수를 확인하거나 Fiddler을 사용하거나 브라우저 별 도구 (예 : 방화범 이불 등)를 사용하여 찾으십시오.

다음으로 override 사용자가 컨트롤러를 찾았습니다.

마지막으로, 오버라이드 (override) 행동에, 잡을

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

을 넣어.

1

나는 당신이 여기서 무엇을 할 것인지 정확히 모르겠지만 어쩌면 도움이 될 것입니다.

표준 컨트롤러는 Mage_Contacts_IndexController이며 여기에 있습니다 : 응용 프로그램/코드/코어/마법사/연락처/컨트롤러/IndexController.php 물론

당신이 local 디렉토리에 복사 할 것 중 하나 또는 자신 만의 맞춤 모듈로 클래스를 확장하십시오. 이 파일의 복사본을 사용해 볼 수 있습니다. 이게 도움이 되길 바란다.

1

사람들의 검색에 대한 저의 작은 기여 - 이런 종류의 방어는 허니팟이라고합니다. 그래서 거기에 간다.

는 젠토 1.3.2, 나는 code/local/Mage/Contacts/controllers/IndexController.php에서 컨트롤러의 내 사본의 라인 75이 추가 :

'맛있는가'나는 template/contacts/form.phtml에 추가 된 숨겨진 필드입니다
// check the spam honeypot 
if (!empty($post['yummy'])) { 
    $error = true; 
} 

.

0

내가이 같은 메인 블록에서 양식을 작성하는 동안 숨겨진 필드를 넣을 수 있다고 생각 :이 값이 설정되어 있는지 확인하는

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

이 후

당신이 saveAction()에서 확인할 수 있습니다 또는 not

관련 문제