Foros del Web » Programando para Internet » PHP »

formulario html +php

Estas en el tema de formulario html +php en el foro de PHP en Foros del Web. Hola antes que nada comentar que soy nueva en esto (tanto en php como en el foro) Estoy intentando hacer un formulario y enviarlo a ...
  #1 (permalink)  
Antiguo 27/09/2010, 07:02
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
formulario html +php

Hola
antes que nada comentar que soy nueva en esto (tanto en php como en el foro)
Estoy intentando hacer un formulario y enviarlo a través de php pero no se lo que me falla... Si alguien me pudiera echar una mano... Este es el código q estoy usando:

formulario.html


<head>
<title>Formulario</title>
</head>

<body>

<div id="apDiv4">
<form action="enviar.php" method="post">
<div class="txt_basic" >Nombre</div>
<div><input name="nombre" type="text" id="caja" size="40">
<br />
<br />
</div>
<div class="txt_basic">E-mail</div>
<div><input name="email" type="text" id="caja" size="40">
<br />
<br />
</div>
<div class="txt_basic">Teléfono</div>
<div><input name="telefono" type="text" id="caja" size="40">
<br />
<br />
</div>
<div class="txt_basic">Comentarios</div>
<div><TEXTAREA name="comentarios" cols="38" rows="5" id="area"></TEXTAREA>
<br />
<br />
</div>
<div style="width:300px;text-align:right;padding-top:5px;"><table border="0" cellspacing="0" cellpadding="0" align="right"><tr><td style="padding-right:115px;">&nbsp;</td><td><input name="action" type="hidden" value="send"><input id="boton" name="enviar" type="submit" onClick="alerta()" value="ENVIAR"></td></tr></table></div>
</form>
</body>
</html>


enviar.php

<?
extract($_GET);
extract($_POST,EXTR_SKIP);
header("Location:contacto.html");
if (isset($_POST['action'])) {
// Aqui se fija la dirección de destino
$dest = "[email protected]";
$head = "From: ".$_POST['email']."\r\n";
// Aqui se crea el cuerpo del mensaje
$msg.= "NOMBRE: ".$_POST['nombre']."\n";
$msg.= "EMAIL: ".$_POST['email']."\n";
$msg.= "TELEFONO: ".$_POST['telefono']."\n";
$msg.= "HORA: ".date("h:i:s a ")."\n";
$msg.= "FECHA: ".date("d M Y")."\n";
$msg.= "------------------------------- \n\n";
$msg.= $_POST['comentarios']."\n\n";
$msg.= "------------------------------- \n";

// Finalmente enviamos el mensaje con esta funcion
mail($dest, "de:miweb.com", $msg, $head);

}
?>


Mil gracias!!
  #2 (permalink)  
Antiguo 27/09/2010, 07:27
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: formulario html +php

Hola cca83 bienvenida al foro entonces :)

Estas son cosas muy sencillas que tendrías que intentar depurar por vos misma, pasan mucho todo el tiempo. Con un simple
Código PHP:
Ver original
  1. echo "<pre>";var_dump($_POST);
podrías ver si los datos que envía el formulario son correctos.

No nos comentaste cual es el problema que te da, el error, o lo que no hace, pero supongo que no llega a ejecutarse mail() poque antes hay una redirección header(), es eso?
  #3 (permalink)  
Antiguo 27/09/2010, 07:30
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: formulario html +php

Código PHP:
Ver original
  1. extract($_GET);
  2. extract($_POST,EXTR_SKIP);

Problema horriblemente grave de seguridad.. te recomiendo cambiar eso.
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 27/09/2010, 07:45
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: formulario html +php

Gracias a los dos. Imagino que serán cosas sencillas pero para mi que estoy empezando es un mundo... el problema que me da es que no llego a recibir nunca el mail.

lisandro deonde tengo que poner en codigo que me envías??

hidek1 por que lo cambio?

lo siento chic@s pero estoy perdidísima con php
  #5 (permalink)  
Antiguo 27/09/2010, 07:51
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: formulario html +php

Pasa que ni bien recibis los datos en el script php, estas redirigiendo la pagina a otro lugar, perdiendo consecuentemente las variables:


header("Location:contacto.html");

La redireccion es lo último en hacerse.
  #6 (permalink)  
Antiguo 27/09/2010, 07:56
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: formulario html +php

Cita:
Iniciado por cca83 Ver Mensaje
Gracias a los dos. Imagino que serán cosas sencillas pero para mi que estoy empezando es un mundo... el problema que me da es que no llego a recibir nunca el mail.

lisandro deonde tengo que poner en codigo que me envías??

hidek1 por que lo cambio?

