Foros del Web » Programando para Internet » PHP »

Formulario problema con Su mensaje ha sido enviado

Estas en el tema de Formulario problema con Su mensaje ha sido enviado en el foro de PHP en Foros del Web. De vuelta lidiando con el PHP! Bueno el problema que tengo es el siguiente, tengo un Formulario que cuando uno envia a traves de SUBMIT ...
  #1 (permalink)  
Antiguo 10/04/2012, 14:37
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Formulario problema con Su mensaje ha sido enviado

De vuelta lidiando con el PHP!
Bueno el problema que tengo es el siguiente, tengo un Formulario que cuando uno envia a traves de SUBMIT el mismo contenido de este, en lugar de escribir el mensaje "Su mensaje ha sido enviado" dentro del mismo FORM lo que hace es abrirme un "HTML" donde tiene ese mensaje.
Atraves de esta llamada
Código PHP:
 header('Location: thank-you.html'); 
COmo puedo hacer para que no me habra ningun "HTML" y el mensaje que yo quiero salga en el mismo FORM debajo del btn SUBMIT por ejemplo?
Gracias

Código PHP:
Ver original
  1. <?php
  2. $your_email ='[email protected]';// <<=== update to your email address
  3.  
  4. $errors = '';
  5. $name = '';
  6. $visitor_email = '';
  7. $user_message = '';
  8.  
  9. if(isset($_POST['submit']))
  10. {
  11.        
  12.         $name = $_POST['name'];
  13.         $visitor_email = $_POST['email'];
  14.         $user_message = $_POST['message'];
  15.         ///------------Do Validations-------------
  16.         if(empty($name)||empty($visitor_email))
  17.         {
  18.                 $errors .= "\n Name and Email are required fields. ";  
  19.         }
  20.         if(IsInjected($visitor_email))
  21.         {
  22.                 $errors .= "\n Bad email value!";
  23.         }
  24.         if(empty($_SESSION['6_letters_code'] ) ||
  25.           strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0)
  26.         {
  27.         //Note: the captcha code is compared case insensitively.
  28.         //if you want case sensitive match, update the check above to
  29.         // strcmp()
  30.                 $errors .= "\n The captcha code does not match!";
  31.         }
  32.        
  33.         if(empty($errors))
  34.         {
  35.                 //send the email
  36.                 $to = $your_email;
  37.                 $subject="New form submission - Success";
  38.                 $from = $your_email;
  39.                 $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
  40.                
  41.                 $body = "A user  $name submitted the contact form:\n".
  42.                 "Name: $name\n".
  43.                 "Email: $visitor_email \n".
  44.                 "Message: \n ".
  45.                 "$user_message\n".
  46.                 "IP: $ip\n";    
  47.                
  48.                 $headers = "From: $from \r\n";
  49.                 $headers .= "Reply-To: $visitor_email \r\n";
  50.                
  51.                 mail($to, $subject, $body,$headers);
  52.                
  53.                 header('Location: thank-you.html');
  54.         }
  55. }
  56.  
  57. // Function to validate against any email injection attempts
  58. function IsInjected($str)
  59. {
  60.   $injections = array('(\n+)',
  61.               '(\r+)',
  62.               '(\t+)',
  63.               '(%0A+)',
  64.               '(%0D+)',
  65.               '(%08+)',
  66.               '(%09+)'
  67.               );
  68.   $inject = join('|', $injections);
  69.   $inject = "/$inject/i";
  70.   if(preg_match($inject,$str))
  71.     {
  72.     return true;
  73.   }
  74.   else
  75.     {
  76.     return false;
  77.   }
  78. }
  79. ?>
  #2 (permalink)  
Antiguo 10/04/2012, 14:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Formulario problema con Su mensaje ha sido enviado

Consulta el manual, la función header() se encarga de enviar cabeceras al cliente.

La instrucción Location: genera una redirección.

Si necesitas incluir dicho archivo en lugar de redireccionar tal vez necesitas usar include().

¿Qué no sabes de lo que hablo?

Consulta el manual:
http://php.net/include

PDTA: y no se trata de lidiar con los lenguajes, se trata de lidiar con nosotros mismos e investigar, nada es un problema sólo una dificultad.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 10/04/2012, 15:18
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Formulario problema con Su mensaje ha sido enviado

El problema como dice pateketrueke esta en que al utilizar header('Location: thank-you.html'); lo que haces es obligar al navegador a redireccionar la pagina actual thank-you.html.

lo que podrias hacer es utilizar include o guardar el mensaje que quieras mostrar en una variable y mostrarla de la misma manera que muestras los errores.
  #4 (permalink)  
Antiguo 10/04/2012, 16:12
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Formulario problema con Su mensaje ha sido enviado

Bueno, supongo que está claro que si no quieres que te redirija tendrás que borrar el header();

Si además lo único que buscas es que te ponga un mensajito de enviado correctamente coloca este código en lugar del header();
Código PHP:
$enviado_bool true
Y dónde quieras que aparezca el mensaje pon:
Código PHP:
<?php
if($enviado_bool == true){
  echo 
'¡Su mensaje ha sido enviado correctamente!';
}
?>
Al hacer el submit del form la página se recarga, si se ha enviado y has escrito lo de $enviado_bool = true; entonces se definirá esa variable y al cargar el resto de la página entrará en ese if().
Si quieres algo más complejo especifica, Suerte!
  #5 (permalink)  
Antiguo 10/04/2012, 18:37
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Formulario problema con Su mensaje ha sido enviado

Gracias a todos y zalito12, me funciono perfecto!
Agendada la lección!
Saludos

Etiquetas: contacto, foumulario, mensaje, submit
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 13:29.