formulario de contacto para web

hola a todos necesito ayuda para crear un formulario de contacto ya que mis conocimientos de html no son muy amplios os pego aqui el html que tengo escrito sobre el formulario


<div class="section" id="section1">
<div class="slide" data-anchor="contacto">
<div class="container">
<div class="well">
<div class="page-header">
<h2 class="text-right">Formulario de contacto.</h2>
</div>
<div class="row">
<form action="verify.php" accept-charset="utf-8" role="form" name="formcontacto" id="formcontacto">
<div class="col-lg-4 col-md-4 col-lg-offset-1 col-sm-6 col-xs-6">
<div id="fgnombre" class="form-group">
<label class="control-label" for="nombre">Nombre </label>
<input type="text" class="form-control" id="nombre" name="nombre" placeholder="Nombre" onkeyup="validarNombre(this.id)" required>
<span id="spnombre" class=""></span>
</div>
</div>
<div class="col-lg-4 col-md-4 col-lg-offset-2 col-sm-6 col-xs-6">
<div id="fgapellidos" class="form-group">
<p>
<label class="control-label" for="apellidos">Apellidos</label>
<input type="text" class="form-control" id="apellidos" name="apellidos" placeholder="Apellidos" onkeyup="validarNombre(this.id)" required>
<span id="spapellidos" class=""></span></p>
</div>
</div>
<div class="col-lg-4 col-md-4 col-lg-offset-1 col-sm-6 col-xs-6">
<div id="fgemail" class="form-group">
<label class="control-label" for="email">Email<br>
</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Email" onkeyup="validarEmail(this.id);" required>
<span id="spemail" class=""></span>
</div>
</div>
<div class="col-lg-4 col-md-4 col-lg-offset-2 col-sm-6 col-xs-6">
<div id="fgtlf" class="form-group">
<label class="control-label" for="tlf">Teléfono de contacto<br>
</label>
<input type="text" class="form-control" id="tlf" name="tlf" placeholder="Teléfono de contacto" onkeyup="validarTlf(this.id)">
<span id="sptlf" class=""></span>
</div>
</div>
<div class="col-lg-4 col-md-4 col-lg-offset-1 col-sm-6 col-xs-6">
<div id="fgdni" class="form-group"></div>
</div>
<div class="col-lg-10 col-md-10 col-lg-offset-1 col-sm-6 col-xs-6">
<div class="form-group">
<label class="control-label" for="asunto">Asunto<br>
</label>
<input type="text" class="form-control" id="asunto" name="asunto" required placeholder="Escríbenos el motivo de tu contacto">
</div>
</div>
<div class="col-lg-10 col-md-10 col-lg-offset-1">
<div class="form-group">
<label class="control-label" for="mensaje">Mensaje<br>
</label>
<textarea rows="5" class="form-control" id="mensaje" name="mensaje" required placeholder="Escríbenos tu mensaje."></textarea>
</div>
</div>
<div class="col-lg-4 col-md-4 col-lg-offset-1">

</div>
<div class="col-lg-4 col-md-4">
<div class="form-group">
<div class="ui-group-buttons">
<button id="enviar" type="sumbit" class="btn btn-lg btn-success disabled">Enviar</button>
<div class="or or-lg"></div>
<button type="reset" class="btn btn-lg btn-danger">Borrar</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>

mi duda es como hago para cuando den al boton de enviar se envie a mi correo un email con lo que escriban alomejor lo tengo mal escrito el codigo espero que algun entendido me pueda ayudar
Hola, segun veo en el código la accion del formulario dirige a un script en php "verify.php". En ese fichero deberia de estar el código que se encargue de enviar la info del formulario.

Un código muy muy sencillo para verify.php sin meterse a comprobar errores ni otros detalles relativos al correo seria:

<?php

$email = $_POST["email"];
$mensaje = $_POST["mensaje"];
$asunto = "Nuevo mensaje de ".$_POST["nombre"]." ".$POST["apellidos"];


mail($email,$asunto,$mensaje);

?>


pd: veo que el formulario no tiene indicado si va por get o post habria que añadirle 'method="POST"' luego la declaracion quedaria:

<form action="verify.php" method="POST" accept-charset="utf-8" role="form" name="formcontacto" id="formcontacto">


Todo esto puede mejorarse mucho, por ejemplo supongo que querrás que cuando se envíe el formulario redirige a una página de confirmación o muestre un mensaje de éxito.
es decir en el html deveria copiar esto
<form action="verify.php" me...... antes de lo que yo e puesto no?

y luego crearun php con esto pero mi email al que quiero que se envie lo que escriban en el formulario donde le pongo?

<?php

$email = $_POST["email"];
$mensaje = $_POST["mensaje"];
$asunto = "Nuevo mensaje de ".$_POST["nombre"]." ".$POST["apellidos"];


mail($email,$asunto,$mensaje);

?>

si me gustaria que redirigiese a otro html con la confirmacion o saltase un baner confirmandolo ando un poco verde en html
Exacto, en la definicion del formuarion debes de incluir method="post". Puedes ponerlo justo despues de action="verify.php".

Si quieres que se envie a tu email (pongamos por ejemplo miEmail@test.com, perdon habia puesto que se mandara al mail del usuario que rellena el formulario :)), y al mismo tiempo redirija a una pagina html (llamemosma exito.html). El código quedaría:


<?php

$email = $_POST["email"];
$mensaje = $_POST["mensaje"];
$asunto = "Nuevo mensaje de $email ".$_POST["nombre"]." ".$POST["apellidos"];

mail("miEmail@test.com",$asunto,$mensaje);
header("Location: ./exito.html");
exit;

yauros escribió:Exacto, en la definicion del formuarion debes de incluir method="post". Puedes ponerlo justo despues de action="verify.php".

Si quieres que se envie a tu email (pongamos por ejemplo miEmail@test.com, perdon habia puesto que se mandara al mail del usuario que rellena el formulario :)), y al mismo tiempo redirija a una pagina html (llamemosma exito.html). El código quedaría:


<?php

$email = $_POST["email"];
$mensaje = $_POST["mensaje"];
$asunto = "Nuevo mensaje de $email ".$_POST["nombre"]." ".$POST["apellidos"];

mail("miEmail@test.com",$asunto,$mensaje);
header("Location: ./exito.html");
exit;


gracias compañero funciona todo a la perfeccion salvo un pequeño detalle solo me llega lo que pongo en el apartado del mensaje no me llega ni el nombre apellidos telefono ni asunto ni el email de quien lo rellena
perodona por ser un poco plasta compañero

e dejado el php de esta forma

?php

$email = $_POST["email"];
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$email = $_POST["email"];
$tlf = $_POST["tlf"];
$mensaje = $_POST["mensaje"];
$asunto = "Nuevo mensaje de ".$_POST["nombre"]." ".$POST["apellidos"];


mail("mimeil@gmail.com",$asunto,$nombre,$apellidos,$email,$tlf,$mensaje);
header("Location: ./exito.html");
exit;
?>

y no me llega ningun correo pero si en este apartado dejo solo el asunto y el mensaje si

mail("mimeil@gmail.com",$asunto,$nombre,$apellidos,$email,$tlf,$mensaje);
header("Location: ./exito.html");


alguna idea de que estoy haciendo mal?
Hola, veo algunos errores si. En el fragmento que te mandé me equivoque escribiendo una vez $POST, cuando es $_POST. Y la funcion para enviar correos no tiene tantos parámetros, quedaria tal como sigue:


?php

$email = $_POST["email"];
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$tlf = $_POST["tlf"];
$asunto = "Nuevo mensaje de ".$_POST["nombre"]." ".$_POST["apellidos"];
$mensaje = "$asunto \r\n Tlf: $tlf Mail: $email \r\n".$_POST["mensaje"];

mail("mimeil@gmail.com",$asunto,$mensaje);
header("Location: ./exito.html");
exit;
?>


el \r\n es para forzar un retorno de carro en el correo, creo que por defecto si no se especifica nada en la cabecera de html deberia de hacerlo.

Ya me dices si funciona [ok]
yauros escribió:Hola, veo algunos errores si. En el fragmento que te mandé me equivoque escribiendo una vez $POST, cuando es $_POST. Y la funcion para enviar correos no tiene tantos parámetros, quedaria tal como sigue:


?php

$email = $_POST["email"];
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$tlf = $_POST["tlf"];
$asunto = "Nuevo mensaje de ".$_POST["nombre"]." ".$_POST["apellidos"];
$mensaje = "$asunto \r\n Tlf: $tlf Mail: $email \r\n".$_POST["mensaje"];

mail("mimeil@gmail.com",$asunto,$mensaje);
header("Location: ./exito.html");
exit;
?>


el \r\n es para forzar un retorno de carro en el correo, creo que por defecto si no se especifica nada en la cabecera de html deberia de hacerlo.

Ya me dices si funciona [ok]

siguen fallando un par de cosas meto un tlefono pero en el correo me aparece (tlf:) y en blanco al igual que con el correo y el asunto ni aparece
perdona por las molestias
Lo unico que se me ocurre es que no hayas especificado que el formulario va por post:

<form action="./verify.php" method="post"....

edit: si quieres que funcione independientemente de si el formulario va por post o por get, si sustituyes en el codigo los $_POST por $_REQUEST, deberia de funcionar igualmente
yauros escribió:Lo unico que se me ocurre es que no hayas especificado que el formulario va por post:

<form action="./verify.php" method="post"....

edit: si quieres que funcione independientemente de si el formulario va por post o por get, si sustituyes en el codigo los $_POST por $_REQUEST, deberia de funcionar igualmente

eso ya estaba añadido y revisando el codigo e visto lo que faltaba por añadir al php faltaban ; despues del mail y del tlf por eso esos datos no me los mandaba el codigo queda finalmente asi y funcionando
<?php

$email = $_POST["email"];
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$mensaje = $_POST["mensaje"];
$telefono = $_POST["tlf"];
$asunto = "Nuevo mensaje de ".$_POST["nombre"]." ".$_POST["apellidos"];
$mensaje = "$asunto \r\n tlf: $telefono; Email: $email; \r\n $mensaje";

mail("miemail@gmail.com",$asunto,$mensaje);
header("Location: ./exito.html");
exit;
?>


muchas gracias compañero te debo una que valla dolores de cabeza que me traia esto
un saludo
(mensaje borrado)
10 respuestas