Foros del Web » Programando para Internet » PHP »

Formulario

Estas en el tema de Formulario en el foro de PHP en Foros del Web. Hola, como andan? Tengo el siguiente código en php para un formulario de contacto para un sitio web esta funcionando, pero no como me gustaría ...
  #1 (permalink)  
Antiguo 13/06/2011, 05:30
 
Fecha de Ingreso: junio-2011
Mensajes: 478
Antigüedad: 12 años, 9 meses
Puntos: 13
Pregunta Formulario

Hola, como andan?
Tengo el siguiente código en php para un formulario de contacto para un sitio web esta funcionando, pero no como me gustaría ya que después de enviar quisiera que en la misma pagina se abra una ventanita que diga "Su consulta se realizo con excito" o algo así, no importa el texto, el problema es que ese mensaje me sale en una pagina en blanco.
Y otro tema es que quisiera que antes de enviar chequee si los campos fueron llenados, y en el caso del email si es realmente un email.
Muchas Gracias!!


<?php

$nombre = $_POST['nombre'];
$mail = $_POST['mail'];
$mensaje = $_POST['mensaje'];

$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 = "Has recibido un mensaje desde xxx.com" + "\r\n";
$mensaje .= "Nombre: " . $nombre . " \r\n";
$mensaje .= "email: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';
$asunto = 'Contacto desde xxx';

mail($para, $asunto, utf8_decode($mensaje), $header);

echo "Mensaje enviado correctamente";

?>
  #2 (permalink)  
Antiguo 13/06/2011, 07:34
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Formulario

y cual es el problema?
no pods hacer un if para cada cosa que necesites???

Código PHP:
Ver original
  1. $nombre = isset($_POST['nombre']) ? $_POST['nombre']: '';
  2. /*
  3. la funcion mail devuelve true si el mail se envio
  4. esto no quita que tu servidor o servicio de hosting no lo prohiba
  5. */
  6. if(mail($para, $asunto, utf8_decode($mensaje), $header)){
  7.   echo "Mensaje enviado correctamente";
  8. }else{
  9.   echo 'hubo algun error';
  10. }

en la gran nube podes encontrar muchos codigos que validan mails
  #3 (permalink)  
Antiguo 13/06/2011, 07:42
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años
Puntos: 192
Respuesta: Formulario

Bueno para el primer asunto (mostrar un mensaje), tenés muchas opciones. Lo que yo suelo hacer es:

En el código que muestra el formulario, hago lo siguiente:

Código PHP:
Ver original
  1. <?php if(!isset($_REQUEST['gracias'])){?>
  2.  
  3. <!--codigo HTML del formulario -->
  4.  
  5. <?php }else(){?>
  6.  
  7. <!-- codigo HTML del mensaje -->
  8.  
  9. <?php }?>

Por supuesto que ese código está incluido en un HTML propiamente estilizado y todo lo demás.
Entonces en el código PHP que envía el formulario, tenés que incluir esta línea:
Código PHP:
Ver original
  1. header('location:formulario.php?gracias');
Por supuesto que "formulario.php" es el documento donde tenés el código que te mostré antes.
Te lo muestro en un ejemplo:
Acá hay un formulario: http://nahueljose.com.ar/html-email-sender/

Pero una vez enviado el mensaje, te redirige acá: http://nahueljose.com.ar/html-email-sender/?enviado

De esa forma tenés el formulario y el mensaje de gracias en el mismo documento y están sometidos al mismo estilo.

Otra opción es usar otro documento HTML aparte y redirigir ahí. Ejemplo:

Código PHP:
Ver original
  1. header('location:gracias.html');

:)

Para validar los datos antes de enviar el mail, podés hacer algo en JavaScript. Si buscás "validar formulario" en google o en el foro de JavaScript vas a encontrar muchos ejemplos!
__________________
nahueljose.com.ar

Etiquetas: formulario
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 14:08.