Ver Mensaje Individual
  #23 (permalink)  
Antiguo 08/08/2004, 17:29
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Ese es un ¿problema? también conocido. Sería bueno que indicaras también si te da algún mensaje de error.
Yo supongo que te dará uno que te dice que la cabeceras ya fueron enviadas, etc...

Lo que pasa es que para poder utilizar funciones que envíen cabeceras como header(), setcookie() o mail() no debe haber ninguna salida previa al navegador... y tú envías al navegador todo ese HTML previo al mail().

Si no te da ningún mensaje de error, puedes "forzar" al php a mostrarlos poniendo esta línea al comienzo de tu script:
Código PHP:
error_reporting(E_ALL); 
Así podrás ver cualquier mensaje de error. Es de mucha ayuda en la etapa de programación.

En varios posts se ha hablado del tema por el que no funciona tu script. Si utilizas el buscador verás más comentarios al respecto.
También te darás cuenta, cuando consigas que funcione, que si actualizas la página después de enviar el mail, se volverá a enviar... o sea que si algún usuario malintencionado o juguetón se pone a actualizar indefinidas veces la página... te llenará el buzón de email en pocos minutos.
Lo mejor es hacer una programación lo más "limpia y eficiente" posible.
Una de las recomendaciones está en no "escribir" nada (HTML, "echo", etc) en un script que realice un proceso determinado.
Hay que tratar en la medida de lo posible de separar los procesos de la presentación.

Una posible solución (un poco "arcaica", pero limpia y eficiente) es tener en una página el form, en otro el proceso de enviar mails y que al final se haga una redirección hacia una página con el mensaje "Gracias por enviar..."

Tu script podría quedar así:
Código PHP:
<?php
error_reporting
(E_ALL);
$hora=date("H:i jS F");
$recipient='[email protected]';
$subject='Adopción';
$message " Datos del Interesado:<p> Nombre: ".$_POST['nombre']."\n Teléfono: ".$_POST['telefono']."\n E-mail:"$_POST['email']."\n
Ciudad: "
.$_POST['ciudad']."\n Me interesa adoptar a: ".$_POST['interesa']."\n Comentarios: ".$_POST['comentarios']."\n
Fecha y Hora : "
.$_POST['hora'];
$headers "From: ".$_POST['email']."
<"
.$_POST['email'].">\r\n";
if(
mail($recipient,$subject,$message,$headers)){
$mensaje_usuario "El mensaje que quieras enviarle al usuario a su email";
mail($_POST['email'],"Gracias por adoptar",$mensaje_usuario);
};
header("location: gracias.php");
?>
Y deberás tener otro script (página) llamado "gracias.php" que tendrá todo el HTML que quieras
Código PHP:
<html>
<head>
<title>Gracias por enviar su solicitud</title
><div align="center"><center>
</center></div>
</head>
<body background="fondotira.gif">
<br>
<left><br>La Solicitud fue realizada a las: <?php echo date("H:i ");?>
<p Align="left"><b><font size=4">Gracias por su interés.</b></font></p>
<p Align="left"><font size="4"><b>Su solicitud será respondida en breve.
</b></font></p>
<p Align="left"><a href="index.html"><font size="3">Regreso a la Página Principal.</font></a>
</div></p>
</body>
</html>
De esa forma supongo que funcionará correctamente. No tendrás problemas con las cabeceras ni con el botón "refresh" (actualizar).

Prueba así... y postea si hay algún error.
Luego verás que se pueden "agrupar" algunos scripts en uno sólo controlando el flujo con un "if" y alguna variable pasada por url o por formulario. Pero la idea básica es la que te puse.

saludos

Última edición por jpinedo; 08/08/2004 a las 17:35