Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2007, 16:57
Avatar de franklin85
franklin85
 
Fecha de Ingreso: octubre-2006
Mensajes: 103
Antigüedad: 18 años, 4 meses
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.