5
electrónico contadores contadores y y Correo Correo users.tectimes.com 59 Developers DEVELOPERS 68 60 electrónico 64 Cómo enviar e-mails con PHP ¡La cara opuesta de ASP! Aprendé a programar en este nuevo lenguaje y a construir aplicaciones para tu sitio web. Por Martín Ramos Monso E-mails desde la Web con ASP Como si fuera poco, además de enseñarte aplicaciones con PHP, te mostramos cómo hacer lo mismo con ASP. Por Marcelo Ruiz Un contador en Perl Continuamos con la nota del número anterior y damos los últimos retoques a nuestro contador de visitas. Por Martín Scandroli Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 59

Php

Embed Size (px)

Citation preview

Page 1: Php

electrónicocontadorescontadoresyy

CorreoCorreo

u s e r s . t e c t i m e s . c o m 59

DevelopersDEVELOPERS

68

60

electrónico

64

Cómo enviar e-mails con PHP¡La cara opuesta de ASP! Aprendé a programar en este nuevo lenguaje y a construir aplicaciones para tu sitio web.

Por Martín Ramos Monso

E-mails desde la Web con ASPComo si fuera poco, además de enseñarte aplicaciones con PHP, te mostramos cómo hacer lo mismo con ASP.

Por Marcelo Ruiz

Un contador en PerlContinuamos con la nota del número anterior y damos los últimos retoques a nuestro contador de visitas.

Por Martín Scandroli

Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 59

Page 2: Php

DevelopersDEVELOPERS

Programando en PHPE n la actualidad, no basta sólo con tener una

página web; tampoco sirve, exclusivamente,que ésta sea sólo “linda”. La gente está pi-

diendo más interactividad, más dinamismo y velocidad;por lo cual es importante llevar nuestros sitios a la dimen-sión dinámica, con el fin de aumentar tanto su tráfico devisitantes como su utilidad.

La forma de interacción más conocida y más sencilla es unFormulario, cualquiera sea el tipo, en donde básicamenteel usuario completará los datos que le solicitemos para lue-go enviárnoslo y que nosotros lo procesemos. El uso de es-te formulario puede ser tan atractivo como diverso. Con élpodremos recabar datos sobre nuestros visitantes, subir ar-chivos a la Web (por ejemplo, banners publicitarios), reali-zar encuestas interactivas y muchas cosas más. En síntesis:el límite sólo es nuestra imaginación.

Una excelente herramienta para desarrollar esto y potenciarnuestro sitio con muchísimas funciones es el lenguaje PHP,con el cual dejamos de lado la dimensión estática de nues-tro sitio web para pasar a realizar programas para la Red.

PHP (Hypertext Preprocessor) es un lenguaje de programa-ción que interpreta los comandos en tiempo real (no com-pila), ejecuta los procesos del lado del servidor (no del la-do del cliente, como JavaScript) y va embebido con el có-digo HTML. Además, posee otra ventaja: es gratis.

En esta nota, veremos el procesamiento de los resultadosde formularios: por ejemplo, su envío por e-mail.

A trabajar con PHPPHP funciona mezclando el código HTML con el de PHP

en una misma página web. La inserción se realiza de mo-do muy similar a como lo hace JavaScript: insertando elcódigo entre los tags <? y ?>.

Un ejemplo claro de esto sería, para el caso de una pági-na en HTML puro:<html><head><title>Acá ponemos el título de la página</title></head><body><p>Ésta es una página en HTML Puro</p></body></html>

Cómo enviar e-mails con PHP

Programando en PHPMartín Ramos Monso

[email protected]

u s e r s . t e c t i m e s . c o m60

PHP es un lenguaje nuevo y muypoderoso que nos ofrece un grannúmero de posibilidades para agregarinteractividad entre nuestra página ylos usuarios. En esta ocasión, MartínRamos Monso, un experto en PHP,nos explica los conceptos básicos deeste lenguaje y nos enseña cómoenviar e-mails desde páginas web.

Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 60

Page 3: Php

Para saber más

La página principal de estadísticas de CACE muestra un

u s e r s . t e c t i m e s . c o m 61

Página en PHPEn este ejemplo de página haremos una que nos imprima la

suma de dos números. Las variables que guardarán esos núme-ros serán num_1 y num_2, y la variable que guardará el totalde la suma será “resultado”.<html><head><title>Acá ponemos el título de la página</title></head><body><p>Ésta es una página en HTML y PHP</p><?// con el signo // indico los comentarios// Inicializo dos variables (num_1 y num_2)$num_1 = 10;$num_2 = 5;

// calculo la suma de ambos números y los guardo enla variable resultado$resultado = $num_1 + $num_2;

// Imprimo el resultado sin formatoecho $resultado;

// Imprimo el resultado con formato htmlprintf(“<p><font face=Arial size=2><u>El resultadoes</u>: <b>%s</b></font></p>”, $resultado);?></body></html>

Notemos que el código PHP va embebido en el HTML; por lotanto, es muy sencillo en principio, pero se va complicando enla medida en que uno va realizando páginas más complejas;por ejemplo, con muchas tablas, etc. En estos casos, una vezque ya tenemos definida cuál es la función del programa y quéresultados va a mostrar, es recomendable proceder de la si-guiente forma:

