(1º de todo, ya se que hay un tutorial sobre esto, pero este es más facil y además su autor me ha dejado hacer una nuevo (Gracias Doodelo))
Lo primero de todo es crear la zona en la que el usuario de la web metera sus datos (nombre y/o email, mensaje etc...) Lo podemos hacer dentro de una página ya existente o en otra página nueva. Para simplificaros las cosas, lo haré como si fuera una página nueva con el nombre de contacto.html.
Lo primero será decir al navegador lo que queremos del usuario, y esto lo hacemos por medio de
Código HTML:
<form action="xxx.php" method="post" name="contacto">
Lo que le decimos es que inicie un from para la dirección xxx.php , siendo el nombre de este contacto. Lo siguiente que hacemos es poner las opciones que queramos que halla:
Código HTML:
<p>Name<input type="text" name="nombre" value="" /></p></label>
<p>Email Address<input type="text" name="email" value="" /></p></label>
<label><p>Mensaje<textarea textarea" rows="8" cols="50" name="mensaje"></textarea></p></label>
<input type="submit" name="envio" value="Enviar"/>
</form>
Lo que aqui hacemos es pedir el nombre, el email del remitente y el menasje en si (Lo último es obio, nadie quiere mensajes vacios :P) Y nombrando a cada uno de ellos a traves de y despues, cerramos el from (No sin antes haber puesto el botón de enviar:
(<input type="submit" name="envio" value="Enviar"/>).
Ease, que contacto.html quedaría asi:
Código HTML:
<form action="xxx.php" method="post" name="contacto">
<p>Name<input type="text" name="nombre" value="" /></p>
<p>Direccion de email<input type="text" name="email" value="" /></p>
<p>Mensaje<textarea rows="8" cols="50" name="mensaje"></textarea></p>
<input type="submit" name="envio" value="Enviar"/>
</form>
Ahora creamos un archivo .php y por ejemplo lo llamamos envia-eso.php (Ahora que ya tenemos un nombre, acordaos de cambiar el nombre en <form action="xxx.php" method="post" name="contacto">
por <form action="envia-eso.php" method="post" name="contacto">
Ahora nos ponemos a editar envia-eso.php (Primero lo pongo todo y luego os lo explico ¿ok?)
Código PHP:
<?php
$remitente = $_POST['email'] ;
$destino = "Aqui tu email" ;
$asunto = "Mensaje que llega desde mi web a traves de la pagina contacto" ;
$mensaje = $_POST['mensaje'] ;
$encabezados = "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1" ;
mail($destino, $asunto, $mensaje, $encabezados) or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ;
echo "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
echo "<strong><b>$mensaje</b></strong>" ;
?>
Lo que aquí hacemos es:
"Convertir" de HTML a PHP lo que hemos dicho en el formulario de contacto mediante la opción
$variable-a-la-que-se-convierte=
$_POST['nombre de la veriable del formulario'] ;
Le espepificamos primero un destinatario por medio de la variable $destino, asi que edita esa variable y pon tu email si no quieres que los email se envien a ningún lado :P.
Lo siguiente es decir el asunto que tendra tu mensaje, para diferenciarlos del resto que te llegen a la web, yo en este caso he puesto:
Código:
Mensaje que llega desde mi web a traves de la pagina contacto
Pero puedes poner el que te de la gana, o si no, también esta la opcion de que el usuario elija un Asunto (Que puede estar ya definido o no) . Pero eso lo podre en una actualizacion que ya esta en la zona de abajo de ESTE MISMO TUTORIAL, tras los guiones en rojo :) .
Lo siguiente que hacemos es en $encabezados y es decir de quién es (From: $remitente) y decir a quién responder (Reply-To: $remitente) y le hemos metido un código "mágico" para que el usuario pueda usar HTML en el mensaje, el cual podeis desactivar eliminado en $encabezados: \nContent-Type: text/html; charset=iso-8859-1
Luego con la función mail, juntamos todas las variables que el usuario nos ha dicho y enviamos el mail a la dirección dicha en $destino
¿Ves que despues de esto esta: or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ; ?
Lo que hace ese pequeño trazo es avisar cunando un mensaje no ha podido ser enviado.
Ya al final, con:
echo "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
echo "<strong><b>$mensaje</b></strong>" ;
Lo que hacemos es decirle unas palabritas a nuestro usuario, como por ejemplo:
Tu mensaje ha sido enviado, con este contenido:
¿Y como conseguimos que nustros usuarios vean lo que han escrito? Muy facil, es simplemente llamar a la variable que contiene el mensaje y puf! hay está.
Código PHP:
echo "<strong><b>$mensaje</b></strong>" ;
¡Como por arte de mágia eh! ;)
Asi que, las 2 páginas quedarian asi:
contacto.html
Código HTML:
<form action="envia-eso.php" method="post" name="contacto">
<p>Name<input type="text" name="nombre" value="" /></p>
<p>Direccion de email<input type="text" name="email" value="" /></p>
<p>Mensaje<textarea rows="8" cols="50" name="mensaje"></textarea></p>
<input type="submit" name="envio" value="Enviar"/>
</form>
envia-eso.php
Código PHP:
<?php
$remitente = $_POST['email'] ;
$destino = "Aqui tu email" ;
$asunto = "Mensaje que llega desde mi web a traves de la pagina contacto" ;
$mensaje = $_POST['mensaje'] ;
$encabezados = "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1" ;
mail($destino, $asunto, $mensaje, $encabezados) or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ;
echo "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
echo "<strong><b>$mensaje</b></strong>" ;
?>
No olvides preguntarnos a todos tus dudas en el foro y decirme si algo no te sale, que te ayudo ;)
(Gracias de nuevo a Doodleo por dejarme hacer esto :) )
----------------------------------------------------
Como dejar que nuestro usuario elija el asunto. (PARTE I: Asuntos pre-definidos)
Lo primero de todo, al ser opciones, vamos ha hacer lo mismo que en el mensaje (a la hora de rellenar los campos del formulario) , solo que esta vez haremos a traves de la opción slect. Ya sabeis, primero lo pongo y ahora lo explico :P.
Código HTML:
<select multiple="false" size="1">
<option name="1">Primer asunto</option>
<option name="2">Segundo asunto</option>
<option name="3">Tercer asunto</option>
<option name="4">Cuarto asunto</option>
</select>
Lo primero como no es abrir la etiqueta select (Si no lo hiciesemos, sería como intentar echarte leche al ColaCao teniendo en tetrabrick cerrado). En ella le decimos que solo se puede seleccionar 1 (A traves de multiple="false")(Si pusiesemos true , nos dejaría cojer más de uno )
Ahora que lo tenemos, lo ponemos justo entre Nombre y Dirección Email, en la página contacto.html .
Ahora editamos envia-eso.php para que haga caso a contacto.html editando la variable .
Si la variable asunto originalmente era:
Código PHP:
$asunto = "Mensaje que llega desde mi web a traves de la pagina contacto" ;
Ahora lo que habría que hacer sería:
Código PHP:
switch ( $asunto )
{
case 1: echo "Primer asunto." ; break ;
case 2: echo "Segundo asunto." ; break ;
case 3: echo "Tercer asunto." ; break ;
case 4: echo "Cuarto asunto" ; break ;
default: echo "Mensaje web enviado desde mi web" ;
}
(Para más información sobre Switch ve a: http://www.comocreartuweb.com/curso-...ol/switch.html
Ahora analizemos el código:
Lo primero que hacemos es llamar a la función Switch para que la compare con los resultados obtenidos en la anterior página. (Ve aquí para saber más sobre el Switch)
Y un detalle que se me olvida es que NO se si el default funciona en este caso, si no es asi avisarme y lo corrigo ¿ok? :)
Si sigues esta forma, el código quedaría:
contacto.html
Código HTML:
<form action="envia-eso.php" method="post" name="contacto">
<p>Name<input type="text" name="nombre" value="" /></p>
<p>Asunto</p>
<select multiple="false" size="1">
<option name="1">Primer asunto</option>
<option name="2">Segundo asunto</option>
<option name="3">Tercer asunto</option>
<option name="4">Cuarto asunto</option>
</select>
<p>Direccion de email<input type="text" name="email" value="" /></p>
<p>Mensaje<textarea rows="8" cols="50" name="mensaje"></textarea></p>
<input type="submit" name="envio" value="Enviar"/>
</form>
envia-eso.php
Código PHP:
$remitente = $_POST['email'] ;
$destino = "Aqui tu email" ;
switch ( $asunto )
{
case 1: echo "Primer asunto." ; break ;
case 2: echo "Segundo asunto." ; break ;
case 3: echo "Tercer asunto." ; break ;
case 4: echo "Cuarto asunto" ; break ;
default: echo "Mensaje web enviado desde mi web" ;
}
$mensaje = $_POST['mensaje'] ;
$encabezados = "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1" ;
mail($destino, $asunto, $mensaje, $encabezados) or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ;
echo "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
echo "<strong><b>$mensaje</b></strong>" ;
Como dejar que nuestro usuario elija el asunto. (PARTE II: El usuario elije el mismo)
Este metodo tiene la ventaja de ser un poco más facil... Pero no sabes quien te lo envia, o lo que es peor... No sabes si te lo envian desde TU web.
Para poner este metodo, solo necesitas añadir un pequeño input a contacto.html
Código HTML:
<p>Asunto<input type="text" name="Asunto" value="" /></p>
Esto ya lo he explicado, no creo que lo necesites ;P
Ahora editamos envia-eso.php para que sepa como interpretar ese input.
Si la linea inicial sobre la que "trabajamos" (Lo pongo entre comillas por que esto lo prefiero tomar como un hobby) es:
Código PHP:
$asunto = "Mensaje que llega desde mi web a traves de la pagina contacto" ;
Tendríamos que cambiarla y ponerla tal que asi:
Código PHP:
$asunto = $_POST[asunto] ;
Con eso lo que conseguimos es llamar al input "asunto", para que sea el valor de la variable $asunto (Uy! Nos estamos empezando a repetir con los nmbres , pero no pasa nada. Los navegadores/servidores son MUY listos y no se equivocan)
Si sigues este método, el código quedaría tal que asi:
contacto.html
Código HTML:
<form action="envia-eso.php" method="post" name="contacto">
<p>Name<input type="text" name="nombre" value="" /></p>
<p>Asunto<input type="text" name="asunto" value="" /></p>
<p>Direccion de email<input type="text" name="email" value="" /></p>
<p>Mensaje<textarea rows="8" cols="50" name="mensaje"></textarea></p>
<input type="submit" name="envio" value="Enviar"/>
</form>
envia-eso.php
Código PHP:
<?php
$remitente = $_POST['email'] ;
$destino = "Aqui tu email" ;
$asunto = $_POST['asunto'] ;
$mensaje = $_POST['mensaje'] ;
$encabezados = "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1" ;
mail($destino, $asunto, $mensaje, $encabezados) or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ;
echo "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
echo "<strong><b>$mensaje</b></strong>" ;
?>
Ya sabeis:
Espero haberos ayudado :)
No olvides preguntarnos a todos tus dudas en el foro y decirme si algo no te sale, que te ayudo ;)
O si yo tengo un error (Que también es posible) :)
Marcadores