lo siento chic@s pero estoy perdidísima con php
ok, pero no me dijiste nada sobre header(). Hay un header("Location:contacto.html"); en enviar.php esto hace una redirección a otro archivo y no se ejecuta el código que está por debajo

El código q te puse ponelo al principo de enviar.php
Código PHP:
Ver original
  1. <?
  2. echo "<pre>"; // Para darle formato mas legible a la salida
  3. var_dump($_POST); // Imprime en pantalla todo lo q tenga $_POST
  4. exit; // corta la ejecución ya que después tenes una redirección
  #7 (permalink)  
Antiguo 27/09/2010, 08:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: formulario html +php

entonces con el código así deberia funcionar o debo poner el header al final???

<?
echo "<pre>"; // Para darle formato mas legible a la salida
var_dump($_POST); // Imprime en pantalla todo lo q tenga $_POST
exit; // corta la ejecución ya que después tenes una redirección

extract($_GET);
extract($_POST,EXTR_SKIP);
header("Location:contacto.html");
if (isset($_POST['action'])) {
// Aqui se fija la dirección de destino
$dest = "[email protected]";
$head = "From: ".$_POST['email']."\r\n";
// Aqui se crea el cuerpo del mensaje
$msg.= "NOMBRE: ".$_POST['nombre']."\n";
$msg.= "EMAIL: ".$_POST['email']."\n";
$msg.= "TELEFONO: ".$_POST['telefono']."\n";
$msg.= "HORA: ".date("h:i:s a ")."\n";
$msg.= "FECHA: ".date("d M Y")."\n";
$msg.= "------------------------------- \n\n";
$msg.= $_POST['comentarios']."\n\n";
$msg.= "------------------------------- \n";

// Finalmente enviamos el mensaje con esta funcion
mail($dest, "de:miweb.com", $msg, $head);

}
?>
  #8 (permalink)  
Antiguo 27/09/2010, 08:25
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: formulario html +php

A ver creo que no nos estamos entendiendo, el código que yo te pasé es solo para cuando necesites depurar tu sistama, para que veas por vos misma lo que contiene una variable, es este caso $_POST o cualquier otra, pero no es una solución para el problema de ahora, es una recomenación para depurar tu código.

Así que
1 Saca las tres línas que yo te pasé
2 Coloca el header() después de la funcion mail()
3 También podrías hacer que la función mail() te avise si no ha enviado el mail
Código PHP:
Ver original
  1. if(!mail($dest, "de:miweb.com", $msg, $head)){
  2.     echo "No funciona";
  3.     exit;
  4. }
  #9 (permalink)  
Antiguo 27/09/2010, 08:27
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: formulario html +php

Mhhh... La línia que dice: header("Location:contacto.html"); te redirecciona a este archivo, ignorando cualquier código que siga, por lo que nunca recibirás el email. En todo caso, pon esta línea al final del código (después del } del if).

De todas formas, si tienes la línia de header("Location:contacto.html"); no te va a servir de mucho mostrar por pantalla lo que contenga $_POST (primeras 3 líneas)...

Otra cuestión es que tengas la función mail funcionando, puesto que puede que el módulo que se encarga de ella no esté instalado/configurado, y que aun teniendo un código correcto no te llegue nunca el mail...
  #10 (permalink)  
Antiguo 27/09/2010, 09:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: formulario html +php

Primero muchas gracias, poco a poco voy entendiendo más cosas.
He hecho los cambios que me habéis dicho pero sigue sin funcionar... entiendo que el problema puede que sea del servidor? se que soporta php pues hay otra web alojada hecha completamente en php y cuyo formulario funciona... pero yo aquí ya me vuelvo a perder...
Gracias de todas formas
  #11 (permalink)  
Antiguo 27/09/2010, 09:29
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: formulario html +php

Para saber si el servidor ejecuta php solo tenés que crear una archivo como este

infophp.php
Código PHP:
Ver original
  1. <?php phpinfo();?>

y ejecutarlo. Sirve para ver todas las variables de configuración que se utilizan en php

Si querés que te ayude necesito que seas mas descriptiva con los errores que te dá el codigo o con lo que hace o no hace y pega el código que vas modificando
  #12 (permalink)  
Antiguo 27/09/2010, 09:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: formulario html +php

Lisandro muchas gracias por tu tiempo.
Este es el código que tengo en enviar.php

