Formulario que funcione.

devision

Hola.
He googleado, y he hecho milagros... pero soy un cateto y lo único que encuentro son webs que me hacen un formulario... pero yo quiero mi código y mis cosas para ponerlo en mi web.

El tema es, quiero hacer un formulario sencillo... nombre, apellidos, email, teléfono y comentarios... y que todo eso me llegue a mi email.

¿Alguien me hecha un cable?

Gracias.

r2d2rigo

Es que lo que hace esa funcionalidad, no es el formulario. El formulario recoge los datos y los pasa a otra pagina que se encarga de enviar el email, puede ser PHP, ASP o un CGI.

NeB1

te lo hago en php en un plis:

<html>

<head>
<?php
if($_POST['enviar']=="enviar"){
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  $headers .= 'To: [email protected]' . "\r\n";
  $headers .= 'From: '.$_POST['nombre'].'  <'.$_POST['email'].'>' . "\r\n";
  $contenido='
  <table>
   <tr>
    <td><p style="font-weight:bold;">Nombre: </p></td><td><p>'.$_POST['nombre'].'</p></td>
   </tr>
   <tr>
    <td><p style="font-weight:bold;">Apellidos:</p></td><td><p>'.$_POST['apellidos'].'</p></td>
   </tr>
   <tr>
    <td><p style="font-weight:bold;">Teléfono:</p></td><td><p>'.$_POST['telefono'].'</p></td>
   </tr>
   <tr>
    <td><p style="font-weight:bold;">E-mail:</p></td><td style="border:1px solid #91E148;"><p>'.$_POST['email'].'</p></td>
   </tr>
   <tr>
   <tr>
    <td><p style="font-weight:bold;">Mensaje:</p></td><td style="border:1px solid #91E148;"><p>'.$_POST['mensaje'].'</p></td>
   </tr>
  </table>
';
  $mail=mail("[email protected]",$_POST['nombre'],$contenido,$headers);
}
?>
</head>

<body>

 <form name="contacta" action="<?php $_SERVER['php_self'];?>" method="post">
  <table style="text-align:right;" >
    <tr>
      <td >Nombre: </td>
      <td><input type="text" id="nombre" name="nombre" size="30" style="border:1px solid #fe9b1c;"></td>
    </tr>
    <tr>
      <td>Apellidos: </td>
      <td><input type="text" id="apellidos" name="apellidos" size="30" style="border:1px solid #fe9b1c;"></td>
    </tr>
    <tr>
      <td>Teléfono: </td>
      <td><input type="text" id="telefono" name="telefono" size="30" style="border:1px solid #fe9b1c;"></td>
    </tr>
    <tr>
      <td>Email: </td>
      <td><input type="text" id="email" name="email" size="30"  style="border:1px solid #fe9b1c;"></td>
    </tr>
    <tr>
      <td valign="top">Mensaje: </td>
      <td><textarea name="mensaje" id="mensaje" cols="30" rows="5"></textarea></td>
    </tr>
	<tr>
	  <td colspan="2" align="right"><input type="submit" name="enviar" value="enviar"></td>
	</tr>
  </table>
 </form>
</body>
</html>
r2d2rigo

#3, creo que aunque pongas el tag code, se te come los tags de PHP :o

Y de todos modos, tu codigo no le servira de mucho si no tiene soporte PHP en su hosting, o la extension sendmail instalada.

NeB1

#4 se m'había ido la pinza xD y si está claro q si no tiene php poco va a hacer, pero algún lenguage del lado del servidor necesitará digo yo...

devision

Muchas gracias NeB1. Sí que soporto PHP, pero el código a pelo no me funciona. Se me ve el php y sustituyendo el "tudominio" por mi correo, no hace nada.

Había leido por ahí que tendría que activar el SMTP de mi correo, como correo saliente, para poder "enviarme a mi mismo emails" de los formularios. No estoy muy seguro de todo eso...
Con lo facil que sería que lo hiciese solo con un simple mailto:--- ...

Gracias :)

EDIT: si pongo el PHP en otro archivo (extension .php), me da el siguiente 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\form\post.php on line 27

linea 27 en cuestión:
$mail=mail("[email protected]",$_POST['nombre'],$contenido,$headers);

Lo que interpreto con ésto, es que tengo que abrir el puerto 25 (SMTP) y hacer algo con el SMTP PORT en el php.ini del xampp.

Soltrac

#6 Tío, lo estás haciendo el local. Tu no tienes un servidor de correo, por lo q nunca te podrás conectar a ti mismo como servidor de correo.

Sube el script a tu host o instálate un servidor de correo, pero lo segundo es más engorroso.

devision

¡¡Ostias!! Vale vale... Pensaba que funcionaría igual en local... como me habian dicho que podría hacerlo incluso con mi dirección de gmail...

Lo he hecho en remoto y ya funciona... ¡MUCHAS GRACIAS!

devision

Rescato un momentillo el tema.

Bueno, me curré un buen formulario etc etc... funciona y demás.

Ahora mi problema viene con los campos obligatorios... dije, "bueno... aquí no creo que necesite ayuda.... un IF me basta", e hice éste código:

if($POST['email']==""){exit('Por favor, vuelve atrás y completa el campo E-mail');
}
if($
POST['empresa']==""){exit('Por favor, vuelve atrás y completa el campo Empresa');
}
if($POST['nombre']==""){exit('Por favor, vuelve atrás y completa el campo Persona de contacto');
}
if($
POST['mensaje']==""){exit('Por favor, vuelve atrás y completa el campo Información requerida');

Entonces ahora me saltan 2 dudas.
Si dejo 1 campo en blanco, avisa de que el campo está en blanco, pero lo envia.
Cuando ésto pasa, lleva a una página en blanco.... y cuando "vuelvo atrás" para rellenar el campo que falta, el formulario se ha borrado (ésto puede ser algo del caché?... me pasa siempre, envíe o no el formulario)
Si dejo 2 campos en blanco, no avisa, y lo envia.

Entonces... ¿Es posible que el if sea insuficiente y tenga que hacerlo al estilo "While" o algo así?

Usuarios habituales

  • devision
  • Soltrac
  • NeB1
  • r2d2rigo