Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/01/2012, 07:04
Avatar de repara2
repara2
 
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: saber si una direccion de mail existe

Ahí te mando un ejemplito comentado en castellano, saludos:


Código PHP:
Ver original
  1. <?php
  2. /**
  3.  */
  4. function validareMail($xEmail) {
  5.     /**
  6.      * Validez de la dirección
  7.      */
  8.     $xValid = true;
  9.     /**
  10.      * Posición de la arroba en la dirección para obtener dirección y dominio
  11.      */
  12.     $atPos = strrpos($xEmail, '@');
  13.     //Si $atPos es booleana Y es falso entonces no es email
  14.     if (is_bool($atPos) && !$atPos) {
  15.         $xValid = false;
  16.     } else {
  17.         /**
  18.          * El dominio, la parte posterior desde la posición de arroba
  19.          */
  20.         $xDomain = substr($xEmail, $atPos + 1);
  21.         /**
  22.          * Idem anterior para la dirección
  23.          */
  24.         $xAddr = substr($xEmail, 0, $atPos);
  25.         /**
  26.          * La longitud de la direccion
  27.          */
  28.         $xAddrLen = strlen($xAddr);
  29.         /**
  30.          * La longitud del dominio
  31.          */
  32.         $xDomainLen = strlen($xDomain);
  33.         //La dirección ha de ser >1 y <64
  34.         if ($xAddrLen < 1 || $xAddrLen > 64) {
  35.             $xValid = false;
  36.             //el dominio >1 y <64
  37.  
  38.         } else if ($xDomainLen < 1 || $xDomainLen > 255) {
  39.             $xValid = false;
  40.             //Validación mediante expresiones regulares, no puede contener punto al comienzo
  41.  
  42.         } else if ($xAddr[0] == '.' || $xAddr[$xAddrLen - 1] == '.') {
  43.             $xValid = false;
  44.             //No puede contener barras // o \\
  45.  
  46.         } else if (preg_match('/\\.\\./', $xAddr)) {
  47.             $xValid = false;
  48.         } else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $xDomain)) {
  49.             $xValid = false;
  50.         } else if (preg_match('/\\.\\./', $xDomain)) {
  51.             $xValid = false;
  52.         } else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $xAddr))) {
  53.             if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $xAddr))) {
  54.                 $xValid = false;
  55.             }
  56.         }
  57.         //Debe existir el dominio
  58.         if ($xValid && !(checkdnsrr($xDomain, 'MX') || checkdnsrr($xDomain, 'A'))) {
  59.             $xValid = false;
  60.         }
  61.     }
  62.     return $xValid;
  63. }
  64. /**
  65.  * Implementación
  66.  */
  67. $email = "[email protected]";
  68. if (!validareMail($email)) {
  69.     echo "Email $email es incorrecto";
  70. } else {
  71.     echo "$email es correcto";
  72. }
  73. $email = "[email protected]";
  74. if (!validareMail($email)) {
  75.     echo "<br>Email $email es incorrecto";
  76. } else {
  77.     echo "<br>$email es correcto";
  78. }
  79. ?>
__________________
Fere libenter homines, id quod volunt, credunt.