2013-11-09 3 views
-1

연락처 양식에 약간의 문제가 있습니다. 나는 모든 것이 올바르다 고 생각하지만 항상 잘못된 결과를 얻는다. 나는 모든 필드를 채울 때PHP 폼 유효성 검사가 올바르게 작동하지 않습니다.

<?php 
    if (isset($_POST['contact_name']) && isset($_POST['contact_email']) && isset($_POST['contact_message'])) { 
     $contact_name = $_POST['contact_name']; 
     $contact_email = $_POST['contact_email']; 
     $contact_message = $_POST['contact_message']; 

     if (!empty($contact_name) && !empty($contact_email) && !empty($contact_message)) { 
      echo '0K!'; 
     } else { 
      echo 'Every field is required.'; 
     } 
    } 
?>   
     <form action="contacts.php" method="POST"> 
      Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br> 
      Email:<br><input type="text" name="contact_email" maxlength="50"><br><br> 
      Mensagem:<br> 
      <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br> 
      <input type="submit" value="Enviar"> 
     </form> 

내가 같은 결과를 얻을 : 여기

내 코드의 '모든 필드가 필요하다.' 'OK!'가 표시되어야합니다. 그러나 이전에 테스트했기 때문에 내가 작성한 모든 필드가 제공된다는 사실을 알고 있습니다.

기본 문제는 알고 있지만 알아낼 수는 없습니다.

+0

나는 당신의 조건이 모순이 있다고 생각합니다. –

+0

외부'if'는 아마도'if ($ _POST) {'- 내부 'if'에서 완전성을 검사하고있는 것 같습니다. – halfer

+0

하지만 그런 식으로는 사용자가 모든 필드를 정확하게 입력했는지 알 수 없습니다. – Nation

답변

0

바깥 쪽 if은 중복됩니다. 이 값은 POST 작업 중에 만 설정되지만 양식 요소가 항상 값을 제공하므로 POST가 완료되었는지 여부에 관계없이 POST마다 설정됩니다.

$contact_name = isset($_POST['contact_name']) ? $_POST['contact_name'] : null; 
$contact_email = isset($_POST['contact_email']) ? $_POST['contact_email'] : null; 
$contact_message = isset($_POST['contact_message']) ? $_POST['contact_message'] : null; 

그런 다음 하찮게과 같이 테스트 할 수 있습니다 : 인덱스가 존재하지 않는 경우

if ($_POST) { 

다음, 경고를 발생시키지 않는 방법으로 값을 읽을 : 그래서, 그냥이를 사용

if ($contact_name && $contact_email && $contact_message) { 
    // ok 
} 
1

이 시도 :

<?php 
if(isset($_POST['submit'])) { 
    $contact_name = $_POST['contact_name']; 
    $contact_email = $_POST['contact_email']; 
    $contact_message = $_POST['contact_message']; 

    if (empty($contact_name) && empty($contact_email) && empty($contact_message)) { 
     echo 'Every field is required.'; //This would be the message if the field(s) are empty. 
    } else { 
     echo 'OK!'; //This would be the message if all the fields are filled in. 
    } 
} 
?>   
    <form action="contacts.php" method="POST"> 
     Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br> 
     Email:<br><input type="text" name="contact_email" maxlength="50"><br><br> 
     Mensagem:<br> 
     <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br> 
     <input type="submit" value="Enviar" name="submit"> 
    </form> 
+0

'! empty'는'NOT empty'을 의미합니다 – artur99

+0

아, 미안하지만 제대로 생각하지 못했습니다. – Shad

1

오류 : !empty($contact_mensagem) (메시지가 halfer로 편집 됨), 실제로는 $contact_message이 있습니다. 내 컴퓨터에서 코드를 시도했는데 성공했습니다.

<?php 
    if (isset($_POST['contact_name']) && isset($_POST['contact_email']) && isset($_POST['contact_message'])) { 
     $contact_name = $_POST['contact_name']; 
     $contact_email = $_POST['contact_email']; 
     $contact_message = $_POST['contact_message']; 

     if (!empty($contact_name) && !empty($contact_email) && !empty($contact_message)) { 
      echo '0K!'; 
     } else { 
      echo 'Every field is required.'; 
     } 
    } 
?>   
     <form action="contacts.php" method="POST"> 
      Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br> 
      Email:<br><input type="text" name="contact_email" maxlength="50"><br><br> 
      Mensagem:<br> 
      <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br> 
      <input type="submit" value="Enviar"> 
     </form> 
+0

@Nation이 오류입니까? – artur99

관련 문제