Foros del Web » Programando para Internet » PHP »

Enviar formulario PHP

Estas en el tema de Enviar formulario PHP en el foro de PHP en Foros del Web. Hola gente, se que este tema se ha discutido infinidad de veces, he estado siguiendo algunos hilos, y ya he conseguido que me llegue el ...
  #1 (permalink)  
Antiguo 16/08/2012, 10:43
Avatar de sergi_multimedia  
Fecha de Ingreso: noviembre-2010
Mensajes: 213
Antigüedad: 13 años, 5 meses
Puntos: 4
Pregunta Enviar formulario PHP

Hola gente, se que este tema se ha discutido infinidad de veces, he estado siguiendo algunos hilos, y ya he conseguido que me llegue el email después de rellenar el formulario. Pero tengo tres dudas.

1. ¿Porqué me aparece como "CGI-Mailer <[email protected]>" como la persona que ha enviado el formulario? Es decir, que mi cliente, cuando reciba un formulario le aparece esa dirección como nombre de la persona que lo enviía, más adelante, dentro del mensaje ya le aparece el email de la persona que ha enviado el formulario.

2. Lo que se escribe en el apartado de comentarios "Message" no lo veo en el email que recibo.

3. ¿Cómo puedo hacer para que todos los campos sean obligatorios?

Mis conocimientos de PHP son cero, he logrado esto después de ir leyendo, copiando y probando.

Os dejo mi código:

Código HTML:
Ver original
  1. <form class='contacto' action="form.php" method="post" name="form">
  2.                 <div><label>Name</label><input name="name" type='text' id="name" value=''></div>
  3.                 <div><label>Email</label><input name="email" type='text' id="email" value=''></div>
  4.                 <div><label>Subject</label><input name="subject" type='text' id="subject" value=''></div>
  5.                 <div><label>Message</label><textarea rows='6' name="message" id="message"></textarea></div>
  6.                 <div><input name="submit" type='submit' value='Send'></div>
  7.             </form>

Código PHP:
<?php $mail='[email protected]';  
$name $_POST['name']; 
$email $_POST['email']; 
$subject $_POST['subject']; 
$message $_POST['message']; 
 

   
if (
mail($mail,$subject,"from: ".$name." <".$email.">"));?>
Os dejo un enlace del formulario para que lo podáis ver: http://www.sergibeltran.com/gbj/contact.html

Gracias de antemano, sé que este tema ya está más que discutido, pero no encuentro la "fórmula"....

Bye ;)
  #2 (permalink)  
Antiguo 16/08/2012, 11:05
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 9 meses
Puntos: 27
Respuesta: Enviar formulario PHP

