Foros del Web » Programación para mayores de 30 ;) » Programación General »

Taller de PERL y CGI

Estas en el tema de Taller de PERL y CGI en el foro de Programación General en Foros del Web. Hola, en este nuevo post me gustaría ir colocando algunos casos prácticos que son los que más frecuentemente se preguntan...Espero que les sirva... Saludos PD: ...
  #1 (permalink)  
Antiguo 20/03/2005, 14:28
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 1 mes
Puntos: 90
Taller de PERL y CGI

Hola, en este nuevo post me gustaría ir colocando algunos casos prácticos que son los que más frecuentemente se preguntan...Espero que les sirva...

Saludos
PD: Si quieren sugerir algún tema para hacerlo en el taller, háganlo pero en otro post independiente, para que no se mezclen los mensajes...
__________________
Esteban Quintana
  #2 (permalink)  
Antiguo 20/03/2005, 14:35
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 1 mes
Puntos: 90
Como enviar un formulario por mail ?

Bueno, para mandar los datos de un formulario a una casilla de E-Mail podemos usar la sentencia mailto:, pero como esta sentencia de HTML se ejecuta en el cliente no es lo más recomendable ya que puede fallar, además de que los navegadores suelen mostrar mensajes de alerta de seguridad (como "va a mandar datos por la web ! puede ser peligroso !") que asustan a sus usuarios. Por estas razones esta opción queda descartada...

Ahora tenemos que ver las soluciones del lado del servidor, esto significa instalar un script para que reciba los datos del formulario y los envíe a nuestra casilla de correo...Estos scripts pueden en cualquier lenguaje de servidor como ser PERL, PHP, ASP, Java, Phyton, etc...Los más conocidos son PERL (Perl o CGI), PHP o ASP. Así que para instalar uno de estos scripts lo primero que debemos hacer es verificar si nuestro servidor soporta alguno de estos lenguajes, o sea, que pueda ejecutarlos, en caso negatigo podemos usar servicios gratuitos como el de http://phantomezform.com.

En este taller voy a intentar explicar como es que se instala y se configura el FormMail.pl que es uno de los scripts (PERL o CGI) más conocidos y usados, además de ser padre de casi todos los scripts que andan dando vueltas...

1er Paso: Bajar el script.

El script lo bajamos gratuitamente de la página oficial, la cual es www.scriptarchive.com Simplemente lo buscan por FormMail y lo bajan en el formato que más deseen (.zip, .rar...)

2do Paso: Configurar el script.

Antes que nada tenemos que ver la primera línea del script, dice algo como

#!/usr/bin/perl

Esa es la dirección del intérprete de perl en el servidor, la gran mayoría de los servidores usan esa dirección, pero talvez el tuyo por alguna razón que nunca vamos a entender lo colocó en otra...Verifica que sea la correcta ! (Pregunta en tu empresa de hosting)

Ahora bien, para mandar los mails, este script utiliza un programa de servidor llamado SendMail, que también al igual que el intérprete tiene una ubicación en el servidor, esa ubicación la definimos en la variable

$mailprog = '/usr/lib/sendmail -i -t';

Como vemos la variable ya viene configurada, porque en la mayoría de los servidores tiene esa dirección, pero como en el punto anterior: Verifícalo preguntando a tu empresa de hosting.

Como segunda variable para configurar nos aparece la famosa @referer, la cual contiene los dominios que tendrán acceso a utilizar este script, si lo dejamos vacío y no colocamos nuestro dominio el script estará libre para que lo use cualquier sitio, y eso no creo que sea lo que desean !

@referers = ('scriptarchive.com','209.196.21.3');

Como ven pueden colocar el dominio, el IP, o ambos. siempre cada dominio/IP entre comillas simples y separadas por una simple coma.

Y por último tenemos @recipients, esta al igual que la anterior es una medida de seguridad, que sirve para que el script solamente envíe el E-Mail si y solo si el mail de destino pertenece a alguno de los dominios especificados en @referers. Generalmente esta variable no se toca, para que la verificación sea realizada. Quedando:

@recipients = &fill_recipients(@referers);

Y LISTO, ya está configurado el script, si bien está la variable @valid_ENV rara vez es modificada, no es muy útil.

3er Paso: Subir el script.

Para subir el script necesitamos un FTP que nos permita subir el script en MODO ASKII y que nos permita cambiarle los permisos CHMOD a 755 para que el servidor lo pueda ejecutar y que ningún usuario externo pueda escribirle.

Ahora bien, el script debe ser subido solamente a la carpeta que nuestro servidor nos haya brindado para ejecutar scripts de PERL, esta carpeta suele llamarse CGI-BIN o LOCAL-CGI

4to y ultimo paso: Realizar el formulario HTML.

Lo primero es configurar nuestra etiqueta FORM, en la cual tenemos que definir:

El método: GET o POST en mayúscula !!!, generalmente se utiliza POST por ser más seguro.

La acción: En esta se coloca al url del script como ser http:www.misitio.com/cgi-bin/FormMail.pl, cabe destacar que formmail.pl NO es lo mismo que FormMail.pl, minúsculas y mayúsculas se toman como distintas.

<form method="POST" action="http://www.misitio.com/cgi-bin/FormMail.pl">

Una vez configurada la etiqueta FORM tenemos que definir el campo oculto recipient que le dice al script cual es la/las direcciones de correo a las cuales debe mandar la información del formulario.

<input type=hidden name="recipient" value="[email protected],[email protected]">

NO ES COMPLICADO... NO ? en solo 4 pasos que se pueden llevar a cabo en unos 15 minutos ya tenemos nuestros formularios perfectamente funcionando.

Espero que les sirva y les mando un abrazo grande...

Saludos
__________________
Esteban Quintana

