Foros del Web » Creando para Internet » HTML »

Formulario llega al correo en blanco

Estas en el tema de Formulario llega al correo en blanco en el foro de HTML en Foros del Web. Buenas, necesito ayuda con respecto a un formulario que lo estoy trabajando con HTML y con un archivo de envio en PHP. El problema es ...
  #1 (permalink)  
Antiguo 21/03/2012, 09:50
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Formulario llega al correo en blanco

Buenas, necesito ayuda con respecto a un formulario que lo estoy trabajando con HTML y con un archivo de envio en PHP. El problema es que me llega en blanco, solo con los datos de Nombre y email. Les copio ambos codigos:

HTML

<div id="formulario">
<form action="email.php" method="post">
<span id="textformulario">Nombre:</span><input name="nombre" type="text" size="40" />
<br /><br /><span id="textformulario">Teléfono:</span><input name="telefono" type="text" size="40"/>
<br />
<br /><span id="textformulario">Email:</span><input name="email" type="text" size="40"/>
<br /><br /><span id="textformulario">Fecha:</span><input name="fecha" type="text" size="20"/>
<br /><br /><span id="textformulario">Tipo de Evento:</span><select name="tipoevento">
<option value="maniinfantil">Infantil
<option value="manisocial">Social
<option value="manicorporativo">Corporativo
</select>
<br /> <br /><span id="textformulario">Nº de personas</span> <input name="cantidadpersonas" type="text" size="10"/>
<br />
<br /><span id="textformulario">Comentatios</span><textarea name="comments" wrap="soft" > </textarea>
<br /> <br /><input class="enviar" type="submit" value="Enviar" name="enviartodo" /><input class="borrar" type="reset" value="Borrar" name="borrartodo" />
</FORM>


PHP:

<?php

//variable de validacion

$valida = true;

if (empty($_POST['nombre'])) {

echo "<b>No se especifico nombre</b><br/>";

$valida = false;

}

if (empty($_POST['telefono'])) {

echo "<b>No se especifico teléfono</b><br/>";

$valida = false;

}

if (empty($_POST['email'])) {

echo "<b>No se especifico el email</b><br/>";

$valida = false;

}

if (empty($_POST['fecha'])) {

echo "<b>No se especifico la fecha</b><br/>";

$valida = false;

}
if (empty($_POST['tipoevento'])) {

echo "<b>No se especifico el tipo de evento</b><br/>";

$valida = false;

}
if (empty($_POST['cantidadpersonas'])) {

echo "<b>No se especifico el numero de personas</b><br/>";

$valida = false;

}
if (empty($_POST['comments'])) {

echo "<b>Escriba los comentarios</b><br/>";

$valida = false;

}
// Validamos la direccion de correo electronico

if (!strchr($_POST['email'],"@") || !strchr($_POST['email'],"."))
{

echo "<b>No es un correo valido</b><br/>";

$valida = false;

}

// Si las comprobaciones son correctas

if ($valida == true)

{

// Creamos el header para el mensaje

// para:

$to = "[email protected]";

// Asunto

$subject = $_POST['asunto'];

// Cabeceras del mail (Content-Type y demas info)

$headers = "MIME-Version: 1.0\n";

$headers .= "Content-type: text/html; charset=utf-8\n";

// El From: en la forma Nombre <[email protected]>, esto garantiza que

// el receptor vea solo el nombre de quien envia

$headers .= "From: ".$_POST['nombre']." <".$_POST['email'].">\n";

// Opcional: Resopnder a:

$headers .= "Reply-To: " . $_POST['email']."\n";

//Opcional X-Mailer

$headers .= "X-Mailer: PHP/" . phpversion();

// Cuerpo del email

$message = $_POST['mensaje'];

if(mail($to, $subject, $message,$headers))
{

echo "<p>Mensaje enviado, Gracias por sus sugerencias.<br /><a href=\"javascript:history.go(-1)\">Volver</a></p>";

}

}

?>


Les agradeceria mucho su ayuda.
  #2 (permalink)  
Antiguo 21/03/2012, 17:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Formulario llega al correo en blanco

Hola:

Parece estar bien, pero usando el método post te recomendaría poner el atributo enctype... de todos modos, en las pruebas podrías comprobar mejor lo que llega con print_r($_POST);

Otra cosilla que no tiene que ver con la validación, es que procures asociar un label a cada control (ahora estás usando span)...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 21/03/2012, 20:42
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Formulario llega al correo en blanco

Para comenzar
$subject = $_POST['asunto']; --> no existe un post asunto
$message = $_POST['mensaje']; --> no hay ningun "mensaje" definido en el html, solo el "comment" del textarea

cuando tengas corregido eso, arma $message con los valores de post que necesites

Saludos

PD, el email llega correctamente, asi que eso esta bien
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 22/03/2012, 10:12
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Formulario llega al correo en blanco

cito a emprear:

Para comenzar
$subject = $_POST['asunto']; --> no existe un post asunto
$message = $_POST['mensaje']; --> no hay ningun "mensaje" definido en el html, solo el "comment" del textarea

cuando tengas corregido eso, arma $message con los valores de post que necesites

Saludos

PD, el email llega correctamente, asi que eso esta bien


Efectivamente ese es el problema. Ahora nose como agregar los demas datos formulario y que aparezcan en el cuerpo del correo. Probe agregandole $message y me los manda pero en varios correos. Les explico con el codigo:

--------------------------------------------------------------------------------------
// Cuerpo del email CODIGO ORIGINAL

$message = $_POST['mensaje'];
if(mail($to, $subject, $message,$headers))

------------------------------------------------------------------------------------------
// Cuerpo del email PRUEBAS QUE HE HECHO Y NO ME FUNCIONAN

$message = $_POST['mensaje'];
$message = $_POST['telefono'];
if(mail($to, $subject, $message,$headers))
---------------------------------------------------------------------------------------------
// Cuerpo del email OTRA

$message = $_POST['mensaje'];
if(mail($to, $subject, $message,$headers))

$message = $_POST['telefono'];
if(mail($to, $subject, $message,$headers))

----------------------------------------------------------------------------------------------

Lo que quiero segun el codigo del html es que en el cuerpo de correo me apareza:

MENSAJE, TELEFONO, CANTIDADPERSONAS Y FECHA.

Muchas gracias por su colaboración
  #5 (permalink)  
Antiguo 22/03/2012, 11:11
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Formulario llega al correo en blanco

tenes que construir tu mensaje asi
Código PHP:
Ver original
  1. $nombre = $_POST['nombre'];
  2. $email = $_POST['email'];
  3. $fecha = $_POST['fecha'];
  4. $comments = $_POST['comments'];
  5. $cantidadpersonas = $_POST['cantidadpersonas'];
  6. $telefono = $_POST['telefono'];
  7. $message = "
  8. Mensaje enviado por $nombre [$email] en fecha: $fecha
  9.  
  10. $comments
  11.  
  12. Cantidad de personas : $cantidadpersonas
  13. Teléfono: $telefono
  14.  
  15. ";

En este caso lo hice para que llegue com otexto plano, que siempre es más recomendable. Por lo que tambien tendrñias que modificar

$headers .= "Content-type: text/html; charset=utf-8\n";
x
$headers .= "Content-type: text/plain; charset=utf-8\n";

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: php, 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 09:38.