PHP - Prolema con formulario HTML y funcion de envio en PHP

   
Vista:

Prolema con formulario HTML y funcion de envio en PHP

Publicado por alvaro (4 intervenciones) el 04/04/2013 15:00:25
Hola a todos;

El caso es que tengo un formulario de contacto en mi pagina web y los correos me llegan pero no de la forma en la que lo tengo estructuraco en PHP, me explico mejor, el mensaje si llega pero los datos de los campos: Nombre, Apellido, Correo y Asunto no llegan.

Os dejo aqui devajo el codigo PHP (destacar que el PHP lo tengo en un doc aparte)

--------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
 
//Defino las variables
 
$para    = 'alvaroj_delpino@hotmail.com';
$nombre  = $_POST['nombre'];
$apellido= $_POST['apellido'];
$tnombre = $nombre." ".$apellido;
$asunto  = $_POST['asunto'];
$correo = $_POST["email"];
$comentario = $_POST['mensaje'];
 
$message ='

Nombre '.$nombre.'
Apellido '.$apellido.'
Correo '.$correo.'
Asunto '.$asunto.'

Mensaje: '.$comentario.'
';
 
//Cabeceras y accion de enviar
 
$headers = 'MIME-Version:1.0;\r\n';
$headers .= "content-type: text/html \r\n charset=iso-8859-1; \r\n";
$headers .= 'From: $correo' . '\r\n';
$headers .= 'To: $para' . '\r\n' . 'Subject: $asunto' . '\r\n';
 
$mail = mail($para, $asunto, $message, $header);
 
if ($mail) {
echo "The message has been sent successfully";
} else {
echo "There was an error trying to send the mail, please try again ...";
}
?>

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

He probado varios codigos diferentes y ninguno a resuelto el problema que tengo, ¿Alguien podria sugerirme un codigo que funcione?o en su defecto decirme que estoy haciendo mal...

Gracias por vuestro tiempo!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Prolema con formulario HTML y funcion de envio en PHP

Publicado por xve (5513 intervenciones) el 04/04/2013 15:05:30
Hola Alvaro, el código que muestras, parece que esta bien, pero me queda un par de dudas...
Interpreto que el texto que pone Nombre si lleva, pero no llega el valor que ha introducido el usuario en el formulario, verdad? Si es así, interpreto que los datos no llegan bien, por lo que nos podrías mostrar el formulario?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Prolema con formulario HTML y funcion de envio en PHP

Publicado por alvaro (4 intervenciones) el 04/04/2013 15:20:27
Hola xve, muchas gracias por la rápida respuesta.

Claro! adjunto abajo el codigo HTML:

-----------------------------------------------------------
<section id="fomulario">
<form id="form1" name="from1" method="post" action="mail.php">

<label for="nombre">Name:</label>
<input name"nombre" type="text" id="nombre" placeholder="Type your name here" autofocus required/>

<label for="apellido">Last name:</label>
<input name"apellido" type="text" id="apellido" placeholder="Type your surename here"/>

<label for="email">E-mail:</label>
<input name"email" type="email" id="email" class="required email" placeholder="Type your e-mail here"/>

<label for="topic">Topic:</label>
<input name"asunto" type="text" id="asunto" placeholder="Type the topic here"/>

<label for="texto">Type here your text:</label>
<textarea name="mensaje" id="mensaje" cols="50" rows="8" placeholder="Type your text here"></textarea>

<input type="submit" Value="Send" id="btnsubmit" />

</form>
</section>
----------------------------------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Prolema con formulario HTML y funcion de envio en PHP

Publicado por Iván (9 intervenciones) el 04/04/2013 16:25:11
Hola, Álvaro

Deberías emplear una forma más segura de enviar los emails, por ejemplo con PHPMailer.

Si decides continuar con tu script, en primer lugar debes validar los datos recibidos por el formulario.

El problema que tienes intuyo se debe a las cabeceras:

1
2
3
4
$headers = 'MIME-Version:1.0;\r\n';
$headers .= "content-type: text/html \r\n charset=iso-8859-1; \r\n";
$headers .= 'From: $correo' . '\r\n';
$headers .= 'To: $para' . '\r\n' . 'Subject: $asunto' . '\r\n';


A menos que se trate de un error al pegar, estás empleando comillas simples para introducir caracteres especiales (\n y \r). Para poder emplearlos, deben estar en comillas dobles. Los ; son para cerrar la instrucción de PHP, no se incluyen en las cabeceras:
1
2
3
4
5
$headers = "MIME-Version:1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= 'From: ' . $correo . "\r\n";
$headers .= 'To: ' . $para . "\r\n";
$headers .= 'Subject: ' . $asunto . "\r\n";


Te dejo también un enlace con veinte buenas prácticas para optimizar PHP que puede serte de utilidad.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Prolema con formulario HTML y funcion de envio en PHP

Publicado por alvaro (4 intervenciones) el 04/04/2013 16:53:16
Hola Iván:

Acabo de rorregir las cabeceras y lo que me llega al correo es lo siguiente:

\r\n\r\n\r\n\r\ncambio de comillas en las cabeceras 1\r\n

solo me llega el mensaje con todas las "n" "r" y barras...

Respondiendo a la lo de PHPmailer, por lo que he visto hace falta una cuenta de correo del seridor y creo que con seguridad no tengo, uso un hosting gratuito (aunque admite PHP y enviar correos).

alguna otra idea??

Muchas Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Prolema con formulario HTML y funcion de envio en PHP

Publicado por xve (5513 intervenciones) el 04/04/2013 17:54:46
Hola Alvaro, tienes el formulario erroneo...

Esto es erroneo:
1
<input name"nombre" type="text" id="nombre" placeholder="Type your name here" autofocus required/>

tiene que ser:
1
<input name="nombre" type="text" id="nombre" placeholder="Type your name here" autofocus required/>


Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Prolema con formulario HTML y funcion de envio en PHP

Publicado por alvaro (4 intervenciones) el 04/04/2013 19:29:08
Hola xve;

a ver, ahora llega la información de todos los campos pero siguen aparaciendo los retornos y el salto de linea (r, n y barras) entre medias... alguna idea? cambio otra vez las comillas?

pero que valla, ahora tengo un correo que funciona

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar