Foros del Web » Programando para Internet » PHP »

como valido un email

Estas en el tema de como valido un email en el foro de PHP en Foros del Web. Hola a todos tengo un pequeño problema, tengo un formulario con el cual ingreso información a my BD el problema radica cuando el usuario llena ...
  #1 (permalink)  
Antiguo 22/03/2007, 16:57
Avatar de franklin85  
Fecha de Ingreso: octubre-2006
Mensajes: 103
Antigüedad: 18 años
Puntos: 0
como valido un email

Hola a todos tengo un pequeño problema, tengo un formulario con el cual ingreso información a my BD el problema radica cuando el usuario llena sus datos aveces no ingresa correctamente su email.
Ejemplo: para el campo email:
[email protected] ==> hghf@.
le pasao el scripts con el cual valido los campos de my formulario:
Código:
<SCRIPT language="javascript">
<!--

function CambiaPag(pagina)
{
        if ( pagina != "" )
        {       window.top.location.href=pagina;
        }
}


function validar()
{
  if (document.m.nombres.value=="")
	{
	 alert('Ingrese un nombre valido');
	 document.m.nombres.focus();
	 return ;
	}
  else
    {
     if (!isNaN(document.m.nombres.value))
      {
      alert("Solo se admiten letras");
      document.m.nombres.value="";
      document.m.nombres.focus();
      return;
      }
    }

  if (document.m.apellidop.value=="")
    {
     alert('Ingrese su apellido paterno correctamente');
     document.m.apellidop.focus();
     return ;
    }
  else
    {
      if (!isNaN(document.m.apellidop.value))
       {
        alert("Solo se admiten letras");
        document.m.apellidop.value="";
        document.m.apellidop.focus();
        return;
       }
    }

  if (document.m.apellidom.value=="")
	{
	 alert('Ingrese su apellido materno correctamente');
	 document.m.apellidom.focus();
	 return ;
	}
  else
    {
     if (!isNaN(document.m.apellidom.value))
      {
       alert("Solo se admiten letras");
       document.m.apellidom.value="";
       document.m.apellidom.focus();
       return;
      }
    }

	if (document.m.dia.selectedIndex==0){
		alert("Debe seleccionar un dia")
		document.m.dia.focus()
		return 0;
	  }
	if (document.m.mes.selectedIndex==0){
		alert("Debe seleccionar un mes")
		document.m.mes.focus()
		return 0;
	  }
	if (document.m.ano.selectedIndex==0){
		alert("Debe seleccionar un año")
		document.m.ano.focus()
		return 0;
	  }

	if (document.m.estadocivil.selectedIndex==0){
		alert("Debe seleccionar su estado civil")
		document.m.estadocivil.focus()
		return 0;
	  }

  if (document.m.dni.value=="")
	{
     alert('Ingrese su numero de documento correctamente');
	 document.m.dni.focus();
	 return ;
	}
  else
    {
     if (isNaN(document.m.dni.value))
      {
       alert("Solo se admiten numeros");
       document.m.dni.value="";
       document.m.dni.focus();
       return;
      }
    }

  if (document.m.domicilio.value=="")
	{
	 alert('Ingrese su domicilio correctamente');
	 document.m.domicilio.focus();
	 return ;
	}

  if (document.m.referencia.value=="")
	{
	 alert('Ingrese una referencia de su domicilio');
	 document.m.referencia.focus();
	 return ;
	}

	if (document.m.distrito.selectedIndex==0){
		alert("Debe seleccionar su Distrito")
		document.m.distrito.focus()
		return 0;
	  }

   if (document.m.telefono.value=="")
   	{
   	 alert('Ingresar telefono');
   	 document.m.telefono.focus();
   	 return ;
	}
   else
    {
     if (isNaN(document.m.telefono.value))
      {
       alert("Solo se admiten numeros");
       document.m.telefono.value="";
       document.m.telefono.focus();
       return;
      }
    }

   if (comprobar_email(document.m.email.value)==0){
   		alert("Ingrese su email correctamente");
        document.m.email.focus();
   		return;
       }

	if (document.m.actividad.selectedIndex==0){
		alert("Debe seleccionar su actividad")
		document.m.actividad.focus()
		return 0;
	  }
     document.m.submit();
 }


function comprobar_email($email){
    $mail_correcto = 0;
    alert("Ingrese su email correctamente")
    //compruebo unas cosas primeras
    if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
       if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
          //miro si tiene caracter .
          if (substr_count($email,".")>= 1){
             //obtengo la terminacion del dominio
             $term_dom = substr(strrchr ($email, '.'),1);
             //compruebo que la terminación del dominio sea correcta
             if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
                //compruebo que lo de antes del dominio sea correcto
                $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
                $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
                if ($caracter_ult != "@" && $caracter_ult != "."){
                   $mail_correcto = 1;
                }
             }
          }
       }
    }
    if ($mail_correcto)
       return 1;
    else
       return 0;
}
//-->
</script>
tambien les paso el codygo de my formulario.php
Código PHP:
<form name="m" method="POST" action="procesa.php">
Nombres <input type="text" name="nombres" value="">
Apellido Paterno <input type "text" name="apellidop" value="">
Apellido Materno <input type "text" name="apellidom" value="">
Sexo
    Masculino 
<input type="RADIO" name="sexo" value="masculino" checked>
    
Femenino <input type ="RADIO" name="sexo" value="femenino">

Fecha de Nacimiento
<select name="dia">
<
option value="" selected>D&iacute;a</option>
<
option value="1">1</option>
<
option value="2">2</option>
<
option value="3">3</option>
<
option value="4">4</option>
<
option value="5">5</option>
</
select>
<
select name="mes">
<
option value="" selected>Mes</option>
<
option value="enero">Enero</option>
<
option value="febrero">Febrero</option>
<
option value="marzo">Marzo</option>
<
option value="abril">Abril</option>
<
option value="mayo">Mayo</option>
</
select>
<
select name="ano">
<
option value="" selected>A&ntilde;o</option>
<
option value="1940">1940</option>
<
option value="1941">1941</option>
<
option value="1942">1942</option>
<
option value="1943">1943</option>
<
option value="1944">1944</option>
</
select>

Estado Civil
<select name="estadocivil">
<
option value="" selected>Estado Civil</option>
<
option value="Soltero">Soltero (a)</option>
<
option value="Casado">Casado (a)</option>
<
option value="Viudo">Viudo (a)</option>
<
option value="Divorciado">Divorciado (a)</option>
</
select>

N&uacute;mero de DNI <input type="text" name="dni" value="">
Domicilio <input type "text" name="domicilio" value="">
Referencia <input type "text" name="referencia" value="">
Distrito
    
<select name="distrito">
    <
option value="" selected>Distrito</option>
    <
option value="Ate Vitarte">Ate Vitarte</option>
    <
option value="Breña">Bre&ntilde;a</option>
    <
option value="Cercado de Lima">Cercado de Lima</option>
    <
option value="La Molina">La Molina</option>
    <
option value="Lurin">Lurin</option>
    <
option value="Miraflores">Miraflores</option>
    <
option value="San Borja">San Borja</option>
    <
option value="San Isidro">San Isidro</option>

Tel&eacute;fono <input type "text" name="telefono" value="">
Celular <input type "text" name="celular" value="">
E-mail <input type "text" name="email" value="">

Actividad
<select name="actividad">
<
option value="" selected>Actividad</option>
<
option value="Independiente">Independiente</option>
<
option value="Dependiente">Dependiente</option>
<
option value="Estudiante">Estudiante</option>
<
option value="Sin actividad">Sin activad</option>
</
select>

<
input type="button" value="Enviar" onClick="validar()" name="button">
<
input type="reset" value="Cancelar" name="reset">
</
form
El problema es que cuando ejecuto este codigo me vota error en la siguiente linea
Código PHP:
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){ 
y me sale un mensaje en el cual me dice que se esperaba un objeto.
De ante mano les agradesco su ayuda.
  #2 (permalink)  
Antiguo 22/03/2007, 17:21
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 9 meses
Puntos: 4
Re: como valido un email

Hola franklin85, el problema es con javascript, este es la seccion de PHP, pero bueno, aqui te pongo una funcion para validar una direccion de correo electronico
Código HTML:
function val_mail(valor){
    if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor))){
          alert('mail incorrecto'); 
      }else{
         alert('mail Bien'); 
    }
}
Recomendación:Pregunta siempre en el lugar adecuado, asi obtendras mejores resultados en tus respuestas.

Saludos
__________________

  #3 (permalink)  
Antiguo 22/03/2007, 17:50
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: como valido un email

Bueno , tambien tienes que poner proteccion por el lado del servidor, ya que si un usuario con malas intenciones, envia el formulario desde otro html o via get en la URL, puede insertar el correo que quiera, etc ...

En este tips, la ultima Funccion 7 is_email($email) , permite comprobar si un string contiene un correo bien formado ( simbolos permitdos y el @)

Saludos
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 14:06.