Te he puesto todo en un mismo archivo para que sea mas comodo y uses los menos archivos posible.
Código PHP:
Ver original
  1. <?php
  2. $name = $_POST['name'];
  3. $email = $_POST['email'];
  4. $subject = $_POST['subject'];
  5. $message = $_POST['message'];
  6. $submit = $_POST['submit'];
  7.  
  8. if(isset($submit)){
  9.     if(strlen($nombre) <= "5"){
  10.     echo "El nombre debe tener como minimo 6 caracteres";
  11.     }else{
  12.     if(strlen($email) <= "5"){
  13.     echo "El email debe tener como minimo 6 caracteres";
  14.     }else{
  15.     if(strlen($subject) <= "5"){
  16.     echo "El subject debe tener como minimo 6 caracteres";
  17.     }else{
  18.     if(strlen($message) <= "9"){
  19.     echo "El mensaje debe tener como minimo 10 caracteres";
  20.     }else{
  21.     if($name == "" | $email == "" | $subject == "" | $message == "");
  22.     echo "Rellena todos los campos en blanco";
  23.     }else{
  24.     if(filter_var($email, FILTER_VALIDATE_EMAIL);
  25.     echo "El correo electronico no es valido";
  26.     }else{
  27.     mail("$email","$subject","Tu nombre es: $name tu correo es: $email tu mensaje es: $message");
  28.     }
  29. }
  30. ?>
  31. <form action="" method="post">
  32.   Nombre: <input name="name"><br>
  33.   Email: <input name="email"><br>
  34.   Subject: <input name="subject"><br>
  35.   Mensaje: <textarea name="message"></textarea><br>
  36.   <input name="submit" type="submit" value="Send">
  37. </form>
  #3 (permalink)  
Antiguo 16/08/2012, 11:53
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Enviar formulario PHP

Respecto al por qué aparece [email protected], es que seguramente es la cuenta de correo predefinida para que php envíe emails desde ahí. SI quisieras usar una cuenta personalizada, podrías recurrir a la librería phpmailer, a la cual le puede configurar una cuenta propia indicando servidor, usuario y contraseña de la cuenta
  #4 (permalink)  
Antiguo 16/08/2012, 12:57
 
Fecha de Ingreso: enero-2012
Ubicación: Caracas
Mensajes: 75
Antigüedad: 12 años, 3 meses
Puntos: 21
Respuesta: Enviar formulario PHP

eso te iba a recomendar! usa phpmailer, es bastante secillo.
...pero esa cuenta que quieres cambiar, lo puedes hacer con:
Código PHP:
Ver original
  1. ini_set("SENDMAIL_FROM","[email protected]");
  #5 (permalink)  
Antiguo 16/08/2012, 13:02
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 9 meses
Puntos: 27
Respuesta: Enviar formulario PHP

Lo que yo te e puesto funciona pruebalo.
  #6 (permalink)  
Antiguo 16/08/2012, 13:42
Avatar de sergi_multimedia  
Fecha de Ingreso: noviembre-2010
Mensajes: 213
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: Enviar formulario PHP

Cita:
Iniciado por PepeF Ver Mensaje
Te he puesto todo en un mismo archivo para que sea mas comodo y uses los menos archivos posible.
Código PHP:
Ver original
  1. <?php
  2. $name = $_POST['name'];
  3. $email = $_POST['email'];
  4. $subject = $_POST['subject'];
  5. $message = $_POST['message'];
  6. $submit = $_POST['submit'];
  7.  
  8. if(isset($submit)){
  9.     if(strlen($nombre) <= "5"){
  10.     echo "El nombre debe tener como minimo 6 caracteres";
  11.     }else{
  12.     if(strlen($email) <= "5"){
  13.     echo "El email debe tener como minimo 6 caracteres";
  14.     }else{
  15.     if(strlen($subject) <= "5"){
  16.     echo "El subject debe tener como minimo 6 caracteres";
  17.     }else{
  18.     if(strlen($message) <= "9"){
  19.     echo "El mensaje debe tener como minimo 10 caracteres";
  20.     }else{
  21.     if($name == "" | $email == "" | $subject == "" | $message == "");
  22.     echo "Rellena todos los campos en blanco";
  23.     }else{
  24.     if(filter_var($email, FILTER_VALIDATE_EMAIL);
  25.     echo "El correo electronico no es valido";
  26.     }else{
  27.     mail("$email","$subject","Tu nombre es: $name tu correo es: $email tu mensaje es: $message");
  28.     }
  29. }
  30. ?>
  31. <form action="" method="post">
  32.   Nombre: <input name="name"><br>
  33.   Email: <input name="email"><br>
  34.   Subject: <input name="subject"><br>
  35.   Mensaje: <textarea name="message"></textarea><br>
  36.   <input name="submit" type="submit" value="Send">
  37. </form>
Hola PepeF, no me sale lo que me has comentado más arriba, al apretar enviar me sale un error de sintaxis (puedes verlo en estos momentos), seguro que no lo estoy implementando bien, tengo algunas dudas.

1. En el código de PHP que me has puesto no hay ninguna referencia de dónde se tiene que enviar este formulario, dónde lo tendría que poner?

2. No llego a entender que eso de ponerlo en un mismo archivo todo, supongo que lo de PHP va al archivo PHP y lo del <form> va al HTML, es así?

Gracias de antemano ;)
  #7 (permalink)  
Antiguo 16/08/2012, 13:52
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 9 meses
Puntos: 27
Respuesta: Enviar formulario PHP

Código PHP:
Ver original
  1. <?php
  2. $name = $_POST['name'];
  3. $email = $_POST['email'];
  4. $subject = $_POST['subject'];
  5. $message = $_POST['message'];
  6. $submit = $_POST['submit'];
  7.  
  8. if(isset($submit)){
  9.     if(strlen($name) <= "5"){
  10.     echo "El nombre debe tener como minimo 6 caracteres";
  11.     }else{
  12.     if(strlen($email) <= "5"){
  13.     echo "El email debe tener como minimo 6 caracteres";
  14.     }else{
  15.     if(strlen($subject) <= "5"){
  16.     echo "El subject debe tener como minimo 6 caracteres";
  17.     }else{
  18.     if(strlen($message) <= "9"){
  19.     echo "El mensaje debe tener como minimo 10 caracteres";
  20.     }else{
  21.     if($name == "" | $email == "" | $subject == "" | $message == ""){
  22.     echo "Rellena todos los campos en blanco";
  23.     }else{
  24.     if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
  25.     echo "El correo electronico no es valido";
  26.     }else{
  27.     mail("$email","$subject","Tu nombre es: $name tu correo es: $email tu mensaje es: $message");
  28.     }}}}}}
  29. }
  30. ?>
  31. <form action="" method="post">
  32.   Nombre: <input name="name"><br>
  33.   Email: <input name="email"><br>
  34.   Subject: <input name="subject"><br>
  35.   Mensaje: <textarea name="message"></textarea><br>
  36.   <input name="submit" type="submit" value="Send">
  37. </form>

Listo ya funciona esque lo hice sobre la marcha.

1- tu no vez un if(isset($submit){
isset significa que si as apretado el boton de enviar que le as puesto name="submit" si lo as apretado te sale todo lo que verificar los campos si estan vacio o si no y si los campos cumple con todo ejecuta esto

mail("$email","$subject","Tu nombre es: $name tu correo es: $email tu mensaje es: $message");

Ahora yo necesito saber una cosa para mejorarte o no el codigo el formulario cuando lo rellena a quien tiene que ir toda la informacion escrita a ti o al usuario que lo ha escrito?

2- Yo lo he echo en un archivo pero se puede hacer en 2 pero para ocupar menos te lo he echo en 1 archivo si quieres me lo dices y te lo cambio por dos archivo.
  #8 (permalink)  
Antiguo 16/08/2012, 14:28
Avatar de sergi_multimedia  
Fecha de Ingreso: noviembre-2010
Mensajes: 213
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: Enviar formulario PHP

Cita:
Iniciado por PepeF Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2. $name = $_POST['name'];
  3. $email = $_POST['email'];
  4. $subject = $_POST['subject'];
  5. $message = $_POST['message'];
  6. $submit = $_POST['submit'];
  7.  
  8. if(isset($submit)){
  9.     if(strlen($name) <= "5"){
  10.     echo "El nombre debe tener como minimo 6 caracteres";
  11.     }else{
  12.     if(strlen($email) <= "5"){
  13.     echo "El email debe tener como minimo 6 caracteres";
  14.     }else{
  15.     if(strlen($subject) <= "5"){
  16.     echo "El subject debe tener como minimo 6 caracteres";
  17.     }else{
  18.     if(strlen($message) <= "9"){
  19.     echo "El mensaje debe tener como minimo 10 caracteres";
  20.     }else{
  21.     if($name == "" | $email == "" | $subject == "" | $message == ""){
  22.     echo "Rellena todos los campos en blanco";
  23.     }else{
  24.     if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
  25.     echo "El correo electronico no es valido";
  26.     }else{
  27.     mail("$email","$subject","Tu nombre es: $name tu correo es: $email tu mensaje es: $message");
  28.     }}}}}}
  29. }
  30. ?>
  31. <form action="" method="post">
  32.   Nombre: <input name="name"><br>
  33.   Email: <input name="email"><br>
  34.   Subject: <input name="subject"><br>
  35.   Mensaje: <textarea name="message"></textarea><br>
  36.   <input name="submit" type="submit" value="Send">
  37. </form>

Listo ya funciona esque lo hice sobre la marcha.

1- tu no vez un if(isset($submit){
isset significa que si as apretado el boton de enviar que le as puesto name="submit" si lo as apretado te sale todo lo que verificar los campos si estan vacio o si no y si los campos cumple con todo ejecuta esto

mail("$email","$subject","Tu nombre es: $name tu correo es: $email tu mensaje es: $message");

Ahora yo necesito saber una cosa para mejorarte o no el codigo el formulario cuando lo rellena a quien tiene que ir toda la informacion escrita a ti o al usuario que lo ha escrito?

2- Yo lo he echo en un archivo pero se puede hacer en 2 pero para ocupar menos te lo he echo en 1 archivo si quieres me lo dices y te lo cambio por dos archivo.

Me he salido!!!! He recibido un email con la información del nombre, email, asunto y el contenido del mensaje! Muchas gracias Pepe ;)

Por cierto, toda la información del formulario me tiene que llegar a mi correo. Pero he puesto mi correo y funciona perfectamente.

Saludos!
  #9 (permalink)  
Antiguo 16/08/2012, 14:35
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 9 meses
Puntos: 27
Respuesta: Enviar formulario PHP

Modifica
mail("$email","$subject","Tu nombre es: $name tu correo es: $email tu mensaje es: $message");
Por
mail("Tu [email protected]","$subject","Tu nombre es: $name tu correo es: $email tu mensaje es: $message");

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 09:29.