1) Armamos el HTML general, con datos ficticios y el forma-to que quedará finalmente a la vista del usuario.

2) Reemplazamos los lugares donde deben ir los datos váli-dos por las variables que contienen dichos datos, quitando losficticios.

Ahora que ya hemos visto las diferencias básicas, armaremosun formulario y comenzaremos a ver el manejo de datos.

Sobre los formulariosEn una primera instancia, sabemos que tenemos un formula-

rio donde introducimos datos y, luego de presionar un botónde enviar, lo que hacemos es llamar al programa que maneja-rá los resultados de dicho formulario. Ese tipo de programaspuede ser en PHP, PERL, ASP, etc.

Este programa recibe como parámetros los campos del formu-lario (los visibles y los no visibles) y se ejecuta produciendoel resultado, para lo cual fue creado. Por ejemplo, mostrar los

Figura 1. El sitio oficial de PHP en la Web. Desde aquípodremos bajar su última versión (www.php.net).

Figura 2. Así se verá nuestro formulario de ejemplo amedida que vayamos introduciendo los datos.

Figura 4. El mail que le enviaremos a los usuarios quecompleten el formulario será similar a éste.

Figura 3. Ésta es la vista de nuestro programa luegode que el usuario completó el formulario y presionó[Enviar].

Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 61

Page 4: Php

DevelopersDEVELOPERSDEVELOPERS

u s e r s . t e c t i m e s . c o m62

DevelopersDEVELOPERS

<html><head><title>PHP</title></head><body>

<?if ($tipo != “enviar”){?><p>Por favor complete el siguiente formulario</p><form method=”POST” action=”formulario.php”>

<p>Nombre <input type=”text” name=”nombre”></p><p>Direccion <input type=”text”

name=”direccion”></p><p>Telefono <input type=”text”

name=”telefono”></p><p>E-mail <input type=”text” name=”e_mail”></p><p>Que hacemos <select size=”1” name=”hacemos”>

<option value=”resultados”>Mostramos losresultados</option>

<option value=”e_mail”>Enviamos los resultadospor e-mail</option>

<option value=”ambas”>Ambas - Mostramos losresultados y mandamos el mail</option>

</select></p><p><input type=”submit” value=”Enviar”

name=”B1”><input type=”reset” value=”Restablecer”name=”B2”></p>

<input type=”hidden” name=”tipo” value=”enviar”></form>

<?}else{// Supuestamente tengo los campos completos

// Aquí debo elegir qué hacer con los resultados

if ($hacemos == “resultados”){?><p>Hemos recibido los siguientes datos</p><p><b><u>Nombre</u></b>: <? echo $nombre; ?></p><p><b><u>Dirección</u></b>: <?echo $direccion;?></p><p><b><u>Teléfono</u></b>: <? echo $telefono; ?></p><p><b><u>E-mail</u></b>: <? echo $e_mail; ?></p>

Listado #1

resultados y enviarlos por e-mail, o guardarlos en una base dedatos, etc.

Los métodos POST y GET sirven para especificar cómo seránenviados los parámetros al programa. El autor del formularioselecciona el método más apropiado:<FORM METHOD= POST ACTION = “ejemplo.php”><FORM METHOD= GET ACTION = “ejemplo.php”>

Armando el formularioComenzaremos armando un formulario básico que sirva para

introducir el nombre, la dirección y el teléfono.Notemos que donde dice action=”......” debe ir la dirección

de nuestro programa para procesar dicho formulario. Por ejem-plo, programa.php:<form method=”POST” action=”http://wwwww...”>

<?}if ($hacemos == “e_mail”){

// Para enviar un mensaje utilizamos la funciónmail$contenido = “Gracias por darse de alta\n\n”;$contenido .= “Nombre: “ . $nombre . “\n”;$contenido .= “Direccion: “ . $direccion . “\n”;$contenido .= “Telefono: “ . $telefono . “\n”;$contenido .= “E-mail: “ . $e_mail . “\n”;$contenido .= “\n\nMartin”;

mail ($e_mail, “Confirmacion”, $contenido, “From:Martin <[email protected]>”);

echo “El mensaje ya ha sido enviado”;}

if ($hacemos == “ambas”){// Primero muestro los resultados

?><p>Hemos recibido los siguientes datos</p><p><b><u>Nombre</u></b>: <? echo $nombre; ?></p><p><b><u>Dirección</u></b>: <? echo $direccion;?></p><p><b><u>Telefono</u></b>: <? echo $telefono;?></p><p><b><u>E-mail</u></b>: <? echo $e_mail; ?></p>

<?

// Envio los resultados por e-mail$contenido = “Gracias por dase de alta\n\n”;$contenido .= “Nombre: “ . $nombre . “\n”;$contenido .= “Direccion: “ . $direccion . “\n”;$contenido .= “Telefono: “ . $telefono . “\n”;$contenido .= “E-mail: “ . $e_mail . “\n”;$contenido .= “\n\nMartin”;

mail ($e_mail, “Confirmacion”, $contenido, “From:Martin <[email protected]>”);

echo “El mensaje ya ha sido enviado”;}

}?></body></html>

Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 62