<?
extract($_GET);
extract($_POST,EXTR_SKIP);
if (isset($_POST['action'])) {
// Aqui se fija la dirección de destino
$dest = "[email protected]";
$head = "From: ".$_POST['email']."\r\n";
// Aqui se crea el cuerpo del mensaje
$msg.= "NOMBRE: ".$_POST['nombre']."\n";
$msg.= "EMAIL: ".$_POST['email']."\n";
$msg.= "TELEFONO: ".$_POST['telefono']."\n";
$msg.= "HORA: ".date("h:i:s a ")."\n";
$msg.= "FECHA: ".date("d M Y")."\n";
$msg.= "------------------------------- \n\n";
$msg.= $_POST['comentarios']."\n\n";
$msg.= "------------------------------- \n";

// Finalmente enviamos el mensaje con esta funcion
mail($dest, "de:miweb.com", $msg, $head);
}
if(!mail($dest, "de:miweb.com", $msg, $head)){
echo "No funciona";
exit;
}
header("Location:contacto.html");
?>

necesito recoger los datos en la web y que me los envíe por email, el problema es que no consigo que llegue el mail y no se que es lo que está mal porque es la primera vez que lo hago...
gracias de antemano.
  #13 (permalink)  
Antiguo 27/09/2010, 10:35
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: formulario html +php

Cambia tu archivo por el que te pongo acá abajo y decime que se imprime en la pantalla, copialo y pegalo por favor.

Código PHP:
Ver original
  1. <?php
  2.     echo "<pre>";
  3.     var_dump($_POST);
  4.    
  5.     extract($_GET);
  6.     extract($_POST,EXTR_SKIP);
  7.    
  8.     if (isset($_POST['action'])) {
  9.         // Aqui se fija la dirección de destino
  10.         $dest = "[email protected]";
  11.         $head = "From: ".$_POST['email']."\r\n";
  12.         // Aqui se crea el cuerpo del mensaje
  13.         $msg.= "NOMBRE: ".$_POST['nombre']."\n";
  14.         $msg.= "EMAIL: ".$_POST['email']."\n";
  15.         $msg.= "TELEFONO: ".$_POST['telefono']."\n";
  16.         $msg.= "HORA: ".date("h:i:s a ")."\n";
  17.         $msg.= "FECHA: ".date("d M Y")."\n";
  18.         $msg.= "------------------------------- \n\n";
  19.         $msg.= $_POST['comentarios']."\n\n";
  20.         $msg.= "------------------------------- \n";
  21.  
  22.         // Finalmente enviamos el mensaje con esta funcion
  23.         $seEnvioONo = mail($dest, "de:miweb.com", $msg, $head);
  24.         if($seEnvioONo==true){
  25.                 echo "El mail se envió correctamente";
  26.         }else{
  27.                 echo "El mail no se pudo enviar";
  28.         }
  29.         //header("Location:contacto.html");
  30.     }
  31. ?>
  #14 (permalink)  
Antiguo 27/09/2010, 11:02
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: formulario html +php

Esto es lo que me aparece

array(6) {
["nombre"]=>
string(6) "mdmdmd"
["email"]=>
string(13) "[email protected]"
["telefono"]=>
string(9) "123456789"
["comentarios"]=>
string(9) "qmflf,lff"
["action"]=>
string(4) "send"
["enviar"]=>
string(6) "ENVIAR"
}
El mail se envi� correctamente


Gracias!
  #15 (permalink)  
Antiguo 27/09/2010, 11:08
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: formulario html +php

Si después de probar el código no te envía el mail, lo más probable es que el envío de mails no esté bien configurado...
  #16 (permalink)  
Antiguo 27/09/2010, 11:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: formulario html +php

Sigue sin llegar...
donde se puede confugurara el envio de mails???
  #17 (permalink)  
Antiguo 27/09/2010, 11:43
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: formulario html +php

Si mail() dice que lo ha enviado yo le creo al menos por ahora, lo que se me ocurre es que tengas configurado un fitro anti-spam o algo similar, revisa todas tus carpetas a ver si no lo encuentras.

Otra opción es cambiar el destinatario y hacer que el mail vaya a alguna cuenta de gmail, yahoo o hotmail que tengas, eso para descartar algunas cosas

esa cuenta de correo la tenés configuarada con outlook ?
  #18 (permalink)  
Antiguo 27/09/2010, 11:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: formulario html +php

Yo lo comento porque me ha pasado alguna vez, estar trabajando en localhost y obtener que mail() ha enviado el correo, pero como no lo tengo configurado no lo recibo nunca... Se trata sólo de coger el código, comprobarlo en un servidor que envíe mails y asegurarse que no hay problema en esto :)
  #19 (permalink)  
Antiguo 27/09/2010, 13:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Sonrisa Respuesta: formulario html +php

Ahora si!!!
no sabeis cuanto os lo agradezco!!
el problema estaba en el mail, que no funciona. He probado con otro correo y va perfecto!!
mil gracias a todos!!!!

Etiquetas: html, 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 04:55.