Foros del Web » Programando para Internet » PHP »

Formulario de contacto en php

Estas en el tema de Formulario de contacto en php en el foro de PHP en Foros del Web. Hola, soy nuevo en php y estoy perdido, quiero hacer un formulario en php donde cuando el usuario rellene los datos, sean enviados a mi ...
  #1 (permalink)  
Antiguo 18/10/2003, 15:10
 
Fecha de Ingreso: febrero-2003
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 0
Formulario de contacto en php

Hola, soy nuevo en php y estoy perdido, quiero hacer un formulario en php donde cuando el usuario rellene los datos, sean enviados a mi buzon de correo y al usuario le ponga una pagina que diga Gracias sr/a Perez (por ejemplo) se han enviado los datos correctamente, he logrado hacer lo de que salga gracias... y tal, pero los datos no se envian a mi correo, por que no se como hacer para enviarlos. Alguien me puede ayudar?

Gracias y saludos
  #2 (permalink)  
Antiguo 18/10/2003, 16:05
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Pues...

Colocas en tu page el formulario asi:

Código PHP:
<form method="post" action="enviar.php">
  <
input type="text" name="nombre">
  <
input type="text" name="email">
  <
input type="submit" name="Submit" value="Enviar">
</
form
Luego te haces un script llamado enviar.php y colocas:

Código PHP:
$admin "tumail@tucompañia.com";
$mensaje "El usuario se llama $_POST[nombre] y su mail es $_POST[email]";
mail($admin,"Datos usuario",$mensaje);
echo 
"Gracias $_POST[nombre] sus datos se han enviado correctamente"
Eso es todo. Puedes obtener más info sobre la función mail() en http://www.php.net/manual/es/function.mail.php

Saludos !
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #3 (permalink)  
Antiguo 18/10/2003, 20:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
drcyber

OJO!!!! con esos "echo" (mostrar un mensaje) en la misma página de proceso (en este caso de enviar un e-mail) al finalizar tu proceso.

Si recargas la página .. tu navegador te va a solicitar enviar denuevo los datos del formulario .. si das al "OK" .. vas a produción que se procese denuevo esa página que contiene tu sentencia de mail() .. osease, se va a enviar un e-mail nuevo .. y así hasta que se aburra el usuario de recargar la página (lo mismo ocurriria y pero con "BD" ocasionando (normalmente) registros duplicados a cada recarga de la página).

Para solventar ese problema .. tras finalizar el proceso es NECESARIO salir de ese script redireccionando a otro sitio (o a si mismo .. pero redirecconando ..)

En este caso particular .. deberías tener una página de "gracias.html" por ejemplo y al terminar tu proceso de enviar el e-mail .. redireccionar automáticamente a esa página .. ejemplo:

Código PHP:
if (mail(....)){
header("location: gracias.html");
exit;
} else{
header("location: error.html");
exit;

si se dan cuenta .. uso otra página "error.html" para mostrar errores si los hay (por ejemplo si no se pudo enviar el email ya que mail() devuelve true si lo envió y false si no lo envio .. (si por lo menos pudo conectar al MTA que use mail() .. no de que si llegó a su destinatario .. eso no lo puede controlar mail() ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 19/10/2003, 02:36
 
Fecha de Ingreso: febrero-2003
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola, lo que quiero no es exactamente eso, si hago eso, cuando el usuario de a enviar, va a pedir que se envie por su correo electronico, o sea que tiene que tener outlook configurado, pero yo quiero que cuando le de a enviar, se envie, no que sea a traves de la cuenta del usuario, me entendeis?

Saludos
  #5 (permalink)  
Antiguo 19/10/2003, 12:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
movisoft .. Realmente no probastes el script y no te informastes de que hace la función mail() de PHP ...


Acaso ves por algún sitio un <form action="mailto:[email protected]" ...> ?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 19/10/2003, 13:09
 
Fecha de Ingreso: febrero-2003
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola Cluster, siento haber creido que era un mailto asi que perdon, lo he probado y genial, muchas gracias a la otra persona tambien, lo que si es que no entiendo muy bien tu script con el if
se refiere a que si el email esta vacio da un mensaje de error y si no esta vacio va a la pagina de gracias?

Saludos
  #7 (permalink)  
Antiguo 19/10/2003, 14:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
movisoft ..

Si revisas la documentación oficial de mail() (función) en el manual de php:

www.php.net/mail

Veras que mail() al ejecutarlo devuelve un "TRUE" si consiguió enviar el e-mail (mejor dicho si lo "entregó" al MTA que haga en envio en sí del e-mail (al servidor de mail que corra y esté configurado PHP para usar)) .. si no pudo entregar el e-mail .. dará un FALSE .. Por eso si lo usas en un condicional (IF) puedes hacer lo que puse; si se envia correctamente .. se manda a una página de "grácias" .. y si no se puedo enviar se manda a una página de "error" donde mostraras tu mensajito acorde a lo que corresponda.

Y .. lo que comentaba sobre el código de drcyber .. lo puedes probar u mismo movisoft .. Recarga la página enviar.php donde te dice "Grácias .. sus datos han sido enviados .. ba blabla" .. y .. chekea tu e-mail .. Observa que se envian tantos e-mail iguales como veces recargaste la página ... Y eso sucede por lo que expliqué anteriormente, dando la solución a este problema como también mencioné.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 19/10/2003, 21:23
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Cierto Cluster, aunque solo era un código sencillo para darle una idea al chico sobre el tema. Gracias por la aclaratoria.

Cita:
Mensaje Original por Cluster

Acaso ves por algún sitio un <form action="mailto:[email protected]" ...> ?

JAJAJAJAJA !!! Que odioso !!! JAJAJAJAJA !!!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #9 (permalink)  
Antiguo 19/10/2003, 21:47
 
Fecha de Ingreso: octubre-2003
Mensajes: 32
Antigüedad: 20 años, 6 meses
Puntos: 0
Cuidado con dejar las 'textarea's' sin limite (me refiero a que usen MAXLENGTH=" ") y pasar las variables sin comprobar.

Podrian utilizar algo como:
Código PHP:
<?php

$longitud 
strlen($comentario);
$longitud_max "300"// Maximo numero de caracterez para el mensaje.
if ($longitud $longitud_max) {
echo 
"error!";
exit;
}
Así se aseguran que no les saturen o 'bombardeen' el correo.


amhyd

Última edición por amhyd; 19/10/2003 a las 21:48
  #10 (permalink)  
Antiguo 20/10/2003, 00:20
 
Fecha de Ingreso: febrero-2003
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola, como puedo poner un mensaje en php? me refiero a que cuando se ejecute ese codigo salte una ventanita diciendo tal tal tal. es que lo que quiero es hacer un if para que compruebe si los caracteres son correctos o por ejemplo en el email ha escrito la @ por ejemplo me entendeis?

Saludos
  #11 (permalink)  
Antiguo 20/10/2003, 06:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
movisoft ..

LEE urgentemente las FAQ's de este foro .. Y sobre todo lee tutoriales de PHP y ves familiarizandote con PHP. (y si no estás al tanto de programación básica .. también te recomiendo otros tutoriales).

También debes pasarte por www.php.net/manual/es y empezar a ver de que funciones dispones en PHP .. por ejemplo para tratar cadenas (strings) ...

En fin .. que te documentes un poco y sobre todo que leas las recomendaciones que se te van dando en las respuestas a tus preguntas .. Siempre preguntas algo --> se te dan respuestas --> nunca alclaras si te sirvió o no y .. luego formulas más preguntas en el mismo mensaje.

Y usa el buscador del foro .. tienes mil mensajes sobre formularios de envio de e-mail .. tambien otros tantos sobre validación en general .. y como decia las FAQ's también para que leas más de un tutorial.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 20/11/2003, 06:47
Avatar de hermetika  
Fecha de Ingreso: septiembre-2003
Ubicación: Barcelona
Mensajes: 43
Antigüedad: 20 años, 6 meses
Puntos: 0
me da un mensaje :

Warning: Cannot modify header information - headers already sent by (output started at ...

Qué pasa ?
  #13 (permalink)  
Antiguo 21/11/2003, 19:09
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
hemetica: Para poder saber qué pasa justamente tienes que postear lo que sigue en ese mensaje de error.
Lo que está pasando es que las cabeceras no se pueden enviar o modificar si es que ya se ha escrito algo en la página (HTML, JavaScript, etc... incluso algún espacio en blanco).
En el mensaje que te sale, seguramente hay dos líneas de error (¿?)... Una te dice la línea que ha enviado código HTML y otra la línea desde donde se intenta enviar la cabecera...
Si tienes problemas postea el mensaje de error completo y el código que hay en esas líneas de error que te muestre.

Saludos
  #14 (permalink)  
Antiguo 22/11/2003, 04:18
 
Fecha de Ingreso: febrero-2003
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola, alguien me puede mostrar un ejemplo de como hacer que cuando un usuario no ponga nada en mi formulario o que ponga algo mal salga un mensaje diciendo te falta la arroba del email por ejemplo, o no has rellenado el campo nombre, es que he estado buscando y nada.

Saludos
  #15 (permalink)  
Antiguo 22/11/2003, 05:38
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Hola, mira las faq's hay sale un script para validar emails, fijate. Y para cuando un campo va sin rellenar esto:

Código PHP:
if ($nombre == "")
{
echo 
"Es campo nombre va sin rellenar";

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #16 (permalink)  
Antiguo 23/11/2003, 16:02
 
Fecha de Ingreso: febrero-2003
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola a todos, gracias por vuestras respuestas, me estan ayudando pero, estoy hecho un lio, soy nuevo en esto de php y me estoy comiendo el tarro, os explico mi problema:
Tengo un formulario normal y corriente hecho en html donde tengo esta linea
<form name="form1" method="post" action="respuesta.php">
Entonces va a la pagina respuesta.php y ahí envia el email y pone gracias por tu respuesta y tal...
Entonces yo quiero hacer que cuando el usuario meta un campo vacio o no ponga nada etc etc salga un mensaje diciendo "tienes que poner algo" lo que pasa es que tiene que ser en la pagina primera no? donde esta el formulario. Entonces lo que quiero saber es como crear el informe de errores y tal y cuando le des a enviar, envie los datos a la pagina respueta.php y ahi lo envie, claro antes ha pasado por el control ese en la pagina del formulario, y la cosa es como hago eso de los mensajes y una vez que lo haya hecho vaya a la pagina respuesta.php para enviarse. ¿Sabeis como?

Muchas gracias amigos
  #17 (permalink)  
Antiguo 23/11/2003, 20:07
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
movisoft:
Si lo que quieres es que salte una ventanita, entonces debes resolver el problema con JavaScript... Busca en el foro de JavaScript. Para validar un campo de formulario tienes un ejemplo en:
http://www.desarrolloweb.com/articulos/707.php
No es exactamente lo que quieres, pero te puede ayudar a orientarte... eso sí... hay que estudiar y leer...
La función de JavaScript para que salte la ventanita es alert("Mensaje que uqires que salga").... pero como te digo, busca en el foro de JavaScript...
Saludos
  #18 (permalink)  
Antiguo 24/11/2003, 01:46
 
Fecha de Ingreso: febrero-2003
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 0
no no, lo que yo quiero es un mensaje, no una ventanita, un mensaje normal y corriente, al llamar ventanita me referia al mensaje que se acepta sabes... un echo, creo que es el comando para el mensaje.

Saludos
  #19 (permalink)  
Antiguo 12/12/2003, 18:51
 
Fecha de Ingreso: diciembre-2002
Ubicación: Toledo
Mensajes: 27
Antigüedad: 21 años, 3 meses
Puntos: 0
Sonrisa Validación del campo de correo electrónico

Para asegurarnos de que una direccion de correo electronico es correcta, nada mejor que hacer uso de expesiones regulares.

Tomando la cadena de texto $email , que es donde un usuario ha incluido su dirección de correo electrónico, aplicaremos este código.

Código PHP:
if (!eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$"$email))
{
echo
"<font color=red><b>La dirección de correo electrónico no es válida.</b></font>";
exit;

De este modo nos aseguramos que el correo electronico es del tipo de formato correcto.

Espero que sea de tu ayuda movisoft
  #20 (permalink)  
Antiguo 18/12/2003, 15:44
Avatar de tork  
Fecha de Ingreso: noviembre-2003
Ubicación: Veracruz
Mensajes: 153
Antigüedad: 20 años, 5 meses
Puntos: 0
Lo que no entiendo todavia, es como hacer para que mande el formulario a mi correo, por que yo estoy poniendo el siguiente codigo, y cuando le pongo enviar, me abre un mensaje que dice que si se desea guardar...no manda el correo solo abre ese mensaje...el codigo es el siguiente:

mail.php
-------------------
$admin = "[email protected]";
$mensaje = "El usuario se llama $_POST[nombre] y su mail es $_POST[email]";
mail($admin,"Datos usuario",$mensaje);
echo "Gracias $_POST[nombre] sus datos se han enviado correctamente";
gracias por
---------------
contacto.htm
----------------
<html>
<head>
<title>TU PAGINA</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="post" action="mail.php">
<input type="text" name="nombre">
<input type="text" name="email">
<input type="submit" name="Submit" value="Enviar">
</form>

¡¡¡¡¡¡¡¡¡¡¡¡gracias de antemano!!!!!!!!!!!!!!!
__________________
... www.kaomix.com ... :aplauso:
kao0 power
  #21 (permalink)  
Antiguo 18/12/2003, 16:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El código de mail.php debe estar entre:

Código PHP:
<?
// código
?>
par que sepa tu servidor HTTP que es código PHP a ejecutar . .Y por supuesto que en tu servidor uses PHP.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #22 (permalink)  
Antiguo 18/12/2003, 16:43
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
Tu host soporta php

Antes que nada verifica si tu host soporta php
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #23 (permalink)  
Antiguo 28/10/2004, 18:42
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago, Chile
Mensajes: 92
Antigüedad: 19 años, 5 meses
Puntos: 0
Hola, saludos a todos
Al igual que el posteador de este tema, yo no soy experto en php, he seguido los pasos para hacer el formulario de contacto, pero algo me sale mal.

bueno, el form lo tengo metido en una pagina php, creo que eso no tiene problemas, miren:

Código PHP:
 " <td background=\"file:///E|/web/nukepc73/html/themes/GameBOX2004v2_1/images/fondo_colabora_portada.gif\">"
  
  
 
."<form method=\"post\" action=\"recomendar.php\"> "
 
." Tu nombre:"
  
."<input type=\"text\" name=\"nombre\" size=\"13\" maxlength=\"25\"> <br>"
  
." Tu correo:"
  
."<input type=\"text\" name=\"email\" size=\"15\" maxlength=\"25\"> "
 
." <input type=\"submit\" name=\"Submit\" value=\"Enviar\"> "
."</form> "

  
."</td>" 

Ahora la pagina php que hice para mandar el contacto es:

Código PHP:

<?php
$admin 
"[email protected]"
$mensaje "El usuario se llama $_POST[nombre] y su mail es $_POST[email]"
mail($admin,"Datos usuario"$mensaje); 
echo 
"Gracias $_POST[nombre] sus datos se han enviado correctamente"

?>

Cuando prueba para ver que ocurre, me aprece que lo siguiente:
Warning: Failed to Receive in e:\web\nukepc73\html\recomendar.php on line 4
Gracias gdkjsd sus datos se han enviado correctamente


La linea 4 es mail($admin,"Datos usuario", $mensaje);

Ojalá alguien me ayude.
Además lo que quisiera hacer (una vez que me funcione), es si el correo se envió correctamente o hay un error lo que sea, se abra un popup que diga si hay error o se envio ok. y permnezca en la pagina principal.

Saludos, ojalá nos sea muy dificil esto que pido.
CHAO
__________________
Necesito Colaboradores :arriba:
Siempre aprendiendo algo :pensando:
www.gamebox.cl

Última edición por granunca; 28/10/2004 a las 20:33
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:07.