Última edición por monoswim; 08/03/2006 a las 17:40
  #3 (permalink)  
Antiguo 23/05/2005, 19:34
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 1 mes
Puntos: 90
Nuevo taller que indica como hacer un tablón de noticias que van subiendo automáticamente mostrando las distintas noticias...asta acá con JS

Con CGI se realizó un script que administra el archivo de las noticias...Con un formulario los usuarios pueden escribir mensajes y estos salen en el tablón de noticias, o sea que cada mensaje se coloca como una nueva noticia y se despliega...

Espero que les guste

http://www.forosdelweb.com/f14/script-scroll-296937/

Saludos
__________________
Esteban Quintana
  #4 (permalink)  
Antiguo 27/05/2005, 18:42
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 1 mes
Puntos: 90
Instalación del TotMail

Hola, el totmail es un script similar al FormMail pero un poco más fácil de instalar y permite enviar archivos adjuntos en nuestros formularios mediante los conocidos <input type="file">

El script lo descargan desde acá
http://villanos.net/herreria/granero/index.html

Las instrucciones están en castellano y muy bien redactadas, razón por la cual se las mando así como vienen...

Funciones:

Envia por correo el contenido de un formulario. Permite
formularios de todo tipo (incluso con campos del tipo "file")


Copyright:

TotMail puede copiarse, modificarse y usarse
libremente a condicion de que no se borre ni modifique
la cabecera ni este texto, ni ninguna referencia a
Web Viva en el codigo del programa



Llamada desde el formulario:

1.- Si no hay campos del tipo "file"
<form method=POST action="URL de este cgi">
2.- Si hay campos del tipo "file"
<form method=POST enctype="multipart/form-data" action="URL de este cgi">

Como pasar los parametros al CGI. Los parametros como, los
campos que son obligatorios, el orden de los campos en el mail, etc
se pasan con campos ocultos en el formulario:

Mail de destino
<input type="hidden" name="Totmaildestino" value="direccion1,direccion2...">

Orden de los campos. Si se impone un orden hay que definir el orden de TODOS los campos
(excepto el de los que empiezan por Totmail ya que estos son de uso interno del CGI)
<input type="hidden" name="Totmailorden" value="campo1,campo2,campo3....">

Campos obligatorios
<input type="hidden" name="Totmailobligatorios" value="campo2,campo5....">

Asunto (subject) con el que se recibira el mail
<input type="hidden" name="Totmailasunto" value="Frase">

Si se desea que la persona que rellena el formulario reciba una copia del
mail puede incluirse el siguiente campo
<input type="hidden" name="Totmailreply" value="Nombre del campo del formulario
que contendra el mail del visitante
que rellena el formulario">

Acotar el tamaño de cada uno de los ficheros enviados (este ejemplo
no permitiria que se enviaran fichero de mas de 50Kb). Si no se desea
acotar el tamaño no ponga este campo en el formulario.

<input type="hidden" name="Totmailmaxsize" value="50">

URL de la pagina de destino si se tiene exito en el envio
<input type="hidden" name="Totmailurlfinal" value="URL de la pagina destino">

URL de la pagina que se muestra si alguno de los campos obligatorios
no fue completado
<input type="hidden" name="Totmailurlfalta" value="URL de la pagina de advertencia">

URL de la pagina que se muestra si hay algun error durante el envio del mail
<input type="hidden" name="Totmailurlerror" value="URL de la pagina de error">

URL de la pagina que se muestra si el mail dado en el campo "Totmailemail" no es
sintacticamente correcto (i.e si no es de la forma [email protected])
<input type="hidden" name="Totmailurlmailanomalo" value="URL de la pagina a mostrar">

URL de la pagina que se muestra si alguno de los ficheros anexados supera
el tamaño preestablecido. Si no puso el campo oculto "Totmailmaxsize", este
campo no es necesario

<input type="hidden" name="Totmailurlmax" value="URL de la pagina">

URL de la pagina que se muestra si se esta usando el CGI desde un formulario
no autorizado

<input type="hidden" name="Totmailnopermiso" value="URL de la pagina">

Si uno de los campos corresponde al E-Mail de la persona que rellena
el formulario puede hacerse que el mail recibido pueda ser contestado
a dicha persona con solo hacer "reply" si se nombra a ese campo como
Totmailemail. Es decir el campo podria ser asi
Su E-Mail: <input type="text" name="Totmailemail">


Prioridad del mensaje. Puede establecerse como un campo oculto o bien
como una lista seleccionable y que sea el usurio que cumplimenta el
formulario el que decida la prioridad. Si no se incluye este campo
la prioridad es normal.

<input type="hidden" name="Totmailprioridad" value="1">

Los posibles valores son 1=Muy alta,2=Alta,3=Normal,4=Baja,5=Muy baja

Este campo no es esencial

Advertencias:

1.- Estos campos especiales tienen por nombre Totmailxxxx,
es decir con la inicial de Totmail en mayusculas y el resto en minusculas

2.- Ningun campo (aparte de los especiales) puede tener un nombre que
empiece por Totmail



Instalacion:
Definir las variables presentes en el CGI
($sistema_web, @autorizadas y $smtp_server o $mailprog).

En sistemas NT dar extension pl a este cgi
y pasarlo al servidor por FTP en modo ASCII

En sistemas UNIX/Linux, dar el path del interprete perl
en la linea superior (la que empieza por !) y dar
permisos 755 a este script.
Si no sabe como dar permisos 755 consulte la seccion
"Informacion"->"Ayudas" de http://www.webviva.com/biblioteca
Si no sabe cual es el path del interprete perl en su
servidor consulte al administrador de su servidor Web


Justino Martinez, Junio 2002

Espero que les sirva

Saludos
__________________
Esteban Quintana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 20:23.