2017-02-15 8 views
0

私はfilter_var($ email、FILTER_VALIDATE_EMAIL)を使用して電子メールを検証しています。 上記の関数がfalseを返す場合は、「無効な電子メール」というステートメントをエコーし​​ます。しかし、if文に関係なく、ページが読み込まれたときから画面に「無効な電子メール」がエコーされます。助けて。

これは私のコードです:

<?php $emailErr = ""; ?> 
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
<ul class="form-style-1"> 
<li> 
<label for="email">Email</label> 
<input placeholder="Email*" type="email" name="email" id="email" required> 
</li> 
<?php 
if(filter_var($email, FILTER_VALIDATE_EMAIL) == false){ 
$emailErr = "Invalid email."; 
echo $emailErr;}?> 
</ul> 
</form> 
+1

を? –

答えて

1

$emailは、電子メールを検証する前に設定されているかどうかをチェックしていないようです。空の文字列またはnullが有効な電子メールでないと、テストは失敗し、メッセージinvalid email

を表示されているあなたは、この使用する必要があります:あなたは `$のemail`を作成するのです

if(!empty($email) && filter_var($email, FILTER_VALIDATE_EMAIL) === false) { 
    $emailErr = "Invalid email."; 
    echo $emailErr; 
} 
+0

ユーザが電子メールを送信する前に '$ email'に値' null'が含まれているので、関数 'filter_var'は電子メールとして' null'を検証しようとします。 nullが有効でないため、エラーメッセージが表示されるため、これは失敗します。 var '$ email'が内容を検証しようとする前に何かを含んでいるかどうかをチェックする必要があります。それは関数 'empty'で行われます –

+0

ありがとうございました。これは私のために働いた。 :D –

関連する問題