2016-12-13 1 views
-1

이름, 이메일, 기타 필드가있는 등록 양식이 있습니다. 이메일 입력란에 ** [email protected] **를 입력하면 허용됩니다. 그러나 실제로는 [email protected] **가 m으로 끝나지 않으므로 잘못되었습니다. **[email protected]이어야합니다.젠드 프레임 워크 2의 이메일 유효성 확인

유효성을 검사 할 수있는 방법이 없으므로 .com으로 끝나고 @가있는 전자 메일 만 수락 할 수 있습니다.

보기/등록 : 사전에

<?php 
echo $this->form()->openTag($form); 
?> 
<dl class="zend_form"> 
<dt><?php echo $this->formLabel($form->get('name')); ?></dt> 
<dd><?php 
    echo $this->formElement($form->get('name')); 
    echo $this->formElementErrors($form->get('name')); 
?></dd> 

<dt><?php echo $this->formLabel($form->get('email')); ?></dt> 
<dd><?php 
    echo $this->formElement($form->get('email')); 
    echo $this->formElementErrors($form->get('email')); 
?></dd> 

<dt><?php echo $this->formLabel($form->get('password')); ?></dt> 
<dd><?php 
    echo $this->formElement($form->get('password')); 
    echo $this->formElementErrors($form->get('password')); 
?></dd> 

<dt><?php echo $this->formLabel($form->get('confirm_password')); ?></dt> 
<dd><?php 
    echo $this->formElement($form->get('confirm_password')); 
    echo $this->formElementErrors($form->get('confirm_password')); 
?></dd> 
<br/> 
<dd><?php 
    echo $this->formElement($form->get('submit')); 
    echo $this->formElementErrors($form->get('submit')); 
?></dd> 

</dl> 
<?php echo $this->form()->closeTag() ?> 

감사

+4

그냥 .... '[email protected] '입니다. 실제로 유효한 * 이메일 주소입니다! – Hackerman

+1

도메인'yahoo.co'도 유효하며 존재합니다. – Dragos

+0

형제 감사합니다. – Skylink

답변

0

당신은 당신이 특정 허용 된 사이트 목록에서 도메인 (예를 들어 콜백 유효성 검사기를 사용하여 수행 할 수 있도록하는 사용자 정의 유효성 검사기를 사용하여 양식 유효성을 검사 할 수 있습니다 올바른 사용자 정의 유효성 검사기가 더 좋을지라도).

정말하지만 사용 사례에 따라 달라집니다,하지만 당신은 또한 블랙리스트 :

흥미로운 솔루션은 아마 숨겨진 필드 (체크 박스 또는 라디오 버튼)을 갖는 것을 사용하여 확인할 수 있으며, 먼저 당신은 당신의 블랙리스트에 대해 확인 확인

이 설정은 사용자 정의 유효성 검사기에서 다음

return [ 
    'domains_blacklist' => [ 
     'yahoo.co' => 'yahoo.com', 
    ], 
]; 

를 포함 말 ... 당신의 설정에서 배열의 키를 사용하고, 오류 메시지에 대한 PARAM으로 적절한 도메인을 통과 여부 이메일은 이러한 문자열 중 하나를 완료 : 그것은 "? 당신이 입력 한 도메인 (% 도메인 %)이 유효 확실"와 같은 메시지와 함께 오류를 반환 않습니다

in_array($domain_from_value, array_keys($this->config['domains_blacklist')) 

경우.

양식을 다시 표시 할 때 오류가 있는지 여부와 존재하는 경우 숨김 필드를 표시할지 여부를 테스트했는지 확인하십시오.

마지막으로 유효성 검사기를 변경하면 확인란에 대한 유효성 검사가 더 이상 유효하지 않습니다. 유효한 메서드에서 두 번째 매개 변수를 사용하면 문맥이라고하며 양식의 모든 필드가 포함됩니다.

관련 문제