Principal
 Nuevos Miembros

 E-mail
 FTP
 SSH
 SSL
 Herr. de Diseño

 Solicitar ayuda

 

Procesando una forma con PHP.
Parte 2: Empecemos a programar!
Por: Falcón.

Muy bien, ya que tenemos galletas y café al lado de la computadora, vamos a quitarnos los zapatos para ponernos mas comodos ya que al terminar esta segunda parte debemos tener una forma con funcionalidad basica en nuestro sitio web.

Como diria Cantinflas: empecemos por el principio.

Como mencionaba en la primera parte de esta lección, PHP en un preprocesador de hipertexto que interpreta el servidor antes de enviar el documento al visitante.
Lo bonito de PHP es que se puede mezclar con simple HTML. Esto quiere decir que puede poner código PHP en cualquier lugar de su documento HTML siempre y cuando el documento tenga la extensión .php, por ejemplo: documento.php

Pero que separa al código PHP del resto del documento? Una vez que el servidor "se da cuenta" de que en el documento hay código PHP que necesita ser interpretado, empieza a buscar en el mismo etiquetas como estas:

<?php aqui va su código PHP ?>

Es decir: todo lo que este contenido entre <?php y ?> es código PHP.

Entremos en materia.

Tomemos nuestro editor de texto y vamos a crear un archivo llamado enviar_email.php.

En el mismo vamos a abrir una etiqueta PHP:

<?php

Lo primero que hay que hacer es atrapar las variables que llegaron desde contactenos.html con el método POST explicado en la parte 1. Si recuerda bien, son 3: nombre, email y mensaje.

Como comentabamos en la primara parte, PHP tiene una forma especifica de definir cuales son las variables para su uso. Esta forma es mediante un simbolo de pesos ($) antes del nombre de la variable.

$elnombre = $_POST['nombre'];
$elemail = $_POST['email'];
$elmensaje = $_POST['mensaje'];

A ver, a ver, mas despacio!

OK, ok, vamos a desglosar lo anterior:
$elnombre, $elemail y $elmensaje son los nombres de las variables que vamos a usar en este script y van a tomar el valor de las variables que llegaron de la forma.

$_POST[''] Vamos a decir que es la forma que PHP tiene de saber que tiene que buscar entre las variables que llegaron con el método POST. En este caso estamos interesados en tres variables:

$_POST['nombre']
$_POST['email']
$_POST['mensaje']

Un ejemplo:

$elnombre = $_POST['nombre']

En lenguaje coloquial esto se entenderia asi: La variable elnombre tiene el valor de la variable nombre que llegó a este script con el método POST.

Hay solo una parte que nos faltó, y es el punto y coma (;) al final de cada línea. PHP necesita saber donde termina cada paso de lo que necesita hacer, logramos esto utilizando un punto y coma al final de cada linea.

Repetimos como quedaria:

$elnombre = $_POST['nombre'];
$elemail = $_POST['email'];
$elmensaje = $_POST['mensaje'];

En este momento PHP tiene en su memoria 3 variables que puede usar y estas son : $elnombre, $elemail y $elmensaje. Estas tres variables tomaron su valor de los campos respectivos que el visitante llenó en la forma web.

Antes de enviar el e-mail necesitamos definir otras variables.
Que seria de un e-mail sin un asunto, verdad? Vamos a definir el asunto:

$elasunto = "Me acaban de contactar en mi sitio web!!";

Y adonde va a ir el e-mail!?:

$adondeva = "falcon@urbeinternet.com";

No olvide reemplazar esto con su propia dirección de correo electrónico!.

Otra variable que es necesario definir antes de enviar el e-mail son los encabezados del mail. Para que un e-mail pueda llegar a su destino es necesario que tenga algunos encabezados, de otra forma pueden ocurrir una serie de cosas raras.

$encabezados .= "From: $elnombre<$elemail>\n";
$encabezados .= "X-Sender: <$elemail>\n";
$encabezados .= "X-Mailer: PHP\n";
$encabezados .= "Return-Path: <$elemail>\n";

Mas despacio? ok, vamos a desglosarlo.

Lo primero que se nota aqui es que estamos definiendo varias variables con el mismo nombre... como puede ser esto? Si se fija, después del nombre de cada variable hay un punto antes del signo de igual. Este punto significa que hay que "concatenar" todas la variables que tienen el mismo nombre. Concatenar en un término que les gusta usar a los programadores porque se oye muy "nice" pero no significa otra cosa mas que "juntar".
Esto se hace solo para que el script sea mas fácil de leer ya que de no haberlo hecho asi, la variable $encabezados deberia haber sido definida asi:

