
Creé un formulario de contacto en php más un script de campos obligatorios, siguiendo cuando tutorial encontré, y todo funciona bien. PERO, al poner enviar, me llegan dos correos: uno llega correctamente con la información de los campos, mientras que el otro llega con todos los campos en blanco. De esta forma:
Correo 1:
Este mensaje fue enviado por: Nombre Blibli
Su e-mail es: [email protected]
Comentario: el comentario blablabla
Enviado el 08/03/2010
Correo 2:
Este mensaje fue enviado por
Su e-mail es:
Comentario:
Enviado el 08/03/2010
Y claro, el formulario es para la página de un cliente, y no es la idea dejarle la cosa funcionando de manera que se le dupliquen los correos en su bandeja.
Aquí pongo los códigos y de qué forma tengo estructurado el asunto.
El script para los campos obligatorios, colocado entre <head> y </head> de la página "formulario.html":
Código HTML :
<script> function validar(form) { if(form.nombre.value==""){ alert("Por favor indique su nombre"); form.nombre.focus(); return false; } if(form.mail.value==""){ alert("Por favor indique su dirección de correo electrónico"); form.mail.focus(); return false; } } </script>
El formulario en el <body> de la página "formulario.html", estructurado dentro de una tabla:
Código HTML :
<table width="385" border="0" cellpadding="0" cellspacing="0" bgcolor="#666666"> <form id="form2" name="form2" method="post" action="enviado.php"> <tr> <td width="140" height="30" align="left" scope="col"><span class="style18">NOMBRE</span></td> <td width="250" height="30" align="left" scope="col"><span class="style17"> <label> <input name="nombre" type="text" id="nombre" size="30" /> </label> </span></td> </tr> <tr> <td width="140" height="30" align="left" scope="row"><span class="style18">MAIL</span></td> <td width="250" height="30" align="left"><span class="style17"> <label> <input name="mail" type="text" id="mail" size="30" /> </label> </span></td> </tr> <tr> <td height="180" colspan="2" align="left" scope="row"><span class="style17"><span class="style18">COMENTARIO</span><br /> <label> <textarea name="comentario" id="comentario" cols="40" rows="6"></textarea> </label> </span></td> </tr> <tr> <td height="30" colspan="2" align="left" scope="row"><span class="style17"> <label> <input type="submit" name="Enviar" id="Enviar" value="Enviar" onClick="return validar(this.form)"/> </label> </span></td> </tr> </form> </table>
Y el código php de la página "enviado.php", también ubicado dentro del <head>:
Código PHP :
<?php $nombre = $_POST['nombre']; $mail = $_POST['mail']; $header = 'From: ' . $mail . " \r\n"; $header .= "X-Mailer: PHP/" . phpversion() . " \r\n"; $header .= "Mime-Version: 1.0 \r\n"; $header .= "Content-Type: text/plain"; $mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n"; $mensaje .= "Su e-mail es: " . $mail . " \r\n"; $mensaje .= "Comentario: " . $_POST['comentario'] . " \r\n"; $mensaje .= "Enviado el " . date('d/m/Y', time()); $para = '[email protected]'; $asunto = 'Aplicación formulario de contacto XXX'; mail($para, $asunto, utf8_decode($mensaje), $header); ?>
¿Alguna idea de cuál es el problema? ¿Será quizás el hosting?... Por ahí en forosdelweb me respondieron esto:
pateketrueke escribió:
bueno, en si.. la solución esta en colocar el script que envía el correo en otro archivo, y el formulario en uno distinto...
en el action del formulario escribes el nombre del script que envía el correo, así... solo se ejecuta dicho script al procesar el formulario...
ya que en tu caso, el script se procesaba deliberadamente... ya que no haces control del flujo en tu aplicación...
en el action del formulario escribes el nombre del script que envía el correo, así... solo se ejecuta dicho script al procesar el formulario...

ya que en tu caso, el script se procesaba deliberadamente... ya que no haces control del flujo en tu aplicación...
pero no entendí mucho

Gracias de antemano cualquier orientación, y disculpadme si es una consulta muy newbie. Soy de las que navegan hasta el cansancio en busca de respuestas, pero al día de hoy ante esto me considero derrotada.