2017-02-15 1 views
0

Je valide le courrier électronique using- filter_var ($ email, FILTER_VALIDATE_EMAIL). Je veux faire écho à une déclaration disant "email invalide" si la fonction ci-dessus renvoie false. Cependant indépendamment de if-statement 'email invalide' fait écho sur l'écran depuis le début de la page lors du chargement. Aidez-moi.

Ceci est mon code:

<?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

où vous créez 'email' de $? –

Répondre

1

il semble que vous ne cochez pas si $email est réglé avant de valider l'e-mail. comme une chaîne vide ou null n'est pas un e-mail valide, le test échoue et le message est affiché invalid email

Vous devez utiliser ceci:

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

avant que l'utilisateur n'envoie son email, '$ email' contient la valeur' null', donc la fonction 'filter_var' essayera de valider 'null' comme un email. cela échouera car null n'est pas valide et c'est pourquoi le message d'erreur sera affiché. vous devez vérifier si le var '$ email' contient quelque chose avant d'essayer de valider le contenu. cela est fait avec la fonction 'empty' –

+0

Merci beaucoup. Cela a fonctionné pour moi. :RÉ –