Foros del Web » Programando para Internet » PHP »

PHP OO Formulario con php

Estas en el tema de Formulario con php en el foro de PHP en Foros del Web. Hola a todos. Soy nuevo en el foro y quisiera saber si alguien puede ayudarme a solucionar un problema con php. Tengo un formulario html ...
  #1 (permalink)  
Antiguo 17/08/2014, 04:00
 
Fecha de Ingreso: agosto-2014
Mensajes: 2
Antigüedad: 9 años, 8 meses
Puntos: 0
Formulario con php

Hola a todos. Soy nuevo en el foro y quisiera saber si alguien puede ayudarme a solucionar un problema con php. Tengo un formulario html y he creado un documento php para el envío pero no funciona. Podría alguien indicarme donde está el error?

html
<form action="enviar.php" method="post" class="contactForm">
<p class="form">
<input class="field" type="text" name="name" id="name" value="Name*" onblur="if(this.value == ''){this.value='Name*'}" onclick="if(this.value=='Name*'){this.value=''}" />
<input class="field" type="text" name="email" id="email" value="E-mail*" onblur="if(this.value == ''){this.value='E-mail*'}" onclick="if(this.value=='E-mail*'){this.value=''}" />
<input class="field" type="text" name="subject" id="subject" value="4+9=?*" onblur="if(this.value == ''){this.value='4+9=?*'}" onclick="if(this.value=='4+9=?*'){this.value=''}" />
</p>
<div class="clear"></div>
<p class="form" style="width:100%; float:left;">
<textarea class="textarea" rows="4" name="message" id="message" cols="1">Message*</textarea>
<br /><br />
</p>

<input type="submit" value="SEND" class="sendForm" id="submit" />
<p style="float:left;"><br />*Necessary</p>
</form>
<div class="clear"></div>
<div id="status"></div>

php

<?php
if(isset($_POST['email'])) {

// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
$email_to = "[email protected]";
$email_subject = "Contacto desde el sitio web";

// Aquí se deberían validar los datos ingresados por el usuario
if(!isset($_POST['Nombre']) ||
!isset($_POST['email']) ||
!isset($_POST['Mensaje'])) {

echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
echo "Por favor, vuelva atrás y verifique la información ingresada<br />";
die();
}

$email_message = "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " . $_POST['Nombre'] . "\n";
$email_message .= "E-mail: " . $_POST['email'] . "\n";
$email_message .= "Comentarios: " . $_POST['Mensaje'] . "\n\n";


// Ahora se envía el e-mail usando la función mail() de PHP
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);

echo "¡El formulario se ha enviado con éxito!";
}
?>
  #2 (permalink)  
Antiguo 17/08/2014, 04:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Formulario con php

Hola:

Cuando un control tiene el nombre (name) con valor "name", se recibe con $_POST["name"]... también hay un error parecido en el control "message" que pretendes recibir con $_POST["Mensaje"]... no sé si también influye la ausencia del enctype en el formulario

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 17/08/2014, 04:59
 
Fecha de Ingreso: agosto-2014
Mensajes: 2
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Formulario con php

Hola y gracias por contestar.
He cambiado el nombre de los controles y sigue sin funcionar. Estoy desesperado...llevo muchos días con este asunto y no consigo solucionarlo por más que miro manuales y foros... Por favor, si alguien sabe del tema que me ayude... No sé a dónde recurrir...
  #4 (permalink)  
Antiguo 17/08/2014, 05:28
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Formulario con php

Hola:

Puedes ver lo que llega por post con algo así:
<?php
print_r($_POST);
?>

Si después de poner el doctype, vez que con esas líneas sigue sin llegar nada, es que algo interfiere... tal vez algo en javascript...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 18/08/2014, 10:51
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Formulario con php

he copiado tu ejemplo, a porte que tienes que poner el nombre de las variables post con el mismo que cada input que envias, te faltó configurar el $email_from, esa variable queda vacía al enviar apretar el botón.

Con esos dos cambios ya te funcionará! A mi me funciona tu código con los códigos, te lo paso modificado, solo tienes copiarlo a un archivo php.

Te lo he modificado un poco ya que he visto que has utilizado javascript para simular el mismo efecto que realiza el parámetro "placeholder" de los imputs. Y como es un archivo de prueba he quitado que los datos los envie a otro archivo php, todo se realiza desde el mismo archivo.

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['email'])) {
  3.  
  4.     // Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
  5.     $email_from = "[email protected]";
  6.     $email_subject = "Contacto desde el sitio web";
  7.    
  8.         // Aquí se deberían validar los datos ingresados por el usuario
  9.         if(!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['message'])) {
  10.        
  11.             echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
  12.             echo "Por favor, vuelva atrás y verifique la información ingresada<br />";
  13.             die();
  14.         }
  15.    
  16.     $email_message = "Detalles del formulario de contacto:\n\n";
  17.     $email_message .= "Nombre: " . $_POST['name'] . "\n";
  18.     $email_message .= "E-mail: " . $_POST['email'] . "\n";
  19.     $email_message .= "Comentarios: " . $_POST['message'] . "\n\n";
  20.    
  21.    
  22.     // Ahora se envía el e-mail usando la función mail() de PHP
  23.     $headers = 'From: '.$email_from."\r\n".
  24.     'Reply-To: '.$email_from."\r\n" .
  25.     'X-Mailer: PHP/' . phpversion();
  26.     mail($_POST['email'], $email_subject, $email_message, $headers);
  27.    
  28.     echo "¡El formulario se ha enviado con éxito!";
  29. }
  30. ?>
  31.  
  32. <form action="" method="post" class="contactForm">
  33. <p class="form">
  34.     <input class="field" type="text" name="name" id="name" placeholder="Nombre" />
  35.     <input class="field" type="text" name="email" id="email" placeholder="@" />
  36.     <input class="field" type="text" name="subject" id="subject" placeholder="4+9=?" />
  37. </p>
  38. <div class="clear"></div>
  39. <p class="form" style="width:100%; float:left;"><textarea class="textarea" rows="4" name="message" id="message" cols="1">Message*</textarea><br /><br /></p>
  40.  
  41. <input type="submit" value="SEND" class="sendForm" id="submit" />
  42. <p style="float:left;"><br />*Necessary</p>
  43. </form>
  44. <div class="clear"></div>
  45. <div id="status"></div>

NOTA: si no has sabido que los fallos eran esos, es porque no debes de tener configurado tu servidor para que te muestre errores. Eso se hace en el archivo php.ini. tienes que buscar la variable "error_reporting" y añadirle el valor "E_ALL", de esa manera verás todos los errores que vayas teniendo cada vez que pruebes el código en el navegador. Y así la próxima vez podrás solventar estos pequeños errores por ti mismo. Un saludo.

Última edición por Triby2; 18/08/2014 a las 10:54 Razón: Se me olvidó añadir la NOTA

Etiquetas: formulario, html
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 19:01.