Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con formulario de contacto

Estas en el tema de Problema con formulario de contacto en el foro de PHP en Foros del Web. Buenos días, tengo un problemilla con un formulario de contacto en php. Tengo la primera página con el formulario de rigor en html, y hasta ...
  #1 (permalink)  
Antiguo 06/04/2013, 02:57
 
Fecha de Ingreso: abril-2013
Mensajes: 14
Antigüedad: 11 años
Puntos: 0
Problema con formulario de contacto

Buenos días, tengo un problemilla con un formulario de contacto en php.
Tengo la primera página con el formulario de rigor en html, y hasta ahí todo correcto, pero no se porqué, la segunda página, en la que trato la información recogida en la anterior y doy formato al mail antes de enviarlo, no me funciona. Pues no me imprime el mensaje final; ni me envía el mail, claro.

Os dejo el código.

Código:
<?php

$name = $_REQUEST['name'];
$email =  = $_REQUEST['email'];
$section = $_REQUEST['section'];
$message = $_REQUEST['message'];
$asunto = "Mail de " .$name. " a través del area de contacto de la web";

$header = "De: " .$email;

$mensaje = "Tienes un mensaje de " .$name. "\r\n";
$mensaje .= "Su e-mail es: " .$mail. " \r\n";
$mensaje .= "Mensaje: " .$message. " \r\n";
$mensaje .= "Fecha de envio: " .date('d/m/Y', time());

if($section == "designer" or $section == "info")
$section .= "@ejemplo.com";
else if($section == "wm")
$section = "[email protected]";

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

echo "Mensaje enviado correctamente";

?>
Soy novato en php, así que disculparme si es un error de novato.

Gracias.
Un saludo.
  #2 (permalink)  
Antiguo 06/04/2013, 05:01
 
Fecha de Ingreso: abril-2012
Ubicación: Malaga
Mensajes: 46
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con formulario de contacto

Hola.
Yo también soy novato en PHP, pero en el código hay un par de fallillos:
-La variable $mail no existe, deberías poner $email (a veces, por una simple coma el programa esta mal entero xD)
-En el if, debes de poner || para OR.

Por lo demás, yo creo que está bien escrito, si no es así, que venga alguien con más experiencia para ayudarte.

Te dejo el código como sería:

Código:
<?php

$name = $_REQUEST['name'];
$email =  = $_REQUEST['email'];
$section = $_REQUEST['section'];
$message = $_REQUEST['message'];
$asunto = "Mail de " .$name. " a través del area de contacto de la web";

$header = "De: " .$email;

$mensaje = "Tienes un mensaje de " .$name. "\r\n";
$mensaje .= "Su e-mail es: " .$email. " \r\n";
$mensaje .= "Mensaje: " .$message. " \r\n";
$mensaje .= "Fecha de envio: " .date('d/m/Y', time());

if($section == "designer" || $section == "info")
{
   $section .= "@ejemplo.com";
}
else
{
    if($section == "wm")
    {
       $section = "[email protected]";
     }
}
/*Supongo que aqui donde pones mail te refieres a $email, si no es asi, cámbialo*/
$email($section, $asunto, utf8_decode($mensaje), $header);

echo "Mensaje enviado correctamente";

?>

Espero haberte sido de ayuda, aunque sea poca xD.

Saludos.
  #3 (permalink)  
Antiguo 06/04/2013, 15:12
 
Fecha de Ingreso: abril-2013
Mensajes: 14
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con formulario de contacto

Muchas gracias por tu atención, Ignatar20, pero creo no equivocarme al asegurar que los errores no son los que me indicas.

-$email es el atributo que he definido yo para guardar el mail del contactante, mientras que mail() es una función predefinida de php para mandar mails.
- || y or creo que son operadores lógicos equivalentes.
Es más, la primera vez que escribí el código emplee or, pero al ver que no funcionaba probé con ||.

Un saludo.
  #4 (permalink)  
Antiguo 06/04/2013, 15:48
 
Fecha de Ingreso: marzo-2012
Ubicación: Rosario
Mensajes: 108
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con formulario de contacto

Hola c0d3st1ng3r
El unico problema que veo en tu codigo es en esta linea:
$email = = $_REQUEST['email'];
Se te fue un =

Asi debe quedar: $email = $_REQUEST['email'];

Suerte!
  #5 (permalink)  
Antiguo 06/04/2013, 16:02
 
Fecha de Ingreso: marzo-2012
Ubicación: Rosario
Mensajes: 108
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con formulario de contacto

Agrego algo mas:
Me parece que podrias mejores la cabecera del mail que llega de la siguiente manera:

Código PHP:
Ver original
  1. $name = $_REQUEST['name'];
  2. $email = $_REQUEST['email'];
  3. $section = $_REQUEST['section'];
  4. $message = $_REQUEST['message'];
  5. $asunto = "Mail de " .$name. " a traves del area de contacto de la web";
  6.  
  7. $remitente= $email;
  8. $headers = "MIME-Version: 1.0\r\n";
  9. $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  10. $headers .= "From: Desde sistema <$remitente>\r\n";
  11. $headers .= "Reply-To: $remitente\r\n";
  12. $headers .= "Return-path: $remitente\r\n";
  13. $mensaje = "Tienes un mensaje de " .$name. "\r\n";
  14. $mensaje .= "Su e-mail es: " .$mail. " \r\n";
  15. $mensaje .= "Mensaje: " .$message. " \r\n";
  16. $mensaje .= "Fecha de envio: " .date('d/m/Y', time());
  17.  
  18. if($section == "designer" or $section == "info")
  19. $section .= "@ejemplo.com";
  20. else if($section == "wm")
  21. $section = "[email protected]";
  22.  
  23. mail($section, $asunto, utf8_decode($mensaje), $headers);
  24.  
  25. echo "Mensaje enviado correctamente";

Saludos!
  #6 (permalink)  
Antiguo 07/04/2013, 00:35
 
Fecha de Ingreso: abril-2013
Mensajes: 14
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con formulario de contacto

Mil gracias, Hernan. Ahora si que funciona.

Cita:
Iniciado por hernan2212 Ver Mensaje
Agrego algo mas:
Me parece que podrias mejores la cabecera del mail que llega de la siguiente manera:

Código PHP:
Ver original
  1. $remitente= $email;
  2. $headers = "MIME-Version: 1.0\r\n";
  3. $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  4. $headers .= "From: Desde sistema <$remitente>\r\n";
  5. $headers .= "Reply-To: $remitente\r\n";
  6. $headers .= "Return-path: $remitente\r\n";
En cuanto a lo de los headers. ¿Sirven para algo más que para dar información escrita?
Lo digo porque, si por ejemplo estamos haciendo la web de una tienda y el mail va dirigido al gerente, por poner un ejemplo de alguien totalmente profano a la programación... ¿de que sirve mandarle las dos primeras lineas si no las va a entender?

Un saludo.

Etiquetas: contacto, 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:37.