Foros del Web » Programando para Internet » PHP »

Formulario que no valida el email

Estas en el tema de Formulario que no valida el email en el foro de PHP en Foros del Web. Hola foreros. Resulta que tengo el siguiente código para enviar un formulario de contacto, el cual funciona bien, excepto que no valida correctamente la dirección ...
  #1 (permalink)  
Antiguo 16/09/2006, 09:34
Avatar de Nemo1  
Fecha de Ingreso: marzo-2005
Ubicación: Jerez de la Ftra. (Cádiz)
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
Pregunta Formulario que no valida el email

Hola foreros.

Resulta que tengo el siguiente código para enviar un formulario de contacto, el cual funciona bien, excepto que no valida correctamente la dirección de email. Verifica que los campos están vacíos, pero si introduzco cualquier cosa en el campo email, lo envía, por lo que no verifica correctamente si está bien escrita la dirección de email.

Me he llevado horas revisando los post del foro y he intentado implantar el código de verificación que existe en las Faqs, pero me da error. Por lo que acudo a vosotros para ver si podéis darme alguna solución, o decirme como poder implantar la verificación de e-mail que existe en las Faqs, en mi código.

El código que utilizo es el siguiente (disculpad si es algo extenso):
Código PHP:
<? if ($HTTP_GET_VARS["accion"] == "") { ?>
<--formulario-->
<table width='50%' border='0' align='center'>
  <tr>
    <td><div id="formulario"> 
<form action="index.php?seccion=contactar&amp;accion=enviar" method="post">
<input type="hidden" name="e_destinatario" id="mail2" /> 
<fieldset>
<legend>Formulario de contacto</legend>
<img src="images/netmailbot.gif" alt="netmailbot" height="154" width="205" /> 
<br /><p><label for="nombre">Tu Nombre</label> 
<input type="text" name="n_remitente" id="nombre" /></p>
<p><label for="mail">Tu eMail</label> 
<input type="text" name="e_remitente" id="mail" /></p>
<p>
  <label for="nombre2">Asunto del mensaje </label> 
<input type="text" name="m_asunto" id="nombre2" /></p> 
<p>
  <label for="msg">Mensaje</label> 
<textarea name="e_mensaje" id="msg" cols="20" rows="5"></textarea></p> 
<p><input type="submit" value="Enviar" />
<input type="reset" value="Restablecer" /></p>
</fieldset> 
</form> 
</div></td>
  </tr>
</table></div>
<!-- envío del formulario y acuse de envío o información de errores --> 
<? 


elseif (
$HTTP_GET_VARS["accion"] == "enviar") { 
// recojo las variables que vienen desde el formulario 
$m_asunto $HTTP_POST_VARS["m_asunto"]; 
$e_mensaje $HTTP_POST_VARS["e_mensaje"]; 
$n_remitente $HTTP_POST_VARS["n_remitente"]; 
$e_remitente $HTTP_POST_VARS["e_remitente"]; 
// si los campos no están vacíos 
  
if ($m_asunto != "" && $e_mensaje != "" && $n_remitente != "" && $e_remitente != "") { 

//indica la url de tu sitio 
    
$url "direccion de mi sitio";
//indica el nombre de tu sitio 
     
$nombre_del_sitio "Misitio";
//indica el nombre y el e-mail donde será enviado el formulario
     
$n_destinatario  "Mensaje desde tu web";
     
$e_destinatario "correo donde se envía el mensaje";     
//indica el asunto del mensaje 
     
$asunto "$m_asunto"
//redacta el mensaje 
     
$mensaje "Hola " $n_destinatario ".<br /><br />"
     
$mensaje .= "El usuario con nombre <strong>" .$n_remitente "</strong> ha estado en en tu web y ha querido enviarte este mensaje:<br /><br />";
     
$mensaje .= "<pre>$e_mensaje</pre>";
     
$mensaje .= "Los datos de este usuario son:<br /><br />- Nombre: <strong>" .$n_remitente ."</strong><br />- E-mail: <strong>".$e_remitente ."</strong><br />";
     
$mensaje .= "- Navegador usado: <strong>".$HTTP_USER_AGENT."</strong><br />";
     
$mensaje .= "- IP: <strong>".$REMOTE_ADDR."</strong><br /><br />";
     
$mensaje .= "==================================================<br /><br />";
     
$mensaje .= "Mensaje enviado desde el formulario de contacto de "$nombre_del_sitio "<br />";
     
$mensaje .= "<a href='" $url "'>" $url "</a><br /><br />";

//indica que el mail se envía en formato HTML 

     
$encabezado "From:".$e_remitente."\n"
     
$encabezado .= "X-Mailer:PHP/".phpversion()."\n"
     
$encabezado .= "Mime-Version: 1.0\n"
     
$encabezado .= "Content-Type: text/html"

//envía el mensaje 

     
mail($e_destinatario,$asunto,$mensaje,$encabezado); 

//Informa al usuario que se ha enviado el mensaje 

    
echo "Formulario de contacto enviado correctamente"

     } 
//si existen campos vacíos, envía un mensaje de error 
     
else {
     echo 
"Se ha producido un error al enviar el formulario"
     } 

?>
Quedo en espera de vuestras respuestas, y doy gracias por vuestra infinita paciencia.
  #2 (permalink)  
Antiguo 16/09/2006, 10:21
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 18 años, 6 meses
Puntos: 4
a la mejor te puede servir este articulo..

http://www.desarrolloweb.com/articulos/990.php


solo puse en google "php validar mail" y el primer resultado...
__________________
Saludos
FT.
www.fernando.com.mx
  #3 (permalink)  
Antiguo 16/09/2006, 11:18
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 3 meses
Puntos: 33
Aver si te sirve esto man

Código HTML:
/*------------------------------------SCRIPT QUE COMPRUEBA CORREO-----------------------------------------------*/
 if ((registro.correo1.value.indexOf ('@', 0) == -1)||(registro.correo1.value.length < 5)) {
 alert("Escriba una dirección de correo válida.");
 registro.correo1.focus();
 return (false);
                        }
    if (correo1 != correo2)  {
 alert("Las Direcciones de Correo Introducidas son Diferentes...\nPor Favor Corrija los Campos para Continuar") ;
 registro.correo1.focus();
 return (false);
        } 
  #4 (permalink)  
Antiguo 17/09/2006, 01:54
Avatar de Nemo1  
Fecha de Ingreso: marzo-2005
Ubicación: Jerez de la Ftra. (Cádiz)
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
Muchísimas gracias fer10 y omegafunky, por vuestras rápidas respuestas.
He probado ambas respuestas y he obtenido un resultado óptimo.
Agradezco profundamente el tiempo que habéis dedicado a ayudarme.
Un saludo.
  #5 (permalink)  
Antiguo 17/09/2006, 03:48
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por Nemo1 Ver Mensaje
Me he llevado horas revisando los post del foro y he intentado implantar el código de verificación que existe en las Faqs, pero me da error.
"Te da error"... pero ¿qué error?, ¿dónde?. Intentaste con las FAQ pero ¿de qué forma?, en el código que dejas no se vé algúna de las dos funciones/validaciones que hay en las FAQ.

Hay que ser claros para que se te pueda ayudar, en caso de existir algún error en el código de las FAQ habria que corregirlo.

omegafunky: Este foro es de PHP, no es menospreciar tu aporte pero se agradecería mantener los temas separados, al menos indicando que el código que dejas se trata de JavaScript.


Si bien se solucionó el asunto (no me queda claro de qué forma), añado un par de comentarios:
- Hay que considerar --si esa fue la solución-- que una validación JavaScript no es segura.
- Igual sugiero leer la FAQ #3: Que diferencias hay entre usar para pasar variables de un script a otro: $variable_nombre, $HTTP_xxx_VARS['variable_nombre'], $_XXX['variable_nombre'].

[Edito]
Agrego:
- Preferible usar la función empty() para comprobar el estado de la variable
- Preferible hacer la verificación antes de la reasignación (puede arrojarte errores --¿"asignar nada"? :-/)

Saluton!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 17/09/2006, 12:51
Avatar de Nemo1  
Fecha de Ingreso: marzo-2005
Ubicación: Jerez de la Ftra. (Cádiz)
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
Hola jam1138.

Veamos... Si dije que ambos usuarios me habían ayudado mucho, es porqué con sus respuestas me dieron la posibilidad de investigar un poco más en que es más conveniente, si el método de validación en php o javascript, y el hecho de molestarse en reponder a mi posts, ya es de agradecer.

En el código que posteé del formulario que utilizo, no puse el código empleado en las FAQs, ya que como me daba error, pensé que era mejor dejarlo tal y como estaba, por si algunos veían donde podía estar el problema y ayudarme en poderlo solucionar o donde insertar el código de verificación.

En cuanto al código de las FAQs que tomé prestado, era el #50 (siento no poderla enlazar, pero el sitema del foro no me deja), y he comprobado que el error que me daba era que no lo ubicaba bien, y que no había cambiado la variable $mail por la que yo utilizaba en mi formulario $e_remitente.

Al final a base de hacer pruebas, me he decidido por la verificación en php (la del código del faq #50).

Y por cierto te doy las gracias por el tiempo que has dedicado en responderme, y por tu aportación.

Por mi parte doy por cerrado el tema, y doy las gracias una vez más a este foro, por permitirme formar parte del mismo, y por la buena labor que está llevando a cabo entre la comunidad de webmasters.

Un saludo.
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 20:03.