Foros del Web » Programando para Internet » PHP »

Formulario de contacto...

Estas en el tema de Formulario de contacto... en el foro de PHP en Foros del Web. Hola, estoy programando un sitio web que será para una clinica veterinaria de una amiga. No estoy muy puesto en programacion web, quiero hacer el ...
  #1 (permalink)  
Antiguo 12/09/2010, 06:15
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 1
Formulario de contacto...

Hola, estoy programando un sitio web que será para una clinica veterinaria de una amiga. No estoy muy puesto en programacion web, quiero hacer el tipico formulario de contacto para que envie a un mail la informacion. Ahora mismo he creado el archivo contact.html y el archivo contact.php. He instalado el xampp para probar el codigo, y he metido los dos archivos en la carpeta htdocs, hasta aqui, bien?? Pongo a continuacion los códigos de ambos archivos:

Contact.html
Código HTML:
Ver original
  1. <?xml version="1.0" encoding="utf-8" ?>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
  5.  
  6.     <!-- BEGIN META -->
  7. <title>Formulario de Contacto</title>
  8. </head>
  9. <body >
  10. <form action="contact.php" method="post" accept-charset="utf-8" id="form_contact">     
  11.     <div>
  12.         <label for="fld_name"><span>Nombre</span></label>
  13.         <input type="text" name="name" id="fld_name" value='' />
  14.     </div>
  15.    
  16.     <div>
  17.         <label for="fld_pet"><span>Apellido</span></label>
  18.         <input type="text" name="lastname" id="fld_pet" value='' />
  19.     </div>
  20.    
  21.     <div>
  22.         <label for="fld_email"><span>Correo</span></label>
  23.         <input type="text" name="email" id="fld_email" value='' />
  24.     </div>
  25.     <div>
  26.         <label for="fld_msg"><span>Mensaje</span></label>
  27.         <textarea name="msg" id="fld_msg" cols="20" rows="8"></textarea>
  28.     </div>
  29.                    
  30.     <div id="submit"><input type="submit" value="Enviar" /></div>
  31. </form>
  32. </body>
  33. </html>


Contact.php
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Contacto</title>
  6. </head>
  7.  
  8. <body>
  9. <?php
  10. $name = $_POST['name'];
  11. $email = $_POST['email'];
  12. $lastname = $_POST['lastname'];
  13.  
  14. $header = 'From: ' . $email . " \r\n";
  15. $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  16. $header .= "Mime-Version: 1.0 \r\n";
  17. $header .= "Content-Type: text/plain";
  18.  
  19. $msg = "Este mensaje fue enviado por " . $name . ", Apellido " . $lastname . " \r\n";
  20. $msg .= "Su e-mail es: " . $email . " \r\n";
  21. $msg .= "Mensaje: " . $_POST['msg'] . " \r\n";
  22. $msg .= "Enviado el " . date('d/m/Y', time());
  23.  
  24. $asunto = 'Contacto desde Taller Webmaster';
  25.  
  26. mail($para, $asunto, utf8_decode($msg), $header);
  27.  
  28. echo '&estatus=ok&';
  29.  
  30. ?>
  31. </body>
  32. </html>

Ejecuto en internet explorer escribiendo: https://localhost/contact.html

Aparece bien el formulario, lo relleno y doy a enviar, pero aparece este error:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\contact.php on line 27
&estatus=ok&


Como no estoy puesto mucho en php....no tengo ni idea de que falla, que puedo mejorar o que debo cambiar....
El host y el dominio los va a pillar con cdmon, pero aun queda un tiempo para eso.

Alguien me ayuda...?

Gracias.

Última edición por er_rusty; 12/09/2010 a las 07:15
  #2 (permalink)  
Antiguo 12/09/2010, 10:14
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Formulario de contacto...

Pues lo más probable es que no tengas instalado un servidor SMTP, que es el que te permite enviar correos desde tu máquina. Tendrías que buscar alguno, y configurar tu php.ini de a cuerdo al server smtp.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 13/09/2010, 15:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Formulario de contacto...

Bueno, tras corregir el error anterior, usando un servidor de SMTP, ya me envía bien los correos mi formulario!!! Pero ahora me surgen dos dudas:
1.- Como consigo que una vez enviado el formulario aparezca un mensaje de GRACIAS POR RELLENAR EL FORMULARIO y a continuación se vaya solo a la pagina principal (index.html)?????
2.- Como hago para que sea obligatorio rellenar todos los campos???

Pongo el codigo de los dos archivos a continuación.

Contact.html
Código HTML:
Ver original
  1. <?xml version="1.0" encoding="utf-8" ?>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
  5.  
  6.     <!-- BEGIN META -->
  7. <title>Formulario de Contacto</title>
  8. </head>
  9. <body >
  10. <form action="contact.php" method="post" accept-charset="utf-8" id="form_contact">     
  11.     <div>
  12.         <label for="fld_name"><span>Nombre</span></label>
  13.         <input type="text" name="name" id="fld_name" value='' />
  14.     </div>
  15.    
  16.     <div>
  17.         <label for="fld_pet"><span>Apellido</span></label>
  18.         <input type="text" name="lastname" id="fld_pet" value='' />
  19.     </div>
  20.    
  21.     <div>
  22.         <label for="fld_email"><span>Correo</span></label>
  23.         <input type="text" name="email" id="fld_email" value='' />
  24.     </div>
  25.     <div>
  26.         <label for="fld_msg"><span>Mensaje</span></label>
  27.         <textarea name="msg" id="fld_msg" cols="20" rows="8"></textarea>
  28.     </div>
  29.                    
  30.     <div id="submit"><input type="submit" value="Enviar" /></div>
  31. </form>
  32. </body>
  33. </html>

Contact.php
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Contacto</title>
  6. </head>
  7.  
  8. <body>
  9. <?php
  10. $name = $_POST['name'];
  11. $email = $_POST['email'];
  12. $lastname = $_POST['lastname'];
  13.  
  14. $header = 'From: ' . $email . " \r\n";
  15. $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  16. $header .= "Mime-Version: 1.0 \r\n";
  17. $header .= "Content-Type: text/plain";
  18.  
  19. $msg = "Este mensaje fue enviado por " . $name . ", Apellido " . $lastname . " \r\n";
  20. $msg .= "Su e-mail es: " . $email . " \r\n";
  21. $msg .= "Mensaje: " . $_POST['msg'] . " \r\n";
  22. $msg .= "Enviado el " . date('d/m/Y', time());
  23.  
  24. $asunto = 'Desde tu web de contacto';
  25.  
  26. mail($para, $asunto, utf8_decode($msg), $header);
  27.  
  28. echo '&estatus=ok&';
  29.  
  30. ?>
  31. </body>
  32. </html>

Ahora cuando envía el formulario solo aparece &estatus=ok&..... y además si le das a enviar cuando está vacio no da ningun error y manda un mail sin informacion.

Agradecería cualquier ayuda!!

Gracias!!
  #4 (permalink)  
Antiguo 13/09/2010, 18:55
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Formulario de contacto...

Bueno, para comprobar que el campo no esté vacío, puedes usar algo como esto :

Código PHP:
Ver original
  1. if(empty($_POST['nombre_del_campo'])) {
  2.       echo 'Debes rellenar este campo';
  3. }

Con respecto al mensaje, tendrías que comprobar que todos los campos hayan sido rellenados correctamente, y luego mostrar el mensaje. Las 2 preguntas están relacionadas entre sí. Si resuelves una, debería ser fácil resolver la otra.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 14/09/2010, 00:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Formulario de contacto...

Cita:
Iniciado por spider_boy Ver Mensaje
Bueno, para comprobar que el campo no esté vacío, puedes usar algo como esto :

Código PHP:
Ver original
  1. if(empty($_POST['nombre_del_campo'])) {
  2.       echo 'Debes rellenar este campo';
  3. }

Con respecto al mensaje, tendrías que comprobar que todos los campos hayan sido rellenados correctamente, y luego mostrar el mensaje. Las 2 preguntas están relacionadas entre sí. Si resuelves una, debería ser fácil resolver la otra.
Gracias, probare lo que me has dicho para cada uno de los campos.
Pero la primera pregunta era diferente, es decir, una vez que se haya rellenado todo el formulario bien, y se le de a enviar...como consigo que se redirija la web a la index.html?? pq me dicen de usar header(location:index.html) pero me da un error.
  #6 (permalink)  
Antiguo 14/09/2010, 01:11
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Formulario de contacto...

Cita:
Iniciado por er_rusty Ver Mensaje
Gracias, probare lo que me has dicho para cada uno de los campos.
Pero la primera pregunta era diferente, es decir, una vez que se haya rellenado todo el formulario bien, y se le de a enviar...como consigo que se redirija la web a la index.html?? pq me dicen de usar header(location:index.html) pero me da un error.
sería genial saber cual error te da....

revisa que no estes haciendo echos antes del header, si persiste revisa esto
si no puedes evitar esas impresiones, usa javascript (location.href)

para la validación del formulario, puedes también usar javascript
para que se valide también antes del envio incluso

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 14/09/2010, 04:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Formulario de contacto...

Gracias por tu respuesta.
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\contact.php:10) in C:\xampp\htdocs\contact.php on line 35

Siendo la linea 35 la siguiente a la funcion mail, donde he puesto:

Header ("Location: index.html");



Respecto a lo que quiero hacer es lo siguiente:
1.- Cuando la persona esté rellenando el formulario, cuando le de a enviaar, en caso de haber dejado algun campo en blanco, le salte una ventanita, supongo que javascript, diciendo que debe rellenarlo, la persona pulse aceptar y pueda seguir rellenando, pero sin moverse de la pagina del formulario, no se si me explico.

2.- Una vez todo rellenado bien, le da a enviar, se ejecuta el script php que envia la informacion, y me gustaria que apareciese un mensaje de GRACIAS y directamente se redirigiese a la web ppal, index.html. Esas dos cosas me estan mareando un poco pq no se en que parte del codigo debo meter la informacion.

Por favor, si alguien sabe como hacerlo, me vendría bien cualkier minima ayuda. Sobre todo lo segundo, redireccionar a la ppal, tras un GRACIAS.

GRACIAS!!!

Última edición por er_rusty; 14/09/2010 a las 07:08
  #8 (permalink)  
Antiguo 14/09/2010, 09:42
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Formulario de contacto...

Cita:
Iniciado por er_rusty Ver Mensaje
Gracias por tu respuesta.
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\contact.php:10) in C:\xampp\htdocs\contact.php on line 35

Siendo la linea 35 la siguiente a la funcion mail, donde he puesto:

Header ("Location: index.html");

Bueno, ya te dije que revisaras salidas (si tienes algún echo antes del header ponlo en comentario y prueba de nuevo), revisaste el link que te pase antes??


Respecto a lo que quiero hacer es lo siguiente:
1.- Cuando la persona esté rellenando el formulario, cuando le de a enviaar, en caso de haber dejado algun campo en blanco, le salte una ventanita, supongo que javascript, diciendo que debe rellenarlo, la persona pulse aceptar y pueda seguir rellenando, pero sin moverse de la pagina del formulario, no se si me explico.

Si te explicas, y supones bien es javascript lo que necesitas,
pasate por el foro javascript, allá tienen buenos aportes al respecto,
o busca sobre validación formularios con javascript en la web


2.- Una vez todo rellenado bien, le da a enviar, se ejecuta el script php que envia la informacion, y me gustaria que apareciese un mensaje de GRACIAS y directamente se redirigiese a la web ppal, index.html. Esas dos cosas me estan mareando un poco pq no se en que parte del codigo debo meter la informacion.

Bueno, pues ya te mencione que si tienes un echo "gracias"; y lueago el header(); esto es un inconveniente pues no puede haber echos antes de header

así el asunto, podrías de nuevo usar javascript, en donde antes del header incluyas un script de javascript, donde lances un alert con el texto gracias

algo así
Ejemplo:

Código PHP:
Ver original
  1. <?php
  2. //se hace toda la lógica, luego se agrega el alert
  3. if( $insertar )
  4. {
  5. ?>
  6. <script language='javascript'>alert('Gracias');</script>
  7. <?php
  8. header('location:index.html');
  9. }
  10. ?>

y si persiste el inconveniente con header, entonces quita el header y redirecciona con javascript también usando location.href='index.html';

Por favor, si alguien sabe como hacerlo, me vendría bien cualkier minima ayuda. Sobre todo lo segundo, redireccionar a la ppal, tras un GRACIAS.

GRACIAS!!!

espero te sirva, saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 14/09/2010, 11:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Formulario de contacto...

Muchísimas gracias mortiprogramador!!!
Al final mas o menos he conseguido que todo funciones, es decir, respecto a la validación he conseguido que me valide si el mail esta metido y si este tiene una sintaxis adecuada con su @ y un punto(.).
Aun tengo que estudiar que me valide el resto de los campos, pero eso me importa menos.

Respecto a que me redireccione a laweb principal, al final lo hive como decias todo con javascript, puse esto:

<?php
//todo el rollo
?>
<script language='javascript'>alert('Gracias por rellenar el formulario, atenderemos tu consulta lo antes posible');
</script>
<script language='javascript'>location.href='index.html';
</script>

</body>
</html>

Y perfecto!

Saludos

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 06:19.