Проверка формы электронной почты PHP - PullRequest
0 голосов
/ 21 февраля 2012

Я работаю над формой комментариев для веб-сайта и пытаюсь обезопасить себя от спамеров.Я взял функцию validEmail из этой ссылки .

Я не очень опытен в использовании функций.Это правильный способ вызова функции и проверки адреса электронной почты пользователя?Любые предложения приветствуются.Спасибо

$email = $_POST['email'];

if (validEmail($email)) {

$to      = 'fsddfsdfa@gmail.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com';

mail($to, $subject, $message, $headers);

print "Form submitted successfully: <br>Your name is <b>".$_POST['cname']."</b> and your email is <b>".$_POST['email']."</b><br>";

} else {

print "There was an error with your form submission.";

}

Ответы [ 4 ]

3 голосов
/ 21 февраля 2012

PHP, начиная с 5.2.0, имеет свои собственные фильтры проверки, которые можно использовать для проверки правильности ввода пользователем адреса электронной почты. Нет необходимости полагаться на то, что вы найдете в Интернете для этой цели, поскольку эти функции могут быть испорчены или нарушены. Чтобы использовать filter_var () для проверки электронной почты, решением будет:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    print "E-mail is correct";
} else {
    print "E-mail is not correct";
}

(также обратите внимание, что в исходном примере кода в вопросе отсутствовала точка с запятой в одном из отпечатков).

1 голос
/ 21 февраля 2012

Вся эта связанная validEmail() функция может быть заменена на:

function validEmail($email)
{
    if (filter_var('bob@example.com', FILTER_VALIDATE_EMAIL) !== false) {
        $domain = preg_split("/@/", $email);
        $domain = $domain[count($domain) - 1];
        if (checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")) {
            return true;
        }
    }
    return false;
}

хотя я просто беру функцию checkdnsrr() из статьи, которую вы связали. Я не знаком с этим, и я не использовал его ни для чего раньше. Встроенная функция filter_var() - это, пожалуй, все, что вы действительно хотели бы использовать, поскольку проверка DNS требует времени (поэтому каждый раз, когда кто-то отправляет что-то в вашу форму, ваш сценарий может выполнять 2 поиска DNS).

1 голос
/ 21 февраля 2012

Функция, содержащая validEmail( $email );, должна быть включена в ваш файл:

include "whatever.php"

(Или вы можете скопировать и вставить функцию в тот же файл, что и ваш код)

Ваше утверждение if должно выглядеть примерно так:

if( validEmail( $email ) ) {
  // print your success message here
} else {
  // print your fail message here
}

В ответ на ваш комментарий ниже вы также можете написать выше:

if( validEmail( $email ) === true ) {
  // print your success message here
} else {
  // print your fail message here
}
0 голосов
/ 02 октября 2012
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "e-Mail is Valid";
} else {
    echo "Invalid e-Mail";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...