Ver Mensaje Individual
  #11 (permalink)  
Antiguo 18/04/2013, 12:51
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Validar email(forma muy restrictiva).

ahh pero si usas joomja y la extencion es la que valida, para que quieres tu hacer una doble validacion?

por cierto la extencion desarma el mail y comprueba que exista el dns, eso es algo no recomendado (por mi al menos), ya que la velocidad de tu script depende de la velocidad de la comunicacion entre dos server, ademas suponte que un dia gmail se caiga (poco probable) ese dia, las cuentas de gmail no seran correos validos.

si quieres saber mas te dejo las funciones que usa la extencion para que las estudies por tu cuenta.

Código PHP:
Ver original
  1. function ValidateEmail()
  2.         {
  3.             // data aren't destinated to this form
  4.             //if (!count($_POST)) return true;
  5.             if (!isset($_POST[$this->GetId()])) return true;
  6.  
  7.             // email field is disabled
  8.             if (!isset($this->Fields['sender1'])) return true;
  9.  
  10.             // email field is empty and optional
  11.             if (empty($this->Fields['sender1']['Value']) && $this->Fields['sender1']['Display'] == 1) return true;
  12.  
  13.             if (!isset($this->Fields['sender1']['Value'])) return false;
  14.  
  15.             //jimport('joomla.mail.helper');
  16.             //(JMailHelper::isEmailAddress($email) == false)
  17.  
  18.             // Check the syntax
  19.             $this->Fields['sender1']['IsValid'] &= (bool)strlen(filter_var($this->Fields['sender1']['Value'], FILTER_VALIDATE_EMAIL));
  20.  
  21.             // Check mx record
  22.             $db = JFactory::getDBO();
  23.             $sql = "SELECT value FROM #__" . $GLOBALS["ext_name"] . "_settings WHERE name = 'dns';";
  24.             $db->setQuery($sql);
  25.             $method = $db->loadResult();
  26.             if ($method)
  27.             {
  28.                 $result = $this->$method();            
  29.             }
  30.         }
  31.  
  32.  
  33.         function dns_check()
  34.         {
  35.             // Check mx record
  36.             if (empty($this->Fields['sender1']['Value'])) return;
  37.  
  38.             $parts = explode("@", $this->Fields['sender1']['Value']);
  39.             $domain = array_pop($parts);
  40.             if (!empty($domain))
  41.                 $this->Fields['sender1']['IsValid'] &= checkdnsrr($domain, "MX");
  42.         }


como veras no solo revisa los dns sino que tiene una tabla en su base de datos con los correos que admite, es algo bastante complejo para la finalidad que tiene.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios