Maison  >  Article  >  développement back-end  >  PHP est livré avec une méthode pour vérifier votre adresse e-mail

PHP est livré avec une méthode pour vérifier votre adresse e-mail

*文
*文original
2017-12-29 18:04:202286parcourir

Cet article présente principalement en détail la méthode propre à PHP pour vérifier si la boîte aux lettres existe, et la méthode propre à PHP pour vérifier si l'URL et l'IP sont légales. Les amis intéressés peuvent s'y référer. J'espère que cela aide tout le monde.

Il existe de nombreuses façons de vérifier les adresses e-mail en PHP. La plus courante consiste à écrire vos propres expressions régulières. Cependant, les expressions régulières sont gênantes. PHP est livré avec sa propre méthode de vérification.

filter_var

filter_var est une méthode de filtrage de variables intégrée à PHP. Elle fournit de nombreux filtres pratiques qui peuvent être utilisés pour vérifier les entiers, flottants. numéro de point, email, URL, adresse MAC, etc.

Si filter_var renvoie false, cela signifie que la variable ne peut pas passer le filtre, ce qui signifie qu'elle est illégale.


$email = "lastchiliarch@163.com";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
$email = "asb";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
$email = "1@a.com";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));

Sortie :


string(21) "lastchiliarch@163.com"
bool(false)
string(7) 1@a.com

Pour les boîtes aux lettres illégales comme asb The le format a renvoyé false, mais pour 1@a.com, il a réussi, mais il était encore légèrement défectueux.

Cependant, si les règles générales sont adoptées, 1@a.com sera considérée comme une adresse e-mail légitime. Existe-t-il donc un moyen de la vérifier plus précisément ?

checkdnsrr

checkdnsrr est en fait utilisé pour interroger l'enregistrement DNS de l'hôte spécifié. Nous pouvons l'utiliser pour vérifier si la boîte aux lettres existe.

Pour 1@a.com, l'enregistrement MX n'existe définitivement pas.


$email = "lastchiliarch@163.com";
  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));
  $email = "1@a.com";
  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));

Sortie :


  bool(true)
  bool(false)

Comme vous pouvez le voir, c'est parfait, le seul inconvénient est qu'il est trop lent, après tout, c'est une requête réseau. Par conséquent, il n’est pas approprié d’utiliser cette méthode pour vérifier simultanément un grand nombre de boîtes aux lettres.

filter_var+checkdnsrr

Nous pouvons combiner filter_var et checkdnsrr pour la vérification. Pour la plupart des boîtes aux lettres illégales, filter_var sera certainement utilisé. , et vous pouvez utiliser

checkdnsrr pour un jugement plus approfondi.


$email_arr = array("lastchiliarch@163.com", "1@a.com");
  foreach($email_arr as $email) {
    if (filter_var($email) === false) {
      echo "invalid email: $email \n";
      continue;
    }
 
    if(checkdnsrr(array_pop(explode("@",$email)),"MX") === false) {
      echo "invalid email: $email \n";
      continue;
    }
  }

Sortie :


invalid email: 1@a.com

Mais il convient de noter que puisqu'il s'agit juste un enregistrement MX de vérification, on peut donc seulement juger que 163.com existe, mais il ne peut pas prouver que l'utilisateur lastchiliarch existe.

Si vous souhaitez déterminer plus précisément l'existence de la boîte aux lettres, vous pouvez uniquement vous connecter au serveur SMTP pour la vérifier.

Introduction de la vérification des e-mails. PHP a sa propre méthode pour vérifier si l'e-mail, l'URL et l'IP sont légaux. Voici une introduction :

L'essentiel est d'utiliser le filter_var. fonction.

Syntaxe
filter_var(variable, filtre, options)
variable Obligatoire. Spécifie les variables à filtrer.
filtre en option. Spécifie l'ID du filtre à utiliser.
options spécifie un tableau contenant des indicateurs/options. Vérifiez les indicateurs et options possibles pour chaque filtre.

Filtres PHP

Exemple n°1 Un exemple de filter_var()


<?php
var_dump(filter_var(&#39;bob@example.com&#39;, FILTER_VALIDATE_EMAIL));
var_dump(filter_var(&#39;http://example.com&#39;, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
?>

La routine ci-dessus affichera :


string(15) "bob@example.com"
bool(false)

Recommandations associées :

Code php pour vérifier si un nombre est impair ou pair

Code php pour vérifier si un fichier ou un répertoire existe

Bases et exemples simples d'expressions régulières PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn