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 gente, tengo un problema con un formulario de contacto PHP vinculado a una pag. en HTML. El formulario funciona de maravilla pero al clikear ...
  #1 (permalink)  
Antiguo 19/01/2010, 13:36
 
Fecha de Ingreso: septiembre-2008
Ubicación: Argentina
Mensajes: 163
Antigüedad: 11 años, 4 meses
Puntos: 1
Pregunta Formulario de Contacto

Hola gente, tengo un problema con un formulario de contacto PHP vinculado a una pag. en HTML.

El formulario funciona de maravilla pero al clikear el botón de enviar este abre una nueva pag en blanco, esto lo hace para confirmar que se ha enviado correctamente, pero yo quisiera saber como puedo colocar que se ha enviado correctamente dentro de la misma pag. de contacto de mi web.

Este es el código del formulario:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?
$nombre = $_POST['nombre'];
$mail = $_POST['mail'];
$empresa = $_POST['empresa'];
$telefono = $_POST['telefono'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " \r\n";
$mensaje .= "Su teléfono es: " . $telefono . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';


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

echo "Mensaje enviado correctamente";
?>

</body>
</html>

Gracias x la ayuda...
  #2 (permalink)  
Antiguo 19/01/2010, 13:43
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 10 años
Puntos: 5
Respuesta: Formulario de Contacto

No veo ningun error en tu codigo... incluso lo ejecuté en mi server y no mandó ningun error
  #3 (permalink)  
Antiguo 19/01/2010, 16:41
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 10 años, 1 mes
Puntos: 16
Respuesta: Formulario de Contacto

Puedes colocar el código de envío del formulario en el mismo archivo donde tienes el formulario, y controlar con un if(isset($_POST)) si debes mostrar el formulario o ejecutar el código de envío y mostrar el resultado del envío.

Además, un consejo. Cuando muestras que el mensaje se ha enviado no realizas ninguna comprovación de que la función mail se ha ejecutado correctamente. Te recomiendo hacerlo de esta forma:

Código PHP:
$res mail($para$asuntoutf8_decode($mensaje), $header);

if (
$res){
    echo 
"Mensaje enviado correctamente";
}
else{
    echo 
"Error enviando el mensaje";

  #4 (permalink)  
Antiguo 20/01/2010, 16:59
 
Fecha de Ingreso: septiembre-2008
Ubicación: Argentina
Mensajes: 163
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Formulario de Contacto

Hola chicos, gracias por su ayuda, olvide decirles q soy diseñador y no entiendo mucho de PHP, solo lo puedo llegar a manipular. Y si, funciona pero me gustaría que el mensaje de que se ha enviado correctamente lo coloque sin abrir una nueva pag.

gracias.
  #5 (permalink)  
Antiguo 20/01/2010, 17:22
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 11 años, 6 meses
Puntos: 105
Respuesta: Formulario de Contacto

el vinculo del boton cambialo por la misma pagina (para que se envie el correo desde la misma pagina y aparesca el mensaje ahi mismo) y agrega este codigo en la misma:

Código PHP:
Ver original
  1. <?php
  2. $msg = "";
  3. if(isset($_POST['nombre'])){
  4.  
  5. $nombre = $_POST['nombre'];
  6. $mail = $_POST['mail'];
  7. $empresa = $_POST['empresa'];
  8. $telefono = $_POST['telefono'];
  9.  
  10. $header = 'From: ' . $mail . " \r\n";
  11. $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  12. $header .= "Mime-Version: 1.0 \r\n";
  13. $header .= "Content-Type: text/plain";
  14.  
  15. $mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " \r\n";
  16. $mensaje .= "Su teléfono es: " . $telefono . " \r\n";
  17. $mensaje .= "Su e-mail es: " . $mail . " \r\n";
  18. $mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
  19. $mensaje .= "Enviado el " . date('d/m/Y', time());
  20.  
  21. //no veo donde declaraste $asunto... asi que aqui te lo pongo... modificalo
  22. $asunto = 'asunto.....';
  23.  
  24. mail($para, $asunto, utf8_decode($mensaje), $header);
  25.  
  26. $msg = "Mensaje enviado correctamente";
  27.  
  28. }
  29. ?>

y por ultimo coloca este codigo donde deseas que aparesca el mensaje al enviar el formulario:
Código PHP:
Ver original
  1. <?php if(isset($msg)) echo $msg; ?>

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 20/01/2010, 19:10
 
Fecha de Ingreso: septiembre-2008
Ubicación: Argentina
Mensajes: 163
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Formulario de Contacto

Hola, muchisimas gracias por tu ayuda hermano!!! en ambos post ejejjeej.

Mira no tiene ningun vinculo el boton, es un boton insertado de Dreamweaver, te pongo el código q tiene por las dudas:

<input name="button" type="submit" class="Estilo1" id="button" value="Enviar" />

No se porque al clikear enviar abre una venta en blanco.. haaaaaa y la ventana la abre sobre la anterior, sería como si estuviera seteada en Blank. La verdad no se que mas hacer
  #7 (permalink)  
Antiguo 21/01/2010, 07:46
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 11 años, 6 meses
Puntos: 105
Respuesta: Formulario de Contacto

si no tiene link..... es por que es un input de tipo submit... es decir el vinculo es el action del formulario.... lo que debes hacer es lo siguiente:

actualmente deberias tener algo asi:
Código HTML:
Ver original
  1. <form name="nombre" action="pagina_en_blanco.php" method="post" target="blank">
entonces cambialo por lo siguiente:
Código HTML:
Ver original
  1. <form name="nombre" method="post">

es decir, no le des ningun action para que llame a la misma pagina..... y en mi post anterior ya te indique donde y cual codigo poner.

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #8 (permalink)  
Antiguo 10/07/2010, 06:06
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Formulario de Contacto

Tengo un problema urgente y no se como solucionarlo
Hola, mirando foros con problemas de formularios vi uno con respuestas tuyas, necesitaria que me ayudaras, es algo urgente que tengo que presentar y no se que es lo que estoy haciendo mal, por un lado en una pagina html tengo el formulario y dentro un javasrcipt para validar campos y en la parte del formulario en action=”php/processform2.php” lo linkeo a una pagina php, antes me enviaba las cosas y me ponia todos los datos, ahora no se que pasa, ademas necesitaria saber como puedo poner lo del mensaje enviado pero que no me saliera en la misma pagina en blanco si no que pudiera verse dentro del html. te mando mi codigo y estoy muy agredecida si puedes ayudarme, no tengo mucha idea.

Html:
el scrip que lo engo entre los head:


<script language="JavaScript" type="text/JavaScript">
function MM_validateForm() { //v4.0
if (document.getElementById){
var i,p,q,nm,test,num,min,max,errors='',args=MM_valida teForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe contener una dirección de email válida.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' debe contener un número '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' es obligatorio.\n'; }
} if (errors) alert('Error(es) en el formulario:\n'+errors);
document.MM_returnValue = (errors == '');
} }
</script>

Después: formulario en la misma pagina html

<form id="contactform" action="php/processform2.php" method="post" enctype="multipart/form-data" class="contact">

<p>
<label for="name">*Nombre</label>
<input type="text" name="Nombre" id="name" />
</p>
<p>
<label for="apellidos">*Apellidos</label>
<input type="text" name="Apellidos" id="apellidos" />
</p>

<p>
<label for="direccion">Dirección</label>
<input type="text" name="Dirección" id="direccion" />
</p>
<p>
<label for="ciudad">Ciudad</label>
<input type="text" name="Ciudad" id="ciudad" />
</p>

<p>
<label for="pais">País</label>
<input type="text" name="País" id="pais" />
</p>

<p>
<label for="telefono">*Teléfono de Contacto</label>
<input type="text" name="Teléfono" id="telefono" />
</p>
<p>
<label for="email">*Email</label>
<input type="text" name="Email" id="email" />
</p>
<p>
<label for="message">*Comentarios</label>
<textarea name="Comentario" id="message" rows="6" cols="25"></textarea>
</p>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy.
</p>
<p>
<input type="submit" name="submit" value="Enviar &raquo;" id="submit" onClick="MM_validateForm('name','','R','apellidos' ,'','R','telefono','','RisNum','email','','RisEmai l','message','','R');return document.MM_returnValue" />
<input type="reset" value="borrar" />
</p>
</form>


y ahora te paso el php al que hago referencia:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php
$msg = "";
if(isset($_POST['name'])){

$nombre = $_POST['name'];
$apellidos = $_POST['apellidos'];
$direccion = $_POST['direccion'];
$ciudad = $_POST['ciudad'];
$pais = $_POST['pais'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$message = $_POST['message'];

$header = 'From: ' . $email . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . " " . $apellidos . " \r\n";
$mensaje .= "Dirección: " . $direccion . " \r\n";
$mensaje .= "Ciudad: " . $ciudad . " \r\n";
$mensaje .= "País: " . $pais . " \r\n";
$mensaje .= "Su teléfono es: " . $telefono . " \r\n";
$mensaje .= "Su e-mail es: " . $email . " \r\n";
$mensaje .= "Mensaje: " . $_POST['message'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';

$asunto = 'Formulario de Contacto SIT';

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

$msg = "Mensaje enviado correctamente";

}
?>
</body>
</html>

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 18:14.