Autor Tema: Formularios y Mail  (Leído 1843 veces)

Desconectado Xt3mP

  • PHPer@ Fijo
  • ***
  • Mensajes: 160
  • Karma: 18
  • Nuev@ PHPer@
    • Ver Perfil
Formularios y Mail
« en: 07 de Marzo de 2010, 05:39:33 am »
Antes de continuar quisiera mencionar que no soy un Experto en el área de lo que sería la programación PHP, pero me gusta ayudar a la demás gente, si tuve algún error en lo que sería la explicación corriganla con toda libertad, se que no será con ánimos de postear replys/respuestas ofensivas.

#########################################################################

En este tutorial aprenderemos a como obtener los datos de un formulario por el metodo post, cojer los datos mediante PHP y enviarlos en un formulario agregando una redireccion. Suena complicado pero veran que despues de leer esto se les hara sumamente sencillo.

Necesitaremos simplemente un editor de texto ya sea Bloc de Notas/Note Pad, DreamWeaver, EclipsePHP, inclusive en Word.

Nosotros tendremos que crear 3 pagina web que estaran de la siguiente manera:

  • El HTML en donde estara el formulario.
  • El PHP en donde cojera los datos y los enviara por correo.
  • El HTML/PHP que mostrara que el mensaje a sido enviado correctamente.

Comenzaremos con la primer pagina, y como toda pagina HTML indicaremos con las etiquetas que se tratara de una pagina HTML, les pondre el codigo y despues les explico para evitar hacer largo el post.

formulario.html:

Código: (html) [Seleccionar]
<html>
<title>Formulario.</title>
<body>
<form action="enviar.php" method="POST">
Nombre: <input type="text" name="nombre" id="nombre"><br>
Correo: <input type="text" name="correo" id="correo"><br>
Mensaje: <input type="text" name="mensaje" id="mensaje"><br>
<input type="submit" value="Enviar" id="submit"><br>
</form></body></html>

Explicacion:

  • <html> Indicamos que el codigo despues de esa etiqueta es HTML.
  • </html> Indicamos que despues de esta etiqueta no habra mas codigo HTML.
  • <title> </title> Indicamos el titulo de la pagina.
  • <form action="var"> Indicamos que al momento de darle click a el boton de enviar/submit hara un llamado a la pagina que esta entre comillas, en este caso es enviar.php.
  • <form method="POST"> Indica el metodo que utilizaremos para el formulario, en este caso utilizaremos el metodo POST aunque tambien existe el metodo GET, estos dos hacen practicamente lo mismo.
  • <input type="text" name="mensaje" id="mensaje"> Indicamos lo que utilizaremos, en este caso "text" equivale a una casilla de texto, "name" es el nombre que tendra esa casilla de texto que al pasarla a PHP se convierte en una variable, y el id seria practicamente lo mismo.
  • <br> Indica un salto de linea.
  • <input type="submit" value="Enviar" id="submit"> Indica que sera un boton para enviar con el nombre "Enviar", value sera lo que mostrara el boton, si nosotros cambiamos el value por Hola el boton saldra Hola.
  • </form></body></html> Como mencione arriba, es para cerrar las etiquetas.

Ahora procederemos a crear el archivo PHP que obtendra los valores, lo escribire y despues les explico:

Código: (php) [Seleccionar]
<?php
$name 
$_POST[&#39;nombre&#39;];
$mail $_POST[&#39;mail&#39;];
$msg $_POST[&#39;mensaje&#39;];
$carta "Nombre: ".$name."<br>Correo: ".$mail."<br>Mensaje: ".$msg;
$micorreo "Xt3mP@h4x0rz.us";
$asunto "Datos del formulario de contacto";
$headers "MINE-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: Xt3mP. <Xt3mP@h4x0rz.us>\r\n";
$headers .= "Reply-To: Xt3mP@h4x0rz.us\r\n";
mail($micorreo,$asunto,$carta,$headers);
echo 
"<meta http-equiv=&#39;Refresh&#39; content=&#39;1;url=enviado.html&#39;>";
?>


  • <?php Indicamos que se tratara de codigo PHP.
  • $name, $mail, $msg, $carta, $micorreo, $asunto, $headers Son variables con un nombre cualquiera, es como en las matematicas, tu puedes darle el valor que quieras a "X", o a "Y", o a "C", en vez de $mail puedes poner $daniel, siempre y cuando la variable no empieze con un caracter numerico.
  • El signo de = es como en las matematicas, le indica que lo que esta antes es igual a lo que esta despues me explico, x = 10 , esta indicando que X tiene un valor de 10.
  • $_POST Sirve para cojer el valor de una variable, es como para obtener el value, en este caso la variable es la casilla de texto que se encuentra entre "['CASILLA DE TEXTO']".
  • Concatenar significa unir un String/Variable/Texto Plano, lo que hacemos en la variable $carta, el string debera ir en comillas ( " " ) y para concatenar una variable requerimos a el signo de puntuacion ".". Ejemplo: "Hola, me llamo".$nombre;, un ejemplo practico seria "String".$var."String";
    En este caso concatenamos todas las variables para enviar nuestro correo, seria como una carta.
  • En la variable $micorreo le indicamos mediante un String nuestro correo que posteriormente utilizaremos.
  • En la variable $asunto le indicamos mediante un String nuestro asunto que posteriormente utilizaremos.
  • Las variables $headers indican el formato de el correo, este formato lo podran encontrar en google, ahi demasiados, este formato es para indicar que utilizaremos codigo HTML en el correo, les recomiendo cambiar lo de From: y Reply-To:.
  • La funcion mail() indica que se enviara un correo, el orden deseado es de la siguiente manera: "Mail","Asunto","Mensaje","Formato", traten de seguirlo para evitar posibles errores.
  • El comando echo imprime una linea, es por ejemplo para mostrar Hola seria echo "Hola";.
  • <meta http-equiv='Refresh' content='1;url=enviado.html'> Indicamos que haremos un redireccionamiento a la pagina que se encuentra en "URL", y el tiempo de redireccion sera el valor de "CONTENT", en este caso nos redireccionara a enviado.html en 1 segundo.
  • ?> Indica que el codigo PHP ha acabado.
  • Esto es muy importante, el signo " ; " indica el fin de una linea, si usted no pone el ; en cualquier linea (Exepto en bucles) le marcara error de sintaxis, asi que revise muy bien que despues de cada linea este el " ; ".

Por ultimo, la pagina enviado.html seria asi:

Código: (html) [Seleccionar]
<html>
<title>Enviado</title>
<body>
El correo ha sido enviado correctamente.<br>
<a href="formulario.html">Enviar otro correo</a>
</body>
</html>

Como usted ya debera de saber, indicamos que se trata de HTML, decimos que el correo ha sido enviado correctamente y damos la facilidad de regresar a el formulario para enviar otro correo mediante el codigo <a href="pag">texto</a>.

Espero que les sea de utilidad, cualquier duda o sugerencia haganmela saber.

Saludos.
« Última modificación: 09 de Marzo de 2010, 05:18:15 am por Xt3mP »
Código: (php) [Seleccionar]
<?php
$mundo 
$_POST[&#39;todos&#39;];
if ($mundo 1000000){ echo "Google: Sorry, los destruiré, comos muchos";
}else{
echo 
"Google: Bueno, mientras me adueño de más redes sociales los dejaré vivir"}
//Los estaré vigilando.
?>

Comunidad PHPeros

Formularios y Mail
« en: 07 de Marzo de 2010, 05:39:33 am »

Desconectado Friberpollo

  • PHPer@ Fijo
  • ***
  • Mensajes: 199
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
    • Friberpollo y Darcond xD
Re:Formularios y Mail [Xt3mp]
« Respuesta #1 en: 08 de Marzo de 2010, 20:19:20 pm »
u nadie comenta xD

Que opinas?

Desconectado Guero

  • PHPero Avanzado
  • ****
  • Mensajes: 439
  • Karma: 13
  • Sexo: Masculino
  • PHPeros, tu web PHP
    • Ver Perfil
    • De aquí, puedes encontrar Roma
Formularios y Mail
« Respuesta #2 en: 08 de Marzo de 2010, 20:24:19 pm »
Lo saque yo, y me dijo TLX que sacaria uno con video tuto, tuto escrito y de todo en programacion PHP. Pero si lo has hecho bien, te llevas el merito. Buen hecho, funciona.

+ Karma

Desconectado Katuz

  • PHPer@
  • **
  • Mensajes: 65
  • Karma: 1
  • Sexo: Masculino
  • TheGroX
    • Ver Perfil
    • HabbaThe Web fan
Re:Formularios y Mail
« Respuesta #3 en: 09 de Marzo de 2010, 14:26:48 pm »
tengo un problema este code donde va

Código: [Seleccionar]
<?php
$name 
$_POST[&#39;nombre&#39;];
$mail $_POST[&#39;mail&#39;];
$msg $_POST[&#39;mensaje&#39;];
$carta "Nombre: ".$name."<br>Correo: ".$mail."<br>Mensaje: ".$msg;
$micorreo "habbathe@hotmail.com";
$asunto "Datos del formulario de contacto";
$headers "MINE-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: Xt3mP. <habbathe@hotmail.com>\r\n";
$headers .= "Reply-To: habbathe@hotmail.com\r\n";
mail($micorreo,$asunto,$carta,$headers);
echo 
"<meta http-equiv=&#39;Refresh&#39; content=&#39;1;url=enviado.html&#39;>";
?>

Desconectado Xt3mP

  • PHPer@ Fijo
  • ***
  • Mensajes: 160
  • Karma: 18
  • Nuev@ PHPer@
    • Ver Perfil
Re:Formularios y Mail
« Respuesta #4 en: 09 de Marzo de 2010, 16:14:35 pm »
¿En qué te falla? Tu hosting debe tener la función mail() activada y en el formulario deben existir tres casillas de texto llamadas: Nombre, Mail y Mensaje.

No todos los hostings tiene función mail() activada, checa eso y dime que es lo que te falla.

Suerte.
Código: (php) [Seleccionar]
<?php
$mundo 
$_POST[&#39;todos&#39;];
if ($mundo 1000000){ echo "Google: Sorry, los destruiré, comos muchos";
}else{
echo 
"Google: Bueno, mientras me adueño de más redes sociales los dejaré vivir"}
//Los estaré vigilando.
?>

Desconectado Katuz

  • PHPer@
  • **
  • Mensajes: 65
  • Karma: 1
  • Sexo: Masculino
  • TheGroX
    • Ver Perfil
    • HabbaThe Web fan
Re:Formularios y Mail
« Respuesta #5 en: 20 de Marzo de 2010, 02:57:19 am »
bueno la verdad no se si esta activado por que yo uso miarroba

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:Formularios y Mail
« Respuesta #6 en: 20 de Marzo de 2010, 12:19:38 pm »
me parece que miarroba no lo tiene activado..

Desconectado Katuz

  • PHPer@
  • **
  • Mensajes: 65
  • Karma: 1
  • Sexo: Masculino
  • TheGroX
    • Ver Perfil
    • HabbaThe Web fan
Re:Formularios y Mail
« Respuesta #7 en: 20 de Marzo de 2010, 21:21:33 pm »
como la activo ?¿

Desconectado Rodrinete

  • PHPer@ Fijo
  • ***
  • Mensajes: 222
  • Karma: 6
    • Ver Perfil
Re:Formularios y Mail
« Respuesta #8 en: 20 de Marzo de 2010, 21:23:46 pm »
No puedes, mi@ no te permite hacer eso, es un hosting gratis. Puedes buscar mas hosts gratis que lo permitan, lo malo es que al ser gratis siempre está mail colapsado y rara vez se enviará el mensaje.

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:Formularios y Mail
« Respuesta #9 en: 21 de Marzo de 2010, 11:11:15 am »
si el hosting gratis es para "probar" entonces te conviene montarte un hosting de pruebas con xampp.. hay tutoriales en el foro y en google

Desconectado Katuz

  • PHPer@
  • **
  • Mensajes: 65
  • Karma: 1
  • Sexo: Masculino
  • TheGroX
    • Ver Perfil
    • HabbaThe Web fan
Re:Formularios y Mail
« Respuesta #10 en: 22 de Marzo de 2010, 02:10:03 am »
mm ok gracias

Desconectado Faver

  • PHPer@
  • **
  • Mensajes: 51
  • Karma: 2
    • Ver Perfil
Re:Formularios y Mail
« Respuesta #11 en: 23 de Marzo de 2010, 04:05:44 am »
Me encantó el tutorial, muy bien explicado... Pero deberias envez de explicar al final de cada codigo, explicar al lado de la linea con // xxx

Me entiendes? asi se sabe de que linea estas hablando y no tienes que buscar xD; como me pasó en 'Concatenar...' xD

Suerte :P

Desconectado Xt3mP

  • PHPer@ Fijo
  • ***
  • Mensajes: 160
  • Karma: 18
  • Nuev@ PHPer@
    • Ver Perfil
Re:Formularios y Mail
« Respuesta #12 en: 23 de Marzo de 2010, 13:59:37 pm »
Es que fue un tutorial de los primeros que hice.
Código: (php) [Seleccionar]
<?php
$mundo 
$_POST[&#39;todos&#39;];
if ($mundo 1000000){ echo "Google: Sorry, los destruiré, comos muchos";
}else{
echo 
"Google: Bueno, mientras me adueño de más redes sociales los dejaré vivir"}
//Los estaré vigilando.
?>