2017-06-08 12 views
-1

私のコードを確認してください。私は検証の電子メールのための2つのフィールドに持ってよくある質問FILTER_VALIDATE_EMAILに関するこの問題の解決方法

if ($email == NULL) { 
      $error['email'] = "email is missing"; 
     } 

を別の

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      $error['emailfilter'] = "email is Invalid"; 
    } 

である。しかし、電子メールフィールドが空/ブランクのあるときに私の問題があります。私はそれらの戦争がショーであることを発見しました。 "電子メールがありません" & "電子メールが無効です";私は1つだけの戦争が表示されます。電子メールが空白/空白の場合など。 「電子メールがありません」と表示されます。「電子メールが無効です」と電子メールが有効でない場合は、「電子メールが無効です」と表示されます。以下は私のフルコードです。

<?php 
    if (isset($_POST['contact'])) { 

     $warning = array(); 
     $firstname = $_POST['firstname']; 
     $lastname = $_POST['lastname']; 
     $email = $_POST['email']; 
     $msg = $_POST['message']; 
     $to = "[email protected]"; 
     $sub = "you got a msg"; 
     $headers = "from: $email"; 

     if ($firstname == NULL) { 
      $error['fname'] = "firstname is missing"; 
     } 
     if($lastname == NULL){ 
      $error['lname'] = "Last name is missing"; 
     } 
     if ($email == NULL) { 
      $error['email'] = "email is missing"; 
     } 

     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      $error['emailfilter'] = "email is Invalid"; 
     } 

     if ($msg == NULL) { 
      $error['msg'] = "message is required"; 
     } 
     if (count($error) == 0) { 
      mail($to, $sub, $msg, $headers); 

      $success = "Message Submited"; 
     } 
    } 


?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>conatact</title> 
    <link rel="stylesheet" href="style.css"> 
</head> 
<body> 
    <form action="" method="POST"> 
     <input type="text" name="firstname" Placeholder="First Name"><br /> 
     <p class="error"><?php if (isset($error['fname'])) { 
      echo $error['fname']; 
     }?></p> 
     <input type="text" name="lastname" Placeholder="Last Name"><br /> 
     <p class="error"><?php if (isset($error['lname'])) { 
      echo $error['lname']; 
     }?></p> 
     <input type="email" name="email" Placeholder="Email"><br /> 
     <p class="error"><?php if (isset($error['email'])) { 
      echo $error['email']; 
     }?></p> 
     <p class="error"><?php if (isset($error['emailfilter'])) { 
      echo $error['emailfilter']; 
     }?></p> 
     <textarea name="message" cols="30" rows="10"></textarea><br /> 
     <p class="error"><?php if (isset($error['msg'])) { 
      echo $error['msg']; 
     }?></p> 

     <input type="password" name="password" Placeholder="Password"><br /> 
     <input type="submit" value="send" name="contact"> 

    </form> 
    <h2 class="error"><?php if (isset($success)) { 
      echo $success; 
     }?></h2> 
</body> 
</html> 
+1

[elseif](https://secure.php.net/manual/en/control-structures.elseif.php)? – FirstOne

+0

なぜ検証ライブラリを使用しないのですか? vlucas/valitronはまともなものです – geggleto

+0

あなた自身や他人の安全のために、ユーザー入力の正しい取り扱いについてお読みください。開始場所は[w3schools](https://www.w3schools.com/php/php_form_validation.asp)です。 –

答えて

0

elseifを使用すると、最初の条件が一致しない場合にのみトリガーされます。

if ($email == NULL) { 
    $error['email'] = "email is missing"; 
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    $error['emailfilter'] = "email is Invalid"; 
} 

これが第一の条件をチェックし、それが$error['email']を移入ますされていない場合、彼らは、電子メールを持っているか、メールが値を持っているならば、それはそれの有効性を確認するために、電子メールでfilter_varを実行します。

+0

これは100%動作しています。どうもありがとうございます。 – Musarrof

関連する問題