Page 5: Php

u s e r s . t e c t i m e s . c o m 63

<p>Nombre y Apellido <input type=”text”name=”nombre” size=”20”></p>

<p>Direccion <input type=”text” name=”direccion”size=”20”></p>

<p>Telefono <input type=”text” name=”telefono”size=”20”></p>

<p><input type=”submit” value=”Enviar”name=”B1”><input type=”reset” value=”Restablecer”name=”B2”></p>

<input type=”hidden” name=”tipo” value=”enviar”></form>

En este ejemplo hemos introducido un campo oculto, llama-do tipo, y cuyo valor es enviar.

Generalmente, la mayoría de los formularios constan de dospáginas: la primera es la página principal donde aparece elformulario, y la segunda, la página o programa que procesasus resultados.

En nuestro ejemplo próximo, realizaremos un programa quese ocupará de ambas funciones en una única página. El obje-tivo es procesar los datos antes mencionados (nombre, direc-ción, teléfono y mail) y sobre estos datos producir las siguien-tes acciones, según la elección del usuario.Las acciones posibles son:

• Opción 1: Mostrar los resultados.• Opción 2: Enviar los resultados por e-mail.• Opción 3: Realizar ambas cosas (mostrar los resultados y

enviarlos por correo electrónico).

Analizando el códigoEn nuestro código vemos dos secciones bien definidas se-

paradas por un condicional if. El if pregunta por si el pará-metro tipo tiene un valor distinto (!=) de enviar. Si tiene unvalor diferente, significa que entramos en el programa porprimera vez, con lo cual lo primero que deberá mostrar es elformulario.

Cuando el usuario complete dicho formulario y presione elbotón [Enviar], junto con los datos, enviará el parámetrooculto que mencionamos anteriormente, llamado tipo, y el va-lor que enviará es enviar para dicha variable.

Cuando se vuelva a ejecutar el programa “formulario.php”,recorrerá el if principal, y entrará en el segundo segmento decódigo (por el else). Ahora, la variable “tiene” como valor elstring enviar.

En este segmento de código, el programa nos vuelve a pre-guntar, con distintos condicionales if, qué operación quere-mos realizar (mostrar los resultados, enviarlos, etc.). Tendre-mos un if por cada tipo de operación.

El tipo de operación es el que el usuario seleccionó previa-mente en el formulario (en la lista desplegable), cuyo nombrede variable es “hacemos”.

Si la operación elegida es Mostrar los resultados, entrará enel if donde la variable “hacemos” tenga como valor el stringresultados. Si es otra, irá recorriendo los distintos if hasta en-contrar la opción correspondiente a la selección del usuario.

Analicemos cada una de las opciones posibles:

• Opción 1: Mostrar resultados. En esta opción, simplemen-te imprimimos, mediante el comando echo, printf o similar,los resultados obtenidos del formulario.

• Opción 2: Enviar los resultados por e-mail. En este caso,utilizamos la función mail de PHP, para enviar los resultadospor e-mail al destinatario. La función mail tiene la siguientesintaxis:mail (para, tema, contenido, headers);

Cualquier mensaje que nosotros deseemos enviar deberá con-tener las siguientes partes:

• Destinatario: la persona que recibirá dicho mensaje• Tema: título del mensaje• Contenido: el texto principal del mensaje• Respuesta: dirección a la cual se enviarán las respuestas

a dicho mensaje

La dirección de correo electrónico del destinatario será elcampo e-mail, completado por el usuario en el formulario. Eltema del mensaje será el contenido, y la dirección de respues-ta, la que nosotros ingresemos en el código del programacuando lo armemos. En este caso fueron utilizadas las si-guientes:

• Tema: confirmación• Contenido: armamos un string con el contenido que de-

seamos enviar. Podemos utilizar “\n” para comenzar una nue-va línea, con el fin de no ver todo el mensaje corrido, sin sal-tos de líneas.

En esta parte, también utilizamos el punto para concatenarel texto a los valores de las variables.$contenido .= “Telefono: “ . $telefono . “\n”;

El .= significa que la variable “contenido” será igual a su va-lor actual más lo que continúa. Es lo mismo que poner lo si-guiente:$contenido = $contenido . “xxxxxxxx”;

• Respuesta: [email protected]. Debemos incluir un stringdel tipo From: Martin <[email protected]>.

• Opción 3: Mostrar resultados y enviarlos por e-mail. Aquíutilizamos los códigos escritos arriba para ambas opciones an-teriores.

Pueden encontrar el código completo en la página 62 y en lacarpeta DEVELOPERS del CD que acompaña a esta revista.

ConclusiónVimos cómo crear un formulario sencillo con PHP. También

vimos cómo armar el programa para procesarlo, con formularioincluido, identificando el tipo de operación que el usuarioquiera realizar. Ya nada nos impide comenzar a experimentarcon este lenguaje y hacer, por ejemplo, el mismo formulariopara almacenar dicha información en una base de datos. Perobueno, eso lo dejaremos para la próxima.

Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 63