$encabezados = "From: $elnombre<$elemail>\nX-Sender: <$elemail>\nX-Mailer: PHP\nReturn-Path: <$elemail>\n";

Es tan grande que ni siquiera cupo en una línea, pero para fines practicos es lo mismo solo que mas confuso y dificil de leer.

Otra cosa que salta a la vista es que estamos usando variables definidas antes!.
Por ejemplo en el encabezado From estamos mencionando las variables $elnombre y $elemail. Esto se hace porque en este encabezado debe ir el nombre y la dirección de correo eletrónico de quien envia el e-mail y la unica manera que tenemos de saber cuales son esto datos es tomandolos de la variables $elnombre y $elemail que nos llegó de la forma.
PHP reemplazará "$elnombre" y "$elemail" con lo que el visitante haya llenado en el campo nombre y email de la forma. Hay un ejemplo de esto mas abajo.

Hay algunos que ya habrán notado otra cosa rara en el segmento de código de arriba, y esto son los \n casi al final de cada línea.
Recordemos que un e-mail no es otra cosa que un archivo de texto que viaja a través del ciberespacio. Un "backslash" seguido de una "n" le dice a PHP que hay que crear una nueva linea ya que esto es necesario para que los programas de correo interpreten los encabezados correctamente.

Vamos a poner un ejemplo: Supongamos que Juan Perez que tiene el e-mail: juanperez@hotmail.com nos desea enviar un e-mail. Llena la forma y al llegar a esta parte los encabezados deben leerse asi:

From: Juan Perez<juanperez@hotmail.com>
X-Sender: <juanperez@hotmail.com>
X-Mailer: PHP
Return-Path: <juanperez@hotmail.com>

Si no hicieramos que hubiera nuevas lineas entre los encabezados, estos se leerian asi:

From: Juan Perez<juanperez@hotmail.com>X-Sender: <juanperez@hotmail.com>X-Mailer: PHPReturn-Path: <juanperez@hotmail.com>

Algunos servidores o programas de correo no entienden esto, ellos buscan cada encabezado en una línea nueva, de ahi la importancia de definir cada encabezado en una línea nueva.

Un pequeño recuento.

Vamos a ver como va nuestro script hasta este momento:

<?php
$elnombre = $_POST['nombre'];
$elemail = $_POST['email'];
$elmensaje = $_POST['mensaje'];

$elasunto = "Me acaban de contactar en mi sitio web!!";

$adondeva = "falcon@urbeinternet.com";

$encabezados .= "From: $elemail<$elemail>\n";
$encabezados .= "X-Sender: <$elemail>\n";
$encabezados .= "X-Mailer: PHP\n";
$encabezados .= "Return-Path: <$elemail>\n";

Se ve bonito no es asi? vamos a continuar:

Vamos a formatear el mensaje para que también se vea bonito:

$mensaje .= "Aqui esta lo que llegó:\n\n";
$mensaje .= "$elnombre con la dirección: $elemail\n";
$mensaje .= "Escribió:\n$elmensaje\n";

Ya estamos listos para enviarlo!!!

Funciones.

Antes de enviar nuestro mensaje es necesario exlicar lo que son las funciones en PHP. Vamos a decir que las funciones en PHP no son mas que "acciones que PHP sabe como hacer" Hay cientos de funciones, una de las mas usadas es la función mail(). Vamos a explicarla:

No podria ser mas fácil enviar un mail, lo unico que se tiene que hacer es mencionar la funcion mail() y listo!. Dentro de los parentesis deben ir varios datos y estos son: a donde va el mail, el asunto, el mensaje y los encabezados. Todo separado por comas:

mail(a donde va, el asunto, el mensaje, los encabezados);

Vamos a llenar la funcion mail con los datos de nuestro propio script:

mail($adondeva, $elasunto, $mensaje, $encabezados);

Listo! se acaba de enviar un e-mail con los datos que el visitante llenó en la forma! Solo nos falta cerrar la etiqueta PHP:

?>

Oye Falcón: al correr el script en el servidor si envia el e-mail pero me pone solo una pantalla blanca...

Vamos a darle los utlimos ajustes pero eso va a ser en:

Parte 3: Los últimos detalles -->
<-- Parte 1

   

Web Hosting | Paquetes | Preguntas Frecuentes | Contáctenos | Términos y Condiciones | Ordene Ahora
© Copyright Rojo, Verde y Azul S.A. de C.V. 2001