Foros del Web » Programando para Internet » PHP »

ayuda!

Estas en el tema de ayuda! en el foro de PHP en Foros del Web. Hola soy nueva en foros del web buscando por aqui me encontre esta funcion para validar email: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original /**  * ...
  #1 (permalink)  
Antiguo 08/02/2011, 11:10
 
Fecha de Ingreso: febrero-2011
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
ayuda!

Hola soy nueva en foros del web buscando por aqui me encontre esta funcion para validar email:
Código PHP:
Ver original
  1. /**
  2.  * Validar E-mail
  3.  *
  4.  * @param  string  $text  Cadena
  5.  * @param  boolean $multi Emails multiples?
  6.  * @param  boolean $check Emplear checkdnsrr()?
  7.  * @return boolean
  8.  */
  9. function is_email($text, $multi = FALSE, $check = FALSE)
  10. {
  11.     static $expr = '/^([\w\+\-:]+)(\.[\w\+\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i';
  12.     $text = preg_split('/[,;\|]+/', (string) $text);
  13.  
  14.     if ( ! $multi && (sizeof($text) > 1)) return FALSE;
  15.     elseif (empty($text)) return FALSE;
  16.  
  17.     foreach ($text as $value)
  18.     {
  19.         if ( ! preg_match($expr, $value)) return FALSE;
  20.         elseif ($check === TRUE && ! checkdnsrr(substr($value, strpos($value, '@') +1), 'MX')) return FALSE;
  21.     }
  22.     return TRUE;
  23. }

como podria utlizar esta funcion para validar varios email

e probado haciendo esto:
Código PHP:
Ver original
  1.  
  2. if(is_email($email,true,true)){
  3. echo"valido";
  4. }else{
  5. echo"no valido";
  6. }

pero siempre me da no valido aunque las direcciones esten buenas.

ayuda plis.
  #2 (permalink)  
Antiguo 08/02/2011, 11:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ayuda!

yo conozco dicha función, la escribí hace tiempo... y el detalle para que funcione con arrays no está implementado en dicha versión...

así que tendrás que usar algo así:
Código PHP:
echo is_email('[email protected];[email protected];etc'truetrue); 
o bien, corregir dicha función para que te acepte arreglos:
Código PHP:
// MAL
$text preg_split('/[,;\|]+/', (string) $text); 

// BIEN
$text = ! is_array($text)? preg_split('/[,;\|]+/', (string) $text): (array) $text
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/02/2011, 11:23
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: ayuda!

Hola soy el dios creador de funciones................

algo muy simple es validar los mails antes de que se ingresen con javascript.
Código Javascript:
Ver original
  1. <script>
  2. function validarEmail(mail) {
  3.     var Found = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/.test(email);
  4.     if(Found){
  5.         return (true);
  6.     }else{
  7.         alert(email + ':  no es un email valido, por favor intente otra vez.');
  8.         return (false);
  9.     }
  10. }
  11. </script>

si no pasa como parametro a esa funcion un array con todos los mails y listo,y los vas validando..... te parece???
  #4 (permalink)  
Antiguo 08/02/2011, 11:28
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: ayuda!

Primero te digo, tu función esta demasiado enredada, a la mejor estas intentando implementar en PHP la forma en que lo haces en otros lenguaje. Recuerda que en PHP no necesitas dar tanta vuelta.

Visita este tema, tal vez te ayude.

http://www.forosdelweb.com/f18/como-validar-array-que-contenga-varios-email-883854/
  #5 (permalink)  
Antiguo 08/02/2011, 11:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: ayuda!

Muy cierto lo copie de una aportación que tu hiciste lo probé y me funciono muy bien te lo agradezco mucho pateketrueke mil gracias saluditos.
  #6 (permalink)  
Antiguo 08/02/2011, 11:36
 
Fecha de Ingreso: febrero-2011
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: ayuda!

Hola primero que nada gracias por responder, vi el link que tu pusiste y tengo una duda

la función que aparece alli da como resultado bool(true) o bool(false) dependiendo si el email es correcto como comparas esos valores de bool() ejemplo

en if() para true y el else para false
  #7 (permalink)  
Antiguo 08/02/2011, 12:26
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: ayuda!

Mmm.. pensadolo bien, si que sale lo mismo.


Esta es la función que yo uso, tanto para validar múltiples correos, como para validar uno solo.

Código PHP:
Ver original
  1. <?php
  2. function validar_correo($email){
  3.    
  4.     /* Funcione anónima para verificar que la cadena sea correcta */
  5.     $validar = function ($string){
  6.         $valido = preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $string);
  7.         return $valido;
  8.     };
  9.    
  10.     /* Revisamos si estamos recibiendo una matriz */
  11.     if(is_array($email)){
  12.         $validados = array();      
  13.         foreach ($email as $string){
  14.             $validados[] = $validar($string);
  15.         }
  16.         return $validados; 
  17.     }
  18.    
  19.     /* Si solo es una cadena lo validamos y retornamos */  
  20.     else{
  21.         return $validar($email);
  22.     }
  23.    
  24. }
  25.  
  26. // Varios correos
  27. $valido = validar_correo($emails);
  28.  
  29. if($valido[1]){
  30.     print ($emails[1] . ' es valido');
  31. }
  32.  
  33. // Un solo correo
  34.  
  35. if(validar_correo($email)){
  36.     print $email . ' es valido';
  37. }
  38.  
  39.  
  40. ?>

Aunque la función de Patriarka es bastante valida si se esta usando en un formulario.

Última edición por jonasanx; 08/02/2011 a las 12:40

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.