2015-06-28 2 views
0

У меня есть форма PHP, чтобы получить имя и адрес электронной почты от пользователя. Для поля электронной почты я хочу проверить, что поле заполнено и что адрес электронной почты действителен. Я использую код нижеValidate email using filter_var PHP

Проверка заполнения поля электронной почты работает, но не проверка электронной почты.

<tr> 
<td align="right"> 
Email: 
</td><td align="left"> 
<input type="text" size="25" name="email" value="<? echo $_GET['email']; ? >"/"> 

<? 
#checking if email exists 
if ($error_code && !($_GET['email'])) { 
echo "<b>Please include your email address.</b>"; 
} 

# validating email 
if (!filter_var(($_GET['email']), FILTER_VALIDATE_EMAIL) === true) { 
echo "<b>This is not a valid email address.</b>"; 
} 

?> 

сообщения «Это не правильный адрес электронной почты» появляется еще до ввода адреса электронной почты, и он не показывает правильное сообщение в случае, если я ввести неверный адрес электронной почты и отправить форму. Что не так и почему проверяется ошибка электронной почты, указанная перед отправкой значения?

+0

проверки формы размещены перед проверкой электронной почты –

ответ

0

Попробуйте

if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) != true) { 
    echo "<b>This is not a valid email address.</b>"; 
} 

Причина вы видите результат, прежде чем вы отправляете форму, потому что вы не проверять, если $_GET массив был установлен прежде чем делать проверку.

Так что вы могли бы сделать что-то вроде ..

if(isset($_GET['email'])){ 
    if ($error_code && empty($_GET['email'])) { 
     echo "<b>Please include your email address.</b>"; 
    } 

    if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) != true) { 
     echo "<b>This is not a valid email address.</b>"; 
    } 
} 
0

Рассмотрите возможность тестирования isset($_GET['email']), заверяющего всю вашу проверку. Кроме того, если эти данные поступают из формы, проверьте, действительно ли ваш метод GET, в противном случае вы хотите проверить параметры с помощью $_POST.

0

Попробуйте это, и, пожалуйста, дайте мне знать, если это помогает

<? 
#checking if email exists 
if ($error_code && !($_GET['email'])) { 
echo "<b>Please include your email address.</b>"; 
} 

//# validating email 
if (!filter_var($_GET['email'], FILTER_VALIDATE_EMAIL)) { 
echo "<b>This is not a valid email address.</b>"; 
} 

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