Foros del Web » Programando para Internet » PHP »

Ayuda con un Formulario en PHP

Estas en el tema de Ayuda con un Formulario en PHP en el foro de PHP en Foros del Web. Hola compañeros: Tengo el siguiente problema, quiero hacer un formulario para mi página de Internet y poder mandar ese formulario a una cuenta de correo ...
  #1 (permalink)  
Antiguo 21/11/2005, 19:23
 
Fecha de Ingreso: noviembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Exclamación Ayuda con un Formulario en PHP

Hola compañeros:

Tengo el siguiente problema, quiero hacer un formulario para mi página de Internet y poder mandar ese formulario a una cuenta de correo electronico, me pasaron el siguiente codigo en PHP:

<?
require("mailcfg.inc.php");
if(isset($texto)) {
$fecha = strftime("%d-%m-%Y a las %H:%M", time());
$cabeceras = "Reply-To:$mail\nFrom:$nick <$mail>";
$nick = stripslashes($nick);
$mail = stripslashes($mail);
$asunto = stripslashes($asunto);
$texto = stripslashes($texto);
mail($destinatario,$asunto,"$texto",$cabeceras);
echo "<div class=\"nota\">\n";
echo " <div class=\"txt\">$respuesta</div>\n";
echo "</div>\n";
}
else {
echo " <form action=\"mail.php\" method=\"post\">\n";
echo " <span class=\"txt\">Nombre o nick:</span><br />\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"nick\" /><br /><br />\n";
echo " <span class=\"txt\">E-mail:</span><br />\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"mail\" /><br /><br />\n";
echo " <span class=\"txt\">Asunto:</span><br />\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"asunto\" /><br /><br />\n";
echo " <span class=\"txt\">Texto del mensaje:</span><br />\n";
echo " <textarea cols=\"40\" rows=\"10\" class=\"campo\" name=\"texto\"></textarea><br /><br />\n";
echo " <input type=\"submit\" class=\"boton\" value=\"Enviar e-mail\" />\n";
echo "</form>\n";
}
?>

Y necesita otro archivo de configuración que esta en PHP llamado mailcfg.inc.php que solo tiene estos valores:

<?
// Variables a configurar

$destinatario = "[email protected]";
$respuesta = "Tu correo ha sido enviado correctamente, gracias.";
?>

Estos 2 codigos funcionan bien, el problema es que al mandar el formulario solo sale el mensaje de respuesta "Tu correo ha sido enviado correctamente, gracias." y yo lo que quiero es que se vaya a una pagina htm de envio exitoso, y despues de unos segundos me mande a mi pagina principal automaticamente.

No tengo conocimientos de PHP, solo de html, asi que agradeceré de antemano para que me ayuden a decirme que necesito modificar de ambos codigos para poder redireccionar la pagina cuando sea enviado el formulario.
  #2 (permalink)  
Antiguo 22/11/2005, 05:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Con:

Código PHP:
header ("Location: paginamensaje.php");
exit; 
redireccionarías a donde gustes (elimina todo el HTML que ahí tienes con tus echo que actualmente muestran cierto mensaje).

Y .. si quieres que ese muestramensaje.php a cierto tiempo redireccione a otro sitio usa una cabecera HTML tipo <META ....> de refresh (revisa un manual de HTML por si no lo conoces).

Un saludo,
  #3 (permalink)  
Antiguo 22/11/2005, 09:36
 
Fecha de Ingreso: noviembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Gracias Cluster;

Osea que lo unico que tengo que hacer es quitar estas instrucciones:

echo "<div class=\"nota\">\n";
echo " <div class=\"txt\">$respuesta</div>\n";
echo "</div>\n";

Y en lugar de ello, poder lo que tu dice: header ("Location: paginamensaje.php");
exit;

Puede ser una pagina .htm en lugar de una .php, por que a donde lo quiero mandar es una página .htm
  #4 (permalink)  
Antiguo 22/11/2005, 11:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, ...

Un saludo,
  #5 (permalink)  
Antiguo 22/11/2005, 13:59
 
Fecha de Ingreso: noviembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Gracias... haré la prueba por la tarde...
  #6 (permalink)  
Antiguo 22/11/2005, 22:38
 
Fecha de Ingreso: noviembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Hola Cluster;

Acabo de hacer la prueba asi como me dijiste, quite los echo y puse lo que tu me mandaste, header ("Location: index.htm");
exit;

Para que despues de que se mande el mail me redireccione a la página principal de mi sitio, pero me marco este error:

Warning: Cannot modify header information - headers already sent by (output started at /home/mazvan/public_html/mail.php:9) in /home/mazvan/public_html/mail.php on line 32

Y en ese linea (32) es donde esta la instruccion que me dijiste: header ("Location: index.htm");

No se que hacer....:(

Espero tu ayuda
  #7 (permalink)  
Antiguo 23/11/2005, 09:08
 
Fecha de Ingreso: noviembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Hola Cluster;

Aqui de nuevo, no he podido corregir ese error que me marco el navegador, el formulario si se van al mail, pero me sale ese error y ahi se queda, no me manda a la página principal de mi web, que es index.htm.

Te agradeceré que tengo que hacer.

Ya probé lo que me mencionaste de los META TAG con el refresh, pero el problema es que tienes que ponerle un tiempo, y pues no control lo que las personas puedan tardar en enviar ese formulario, por que automaticamente me manda al index.htm sin esperar a que termine de llenar mi formulario.

Lo unico que necesito es que despues de que le de enviar el formulario, me mande a mi página index.htm.

De antemano te agradezco tu ayuda.
  #8 (permalink)  
Antiguo 23/11/2005, 09:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Warning: Cannot modify header information - headers already sent by (output started at /home/mazvan/public_html/mail.php:9) in /home/mazvan/public_html/mail.php on line 32
El error te dice que tienes algo de salida en la línea 9 de mail.php .. Puede ser un espacio antes de <? .. o un salto de línena antes de <? .. o tienes algo de HTML por ahí por médio, cosa que NO corresponda para el fin de ese script: procesar y redireccionar.

Cita:
Ya probé lo que me mencionaste de los META TAG con el refresh, pero el problema es que tienes que ponerle un tiempo, y pues no control lo que las personas puedan tardar en enviar ese formulario, por que automaticamente me manda al index.htm sin esperar a que termine de llenar mi formulario.
No no .. ese tiempo no es en tu formulario donde debes indicarlo (para la cabecera <META ....>) sino en la página que redireccionas que contiene tu mensaje ...

Un saludo,

Última edición por Cluster; 23/11/2005 a las 09:56
  #9 (permalink)  
Antiguo 23/11/2005, 10:46
 
Fecha de Ingreso: noviembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
De acuerdo

Cita:
Iniciado por Cluster
El error te dice que tienes algo de salida en la línea 9 de mail.php .. Puede ser un espacio antes de <? .. o un salto de línena antes de <? .. o tienes algo de HTML por ahí por médio, cosa que NO corresponda para el fin de ese script: procesar y redireccionar.



No no .. ese tiempo no es en tu formulario donde debes indicarlo (para la cabecera <META ....>) sino en la página que redireccionas que contiene tu mensaje ...

Un saludo,
Ok, tienes toda la razón... en la linea 9 tengo este script:
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>

Que es un layer en html, que lo use para meter ahi todo el codigo PHP, para poder manipular el formulario, es decir poder acomodarlo centrado en la pantalla, por que de lo contrario salia en la parte superior de la pantalla y alineado a la izquierda.

Muchas gracias de nuevo Cluster...!!!
  #10 (permalink)  
Antiguo 23/11/2005, 10:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok ..

Debes pensar lo siguiente:

Tu script PHP hace "dos procesos" en uno sólo script
1) Aplica lógica y si no se cumple .. redirecciona a otro script/página.
2) Pero también .. si cumple otra condición, se ha de generar una página HTML completa (con todo lo que necesites HTML/javascript .. etc).

Por ende .. ese código Javascript y definición en general de página HTML (con sus correspondientes <html> ... <head> ... etc </head><body> </body> .. </html>) puedes usarlos .. pero -SÓLO- en el "caso" que corresponda:


Código PHP:
<?
require("mailcfg.inc.php");
if(isset(
$_POST['texto'])) {
$fecha strftime("%d-%m-%Y a las %H:%M"time());
$cabeceras "Reply-To:$mail\nFrom:$nick <$mail>";
$nick stripslashes($_POST['nick']); // usa los Arrays superglobales!!! (para toda variable externa)
$mail stripslashes($mail);
$asunto stripslashes($asunto);
$texto stripslashes($texto);
  if (
mail($destinatario,$asunto,"$texto",$cabeceras)){
     
header ("Location: exito.php");
     exit;
   } else {
       
header ("Location: error.php");
      exit;
   }
}
else {
?>
<html>
<head>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>
<body>
<?
echo " <form action=\"mail.php\" method=\"post\">\n";
echo 
" <span class=\"txt\">Nombre o nick:</span><br />\n";
echo 
" <input type=\"text\" size=\"30\" class=\"campo\" name=\"nick\" /><br /><br />\n";
echo 
" <span class=\"txt\">E-mail:</span><br />\n";
echo 
" <input type=\"text\" size=\"30\" class=\"campo\" name=\"mail\" /><br /><br />\n";
echo 
" <span class=\"txt\">Asunto:</span><br />\n";
echo 
" <input type=\"text\" size=\"30\" class=\"campo\" name=\"asunto\" /><br /><br />\n";
echo 
" <span class=\"txt\">Texto del mensaje:</span><br />\n";
echo 
" <textarea cols=\"40\" rows=\"10\" class=\"campo\" name=\"texto\"></textarea><br /><br />\n";
echo 
" <input type=\"submit\" class=\"boton\" value=\"Enviar e-mail\" />\n";
echo 
"</form>\n";
?>
</body>
<html>
<?
}
?>
Y .. fijate en la estructura que usé ahora para incrustrar código HTML/javascript .. simplemente "corté" PHP <? .. donde no lo uso y lo "abro" donde lo necesito ?> .. así podrás ver en tu editor HTML visual favorito como te queda ese HTML.

(podrías poner ahí mismo tu formulario HTML sin los "echo" por cada línea )

Un saludo,
  #11 (permalink)  
Antiguo 23/11/2005, 12:45
 
Fecha de Ingreso: noviembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
De acuerdo Gracias

De nuevo muchas gracias Cluster.

Lo probaré por la tarde.

Saludos
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 11:53.