2017-02-15 3 views
0

Я проверяю адрес электронной почты using-filter_var ($ email, FILTER_VALIDATE_EMAIL). Я хочу повторить высказывание «Недействительный адрес электронной почты», если указанная выше функция возвращает false. Однако независимо от if-statement 'invalid email' эхо на экране с начала времени загрузки страницы. Помогите.

Это мой код:

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

, где вы создаете '$ email'? –

ответ

1

, кажется, что вы не проверить, если $email установлен перед тем проверка электронной почты. как пустая строка или null не действительный адрес электронной почты, тест не пройден, и сообщение invalid 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 –

Смежные вопросы