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&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";
}
}
?>