Aplicaciones CGI-bin

CGI es la abreviación de "Common Gateway Inferface", un nombre singular que identifica los programas o aplicaciones que se pueden ejecutar en el servidor web invocados desde el navegador a través de una página www. La extensión "bin" hace alusión a los ejecutables binarios que son el resultado de los programas compilados o ensamblados. Es una denominación de propósito general debido a que los cgi pueden ser tanto un script, guión, interpretado por el shell de Unix como por otro lenguaje de programación, como por ejemplo, Perl. Los guiones CGI han de ser guardados en formato ASCII y transferidos al servidor cgi-bin en formato ASCII o formato texto. Esto es muy importante.

Con relación al soporte técnico de los guiones CGI, dicho soporte no es gratuito en el caso de aquellos guiones que no vienen preinstalados en su servidor. Por tanto, si usted no esta familiarizado con todo lo concerniente a los guiones CGI, se recomienda acudir a bibliografía especializada o visitar las páginas de Internet relativas a estos guiones. En la web se puede encontrar una gran cantidad de información y recursos acerca de los guiones CGI. Los guiones de Matt's Script Archive son muy buenos, y se pueden http://www.worldwidemart.com/scripts/. Muchos de nuestros guiones proceden de esta fuente. Otra excelente referencia es The CGI Resource Index que se encuentra en http://www.cgi-perl.com/ -- si usted no es un experto, puede revisar estos guiones que vienen bien documentados al tiempo que incluyen instrucciones paso a paso, o puede contactar con nosotros para solicitar ayuda o solicitar la instalación de los CGI's.


Donde poner los CGI-bin Scripts

Coloque los guiones cgi-bin dentro del subdirectorio llamado "cgi-bin", incluido en el directorio www


Ordenes para el Día, Correo, etc.

A continuación se describen los paths a los recursos de los servicios más comunes que los guiones cgi necesariamente necesitan:

Sendmail: /usr/sbin/sendmail
Perl5.003: /usr/bin/perl
Perl5.004: /usr/bin/perl5.004 (Full 5.004 lib support not available currently)
Date: /bin/date
Java: /usr/bin/java
Python: /usr/bin/python
Domain path: /www/sudominio
(Cgi-bin path: /www/sudominio/cgi-bin


Estableciendo Permisos

A continuación, una simple explicación de la asignación de permisos a un archivo en Unix. Para ver los permisos de acceso de un archivo o un directorio, abrimos una sesión telnet contra el servidor, y mediante el comando:

cd nombredirectorio

Cambiamos de directorio hasta que, o bien nos situamos en el directorio donde esta el fichero en cuestión, o en el directorio que queremos comprobar.

escribimos: ls -l nombrearchivo

Con lo cual obtenemos la actual configuración de los permisos de acceso para dicho archivo, junto con otra cantidad de información.

Ejemplos de utilización de chmod:

PERSONAS  PERMISOS
 u = archivos del usuario (usted)  r = acceso a lectura
 g = archivos del grupo  x = acceso a ejecutable
 o = otros  w = acceso a escritura
 a = el usuario, el grupo y otros  

 

Para cambiar los permisos de un archivo llamado filename.cgi, necesita cambiar el modo del fichero, chmod. Por ejemplo, cuando escribimos:

chmod u=rwx,g=rx,o=rx filename.cgi

hemos otorgado:

acceso al usuario (o sea usted) de lectura, escritura y ejecución.

acceso al grupo de lectura y ejecución.

acceso a otros de lectura y ejecución.

Algunos guiones le indicarán que ha de realizar, por ejemplo chmod 775. Respecto al ejemplo anterior, es lo mismo que introducir chmod 775:

Cuando utilizamos el sistema numérico, el código de asignación de permisos es el siguiente:

r = 4 w = 2 x = 1 rwx = 7

El primer 7 del chmod 775 le comunica al sistema Unix que cambie los permisos del usuario a rxw (debido a que r=4 + w=2 + x=1 suman 7). El segundo 7 se aplica al grupo, mientras que el último número, el 5, hace referencia a otros (4+1=5).

Cuando en telnet hacemos un ls -l sobre un archivo, siempre nos muestra la asignación de permisos de la siguiente forma:

-rwxr-xr-x

Ignorando la primera barra, dash, tomamos los caracteres anteriores en tres grupos de caracteres. En el caso de que hubiese una barra, dash, en lugar de letras, significa que no han sido otorgados permisos a esas personas.

Hay que recordar que el primer grupo de letras corresponde al usuario, el segundo al grupo, y el tercer grupo a otros.

Algunos clientes FTP cuentan con un sistema de cambio de permisos de una forma más gráfica. En el caso de contar con un programa Fetch para Macintosh, usted tiene una forma más fácil de cambiar los permisos. Seleccione el archivo en el cual deseamos modificar los permisos. En el menú Remote, seleccionamos Change Permissions. Nos aparece una ventana que nos muestra la actual asignación de permisos para el archivo seleccionado, tal como indica la Figura 3A. Tan solo hemos hacer click en las cajas para modificar los permisos deseados.


Figure 3A


WS_FTP implementa esta función de la misma forma que antes se ha descrito. Tan solo hemos de seleccionar el archivo que deseamos modificar, y hacemos click con el botón derecho del ratón. Aparece un menú desplegable, donde seleccionamos la opción CHMOD. Verá una ventana como la de la Figura 3B.


Figure 3B

 


Solucción a Problemas con CGI-bin

A continuación se describen las soluciones a algunos de los problemas más comunes de los guiones CGI, en forma de preguntas y respuestas. Al final del todo, encontrará una lista de las configuraciones relativas a la adecuada asignación de permisos de los guiones instalados por defecto.

Cuando activo mi programa CGI, me retorna una pagina que me indica "Internal Server Error. The server encountered an internal error or misconfiguration and was unable to complete your request.", "Error interno del servidor. El servidor ha encontrado un error interno o se ha desconfigurado y no es posible responder a su petición "

Este error generalmente tiene su origen en un problema interno del guión, error en su redacción. Vía Telnet inicie una sesión y compruebe su guión en modo local para obtener una mejor aproximación a cual es problema. Para llevar a cabo esto último, desde dentro del directorio donde se encuentra dicho guión, ejecutamos dicho guión. Para ejecutar el guión, puede proceder de dos maneras:

  1. Introduzca "perl miguion.pl" (En este caso Perl será él interprete del lenguaje)
  2. O simplemente introduzca solamente "miguion.pl", donde, en el caso de que la primera linea del guión esta bien escrita, nos indicará la localización del interprete Perl.

La primera de las opciones resulta útil para detectar si hay algún error en su guión. La segunda es útil para comprobar si la primera linea del guión, "calling line", linea de llamada, es correcta, por ejemplo, si se ha introducido correctamente la localización del interprete Perl.

Obtengo el mensaje "File Not Found.", "No se encontró el Archivo", o "No Such File or Directory.", "No existe este Archivo o Directorio.".

Transfiera el guión Perl o CGI en modo ASCII, no en modo binario.

Al comprobar mi guión en Perl en modo local, vía Telnet, obtengo el siguiente mensaje de error: , "El literal @dominio requiere una barra, backslash, en la línea 3 de miguion.pl, sin caracteres. La ejecución de miguion.pl ha sido abortada debido a errores en su compilación."

Este error tiene su origen en una mala, ambigua, interpretación del Perl. En Perl, el signo "@" tiene un significado especial, identifica un array, tabla de elementos. Puesto que Perl no es capaz de encontrar el array llamado dominio, se genera un error. Ha de colocar una barra (\), backslash, antes del símbolo "@", para así comunicarle a Perl que lo interprete como un símbolo normal, tal como si fuese una dirección de correo electrónico.

Obtengo el mensaje de error "POST not implemented.", "POST sin implementar".

Probablemente usted esta utilizando una referencia equivocada para cgimail. Intente utilizar la referencia reference/cgi-bin/cgiemail/mail.txt. Otra posibilidad puede ser el intento de hacer referencia a un guión cgi-bin que no esta en el directorio cgi-bin. En general, este mensaje de error nos indica que el servidor de web no reconoce el guión cgi-bin al cual esta llamando como programa. Interpreta que se trata de un archivo normal de texto.

Obtengo un mensaje de no tener permisos de acceso /

Este mensaje de error nos indica que se ha perdido el archivo index.htm. Es importante tener en cuenta que los archivos cuyos nombres comienzan con un punto ".", son archivos ocultos. Para poder hacerlos accesibles, visibles, hemos de escribir ls -al. Si desea acceder a dicho archivo vía FTP, ha de ir al directorio home/sudominio.


Appendix

Establecimiento de Permisos para Script incluidos en el Servidor

Normal
Frontpage
Tablon de Mensajes
bbs dir chmod 777 chmod 777
bbs/messages chmod 777 chmod 777
bbs/index.sht chmod 666 chmod 666
bbs/data chmod 666 chmod 666
cgi-bin/wwwboard.pl chmod 755 chmod 755

Libro de Visitas
Guestbook dir chmod 755 chmod 777
Guestbook/guestbook.cgi chmod 755 chmod 755
Guestbook/guestbook.setup chmod 666 chmod 666
Guestbook/guestbook.html chmod 666 chmod 666

Enlaces Favoritos
links dir chmod 755 chmod 777
links/links.htm chmod 666 chmod 666
cgi-bin/links.pl chmod 755 chmod 755

Contador Grafico
counter dir chmod 775 chmod 777
counter/logs chmod 777 chmod 777
counter/ all other files chmod 666 chmod 666
cgi-bin/counter chmod 755 chmod 755

Cgi-bin (
siempre chmod 755, todos los scripts en bin principal chmod 755)
cgi-bin/counters (text counter) chmod 755 chmod 777

Texto Aleatorio
random dir chmod 775 chmod 777
random/random.txt chmod 666 chmod 666

Administracion de Contraseñas
password dir chmod 755 chmod 777
Todos los archivos con password chmod 666 chmod 666


CGI-bin Scripts Preconfigurados


Formmail.cgi

Este guión es uno de los guiones instalados y pre configurados en su domino, el cual pertenece al Archivo de Guiones de Matt, Matt's Script Archive. Formmail es una pagina formulario de uso general que permite sacar correos electrónicos, que recogen el resultado de cualquier formulario y lo envía al destinatario especificado. Este guión tiene varios formatos y distintas opciones de funcionamiento, la mayoría de los cuales pueden ser configurados a través del formulario, lo que significa que usted no necesita ningún conocimiento previo de programación o múltiples guiones para múltiples formularios. Esto hace de Formmail un novedoso y perfecto sistema que permite a los usuarios emplear un formulario con capacidad de retorno sin tener que implementar el acceso libre a los guiones cgi.

Solo hay un único campo formulario que ha de incluir obligatoriamente en su formulario, para que Formmail funcione correctamente. Este es el campo recipiente. Otros campos de configuración invisibles pueden emplearse para incrementar las prestaciones de Formmail en su sitio web. Para el correcto funcionamiento de su formulario, es necesario que "action" haga referencia directa a este guión, Formmail, y el método ha de ser necesariamente POST en mayúsculas.

Un ejemplo de los campos formularios que puede incluir en su formulario:

<FORM METHOD=POST ACTION="http://sudominio.com/cgi-bin/formmail.cgi">
<input type=hidden name="recipient" value="loquesea@sudominio.com">
<input type=hidden name="subject" value="Pedido">
<input type=hidden name="return_link_url" value="http://sudominio.com/">
<input type=hidden name="return_link_title" value="Volver a la Pagina Principal">

A continuación la descripción y sintaxis de los campos que puede utilizar con FormMail.

Campo Recipient
Descripción:
Este campo formulario permite especificar a quien deseamos enviar los resultados del formulario. Generalmente, esta opción la configuraremos como un campo formulario invisible con un valor igual a la dirección de nuestro correo electrónico.

Sintaxis: <input type=hidden name="recipient" value="email@sudominio.com">


Campo Subject
Descripción: el campo asunto nos permite especificar el asunto que deseamos que aparezca en el mensaje de correo que nos será enviado después de que el formulario ha sido rellenado y enviado. Si esta opción no ha sido activada, entonces el guión, por defecto, enviará un mensaje con asunto: "WWW Form Submission".

Sintaxis: si deseamos escoger el asunto:

<input type=hidden name="subject" value="su_asunto">

Si dejamos que sea el usuario escoger el asunto:

<input type=text name="subject">


Campo Email

Descripción:
Este campo formulario permite al usuario especificar su dirección de correo electrónico de respuesta. Si se desea la posibilidad de responder el mensaje al usuario, se aconseja incluir este campo formulario y dejar que sea él quien lo rellene. Si, por el contrario, lo que deseamos es una petición de una dirección de correo con sintaxis correcta, se ha de añadir el nombre de este campo al campo 'required'.

Sintaxis: <input type=text name="email">


Campo Realname
Descripción: el campo formulario realname permite al usuario introducir su nombre real. Este campo es muy útil para propositos de identificación y ha de ser incluido en el formulario: en la linea de cabecera del mensaje.

Sintaxis: <input type=text name="realname">


Campo Redirect
Descripción: si desea redireccionar al usuario a una URL diferente, en vez de que vea la respuesta por defecto al enviar el formulario, puede utilizar esta variable invisible para enviarlo a una pagina HTML predeterminada.

Sintaxis: Para seleccionar la URL a la cual redireccionaremos al usuario:

<input type=hidden name="redirect" value="http://sudominio.com/to/archivo.html">

Para permitir que los usuarios especifiquen una determinada URL a la cual ellos desean ir una vez que el formulario ha sido cumplimentado y enviado:

<input type=text name="redirect">


Campo Required
Descripción:
Usted puede necesitar que ciertos campos del formulario sean rellenados antes de que el usuario pueda enviar el formulario de forma exitosa. Esto se consigue de una forma sencilla, colocando los nombres de los campos que se desean dentro de este campo, separados por comas. Si los campos solicitados no han sido rellenados, el usuario es notificado de que campos están pendientes de rellenar, además de disponer de un enlace para volver al formulario incompleto que han enviado.

Para personalizar un error de pagina, puede revisar el apartado:

'missing_fields_redirect'

Sintaxis: Si deseamos que el usuario rellene los campos correspondientes a dirección de correo electrónico y número de teléfono, de forma que podamos localizar al usuario una vez hemos recibido el mensaje electrónico, utilizamos la siguiente sintaxis:

<input type=hidden name="required" value="email,phone">


Campo Env_report
Descripción: Permite incluir variables de entorno en el mensaje electrónico que recibimos después del usuario ha rellenado y enviado el formulario. Muy útil si deseamos saber que navegador utilizan los usuarios, de que dominio provienen o cualquier otro atributo asociado a las variables de entorno. A continuación, una lista corta de variables validas de entorno que se consideran útiles:

REMOTE_HOST - Envía el nombre del servidor desde el cual se ha realizado la petición.
REMOTE_ADDR - Envía la dirección IP del servidor remoto.
HTTP_USER_AGENT - El navegador que utiliza el usuario.

(Nota: En el ejemplo, ambos casos, REMOTE_HOST y REMOTE_ADDR, es lo mismo, ya que nuestro servidor no realiza una búsqueda inversa de la DNS, necesaria para generar la verdadera secuencia de caracteres de REMOTE_HOST).

Sintaxis: si deseamos encontrar las variables anteriores, hemos de hacerlo de la siguiente forma:

<input type=hidden name="env_report" value="REMOTE_HOST,REMOTE_ADDR,HTTP_USER_AGENT">


Campo Sort

Descripción: Este campo permite escoger el orden en el cual deseamos que aparezcan las variables en el mensaje formulario que genera FormMail. Puede escoger entre ordenar los campos alfabéticamente o especificar un orden según el cual desea que aparezcan los campos en su mensaje de correo. Si no se incluye este campo, el orden por defecto será el orden en que los navegadores envían la información al guión (el cual es, generalmente, el mismo orden en el cual aparecen en el formulario). En el caso de desear ordenar los campos según un orden específico, se ha de incluir la frase "order:" en primer termino del valor del campo sort, seguido de los nombres de los campos que deseamos listar en el mensaje de correo, separados por comas.

Sintaxis: Para ordenar alfabéticamente:

<input type=hidden name="sort" value="alphabetic">

Para ordenar según un orden específico:

<input type=hidden name="sort" value="order:name1,name2,etc...">


Campo
Print_config
Descripción: print_config permite especificar que variables de configuración deseamos que sean impresos en los mensajes electrónicos. Por defecto, no se imprime ningún campo. Esto se debe a que los campos más importantes, como dirección electrónica, asunto, etc., son incluidos en la cabecera del mensaje. Aún así, algunos usuarios han requerido esta opción y por tanto pueden imprimir estos campos en el cuerpo del mensaje. Los campos de configuración que se desea imprimir han de especificarse en línea de instrucción, tag, de los atributos de dichos valores separados por comas.

Sintaxis: Si deseamos imprimir los campos dirección electrónica y asunto en el cuerpo del mensaje, ha de incluirse la siguiente línea de instrucciones, tag:

<input type=hidden name="print config" value="email, subject">


Campo Print_blank_fields
Descripción: print_blank_fields permite realizar una petición para que todos los campos del formulario sean impresos en documento HTML de retorno, independiente de sí han sido o no rellenados. Por defecto, FormMail tiene deshabilitada esta característica, por tanto los campos del formulario no utilizados no son enviados en el mensaje.

Sintaxis: <input type=hidden name="print_blank_fields" value="1">


Campo Title
Descripción: Este campo formulario permite especificar el título y cabecera que han de aparecer en la pagina resultante, en el caso de no haber redireccionado a una URL específica.

Sintaxis: Si deseamos el título ' Resultados del Formulario’:

<input type=hidden name="title" value="Resultados del Formulario">


Campo Return_link_url
Descripción: Este campo permite especificar una URL que aparecerá, en forma de enlace de retorno, en la correspondiente pagina de resultados. Este campo no se ha de utilizar si se ha configurado el campo formulario redirect, aunque resulta útil permitir al usuario que, al recibir el informe de resultados, pueda volver a nuestra pagina principal.

Sintaxis: <input type=hidden name="return_link_url" value="http://su dominio.com/index.htm">


Campo Return_link_title
Descripción: Este es el título que se ha de utilizar para enlazar el retorno del usuario a la pagina especificada en return_link_url. Los dos campos aparecerán en la pagina de resultados como:

Volver a la Pagina Principal

Sintaxis: <input type=hidden name="return_link_title" value="Volver a la Pagina Principal">


Cgiemail

Cgiemail es otro guión para procesar formularios, totalmente diferente a FormMail, antes comentado. Es un programa escrito en lenguaje C que toma los contenidos de los campos de un formulario y los envía en un mensaje electrónico a un destino previamente especificado. Además de las especificaciones del formulario contenidas en el archivo .html, es necesario una especificación de correo electrónico en un archivo .txt para dar formato al mensaje de correo electrónico resultante.

En el directorio cgi-bin de su servidor se encuentra el cgiemail. Necesita incluir una acción al guión en el archivo order.htm para llamarlo. Esto suele tener la siguiente redacción:

<form method=post action="http://www.yourdomain.com/cgi-bin/cgiemail/order.txt">

Los detalles se describen a continuación. Aunque se listan una serie de subsecciones a continuación de esta, todas trabajan de forma conjunta y están dispuestas para ser leídas de principio a fin.

 

order.htm

Busque un archivo en su directorio www llamado order.htm. Este es nuestro formulario ejemplo colocado en su sitio web que muestra como se ha de configurar un formulario para trabajar con cgiemail. Puede verlo a través de un navegador, y descargarlo a su disco duro utilizando una sesión FTP, cosa de poder ver como funciona. Si usted no ha tenido ninguna experiencia anterior con formularios HTML, no se preocupe, son fáciles de entender y crearlos.

El formulario solicita al usuario los datos que han de ser enviados al servidor en forma sencilla de pares de valores claves. Cada <input> tag específica un registro. La clave viene dada por el atributo name, y el valor por el atributo value. El atributo type comunica al navegador qué tipo de datos se esperan. Podemos verlo en el ejemplo.

Nótese que los términos invisibles se utilizan para transmitir información crítica al Cgiemail. Estos términos comunican la localización del archivo en cuestión, el nombre de la persona a la cual han de ser enviados los resultados, y el asunto del formulario. Cuando creamos nuestros propios formularios, podemos desear cambiar la dirección de correo electrónico en el campo "required-to", e igualmente el asunto en el campo "subject". Los primeros términos comunican al Cgiemail que ha de mostrar al usuario una vez que se ha completado satisfactoriamente el formulario. Aunque es posible personalizarlo, no es necesario.

Después de aparecer los términos que se presentan al usuario. Es posible que desee utilizar términos de entrada type=text con Cgiemail: esto es una herramienta sencilla. size=60 comunica al navegador cuan grande ha de hacer la caja. name=something es necesario en cada tag de entrada, puesto que el navegador no sabe de antemano como enviar los datos al servidor. El atributo value=" " es correcto en la mayoría de los casos, a menos que queramos el valor por defecto en el formulario.

Nótese que si un campo comienza con required-, cgiemail realizará una petición al usuario para que introduzca un valor en dicho campo. Esto es particularmente útil si deseamos pedir al usuario que nos envíe su dirección de correo electrónico.

Cuando el usuario hace click en el botón de envío, los datos son enviados a nuestra máquina donde el cgiemail comienza a realizar algo con ellos, Lo que haga esta controlado a través del archivo order.txt antes comentado.

Mientras tanto, puede poner el nombre que usted desee a su formulario HTML.

 

order.txt

Una vez que tenemos todos estos datos, nos planteamos ¿Qué es lo que hacemos con ellos? Obviamente, enviarlos por correo. Pero por motivos de flexibilidad, cgiemail necesita que usted haga un archivo con formato texto, mail.txt , para darle al programa donde ha de enviarlos. (Si usted no desea esta flexibilidad, ha de usar un enlace mailto). El programa lee este archivo, realizará las substituciones oportunas, y las pasará al sistema de correo.

Asegúrese que la transferencia del archivo mail.txt se realiza en modo ASCII. De no ser así, de no transferirlo en modo ASCII, se genera el siguiente mensaje de error:

"Error en el Servidor. El servidor ha encontrado un error interno o un conflicto de configuración y no puede completar su petición."

Hay un ejemplo del documento order.txt en el directorio forms de su directorio www.

Comentario: no hay nada de especial en lo concerniente al nombre del archivo order.txt. Puede llamarlo mail1.txt o form1.mail, o como usted quiera, mientras en el formulario tenga el nombre correcto para lo que usted transfiera.

Puede observar que las primeras líneas son cabeceras de correo. Probablemente usted no cambiara esta parte, o las partes correspondientes en su formulario. En particular, han de ser un To: header or the mail won't go anywhere!

Lo que hace cgiemail es simplemente reemplazar cada secuencia de caracteres que parecen [claves] con los valores que el usuario ha introducido en los campos con name=key. Esto es todo. Usted puede diseñar su formulario como mejor crea que resultará a sus usuarios, pero el diseño del archivo mail.txt ha de ser como mejor nos venga para leerlo. Puede incluso insertar gobs de texto para ayudar a darle formato a la salida. Solo las [claves] van a ser reemplazadas por cgiemail.

Cgiemail no da ningún informe sobre las variables de entorno como si lo hace FormMail, pero en contra de este, resulta ser un excelente programa, que nos permite una mayor flexibilidad en cuanto a como deseamos que nuestros datos sean devueltos por el formulario.


Formulario de Pedido con Secure Server

Generalmente, cualquier texto (como puede ser los números de una tarjeta de crédito) que sea enviado desde su navegador al servidor web es enviado como texto plano. Esto significa que un hacker puede, en teoría, interceptar la información (cosa que no deseamos) enviada desde su navegador y leerla. Por el contrario, utilizando el servidor seguro, la información es encripatada antes de que sea enviada desde su navegador. Es prácticamente imposible que alguien descifre la encriptación sin conocer la clave. Por favor, utilice el servidor seguro solo cuando sea necesario, como por ejemplo cuando se solicita información delicada de sus visitantes.

Los dominios alojados por nosotros están contenidos en varios ordenadores los cuales, cada uno de ellos, tiene un nombre diferente. Para encontrar el nombre de la máquina que se ha de utilizar para las peticiones de los accesos al servidor seguro, ha de revisar el archivo de preguntas mas frecuentes, FAQ, en su dominio en la siguiente dirección:

http://www.sudominio.com/faq.html

Cada servidor tiene su propio sitio de información segura, safe-order, cosa que al tiempo que usted coloca su formulario en su propio dominio, la llamada ha de ser solicitada a través del servidor de información segura para que el formulario sea seguro.

Para hacer esto, haga su formulario de la forma habitual y colóquelo en alguna parte de su directorio www. Puede colocar su formulario donde quiera, pero para este ejemplo, vamos a considerar como URL para que su formulario sea accesible desde un navegador:

http://www.sudominio.com/signup/secureform.html

Para realizar una llamada a través del servidor seguro, ha de utilizar la siguiente URL para acceder a sus paginas vía el servidor seguro (aunque sus formularios están residentes en su propio espacio del su dominio):

https://nombredominio.safe-order.net/sudominio/signup/secureform.html.

Esta será la URL que da de colocar como <HREF> para enlazar su formulario desde cualquier pagina desde donde sus visitantes realicen dicho enlace. No olvide la "s" en "https"

Su dirección del cgi-bin es:

https://nombredominio.safe-order.net/cgi-sudominio/su-cgi.cgi

-------------------------------------

Instrucciones Especiales para usar FormMail.cgi con el Servidor Seguro

Si estamos utilizando formmail.cgi a través del servidor seguro, usted puede colocar su formulario donde desee, en cualquier sitio de su espacio web, pero ha de utilizar obligatoriamente la siguiente URL como ACTION en su formulario:

https://hercules.safe-order.net/cgi-bin/formmail.cgi

Un ejemplo de cómo han de ser las partes iniciales de su formulario:

<FORM METHOD=POST ACTION="https://hercules.safe-order.net/cgi-bin/formmail.cgi">
<input type=hidden name="recipient" value="whoever@yourdomain.com">
<input type=hidden name="subject" value="Order">
<input type=hidden name="return_link_url" value="http://yourdomain.com/">
<input type=hidden name="return_link_title" value="Back to Main Page">

Es muy importante que usted haga la llamada a su pagina order a través de la URL segura para que funcione correctamente. Por ejemplo:

https://hercules.safe-order.net/sudominio/order.htm


Libro de Visitas

El libro de invitados, Guestbook, nos permite configurar nuestra propia pagina de comentarios. Desde aquí, los visitantes pueden añadir entradas a nuestro libro de visitas las cuales serán mostradas en orden cronológico, la última al principio de la pagina y las restantes hacia abajo, o al revés. Otras opciones incluyen la capacidad de limitar HTML en la entrada, enlazar a una dirección de correo electrónico con un tag a mailto, utilizar entradas log to log, redireccionar a diferentes paginas después de firmar, envío de mensaje cuando se añade una nueva entrada, y muchas mas.

El libro de visitas esta pre configurado para ser utilizado en su servidor. Tan solo ha de utilizar la siguiente URL para acceder a él:

http://sudominio.com/Guestbook/guestbook.html

Si desea cambiar cualquiera de las opciones de configuración, ha de ubicar el archivo guestbook.cgi en su directorio Guestbook (dentro del directorio www). Descargue a su disco duro en modo ASCII, y guardarlo en un sitio seguro. Crear una copia del archivo y darle el mismo nombre, y entonces editar las opciones que se especifican mas abajo. Mantenga su copia de seguridad del guestbook.cgi original por si ocurre cualquier problema.

Option 1: $mail

Esta opción nos permite ser notificados vía una dirección de correo electrónico cuando una nueva entrada llega al guestbbok. La entrada nos será notificada vía mensaje de correo electrónico. Si deseamos activar esta variable necesitamos rellenar las 2 variables que la definen:

$recipient - Su dirección de correo electrónico, para que el programa de correo conozca a quien ha de enviar la nueva entrada.

$mailprog - La ubicación de su programa de envío de mensajes en su máquina servidor.

Option 2: $uselog

Permite la posibilidad de utilizar la función de short log. De entrada esta activada, por tanto en el caso de no desear utilizarla se ha de poner a 0. Se ha implementado puesto que es muy probable que mucha gente piensa que no necesita tener un log cuando los usuarios están realizando entradas a un archivo de todas formas. Recuerde que mostrará los errores, justamente una de los aspectos que lo hacen beneficioso.

Option 3: $linkmail

Al activar esta opción hacemos que los enlaces de las direcciones de nuestro libro de visitas se conviertan en hipervínculos. En vez de simplemente tener (name@some.host) pondremos (<a href="mailto:name@some.host">name@somehost</a>) cosa de que cualquiera con tan solo un click sobre la dirección de correo electrónico pueda enviarnos mensaje.

Option 4: $separator

Esta opción nos permite escoger como han de separarse las entradas al libro de visita, o bien con un separador de párrafo <p>, o por una línea horizontal <hr>. Cambiando el valor de la variable de cero, 0, en el guión a uno, se activa el separador<hr> y desactivar el separador <p>. La opción cero es la inversa de la anterior, activa <p> y desactiva <hr>.

Option 5: $redirection

Escogiendo el valor 1se habilita el auto redireccionamiento, mientras que con el valor cero se devuelve al usuario una pagina indicándole que sus datos han sido recibidos y un botón donde al hacer click lo devuelve al libro de visitas.

Option 6: $entry_order

Al poner este valor a 0 las nuevas entradas se añaden al resto de las entradas. Al mantener este valor a 1 el libro de visitas añade las nuevas entradas al comienzo.

Option 7: $remote_mail

Son muchos los usuarios del libro de visitas han solicitado un formulario que envíe una carta, de forma automática, al usuario remoto una vez que este ha rellenado el libro de visitas. Al activar esta opción le comunicamos al guión que automáticamente envíe un mensaje electrónico a cualquiera que sea el usuario que deje una dirección de correo electrónico. Puede especificar el contenido del mensaje editando la sección del guión que envía el mensaje al usuario remoto. Por defecto, envía un mensaje que dice: " Gracias por firmar en nuestro libro de visitas", e incluye lo que ha dejado. Si se opta por activar esta variable, necesitara rellenar las dos variables que la definen:

$recipient — su dirección de correo electrónico, cosa de que el programa de correo conozca a quien ha de enviar el mensaje con los datos de entrada.

$mailprog — Ubicación en la máquina host del programa de envío de correo.

Option 8: $allow_html

Esta opción permite activar o desactivar la utilización de los tags HTML por los visitantes del libro de visitas. Al poner esta variable a 1, se autoriza a los usuarios insertar tags html tales como <b> o <a href=" "></a> dentro de sus documentos html. Con esta variable puesta a 0 se desautoriza a cualquier usuario a utilizar sintaxis html en sus comentarios o en cualquier otro campo. Puede mantener el enlace a los comentarios o cualquier otro campo. Puede mantener el enlace a las direcciones de correo electrónico poniendo a 1 la variable $link_mail.

También existe la posibilidad de que los usuarios añadan su propia URL y por tanto su nombre este referenciado a su URL en el archivo guestbook.html. Esto ayuda a eliminar la necesidad de activar allow_html. Algunos usuarios del guión libro de visitas han solicitado esta opción. Si prefiere deshabilitar esta opción, tan solo ha de eliminar la siguiente línea del archivo addguest.html:

URL: <input type=text name=url size=50><br>

A continuación, los restantes archivos importantes del libro de visitas que se pueden encontrar en el directorio Guestbook:

 

guestbook.html

Este es el archivo que se ha de enlazar con aquel que contiene las entradas al libro de visitas. Puede que deseemos editar el titulo y la cabecera y personalizarlo como se desee. Se ha de procurar no eliminar la línea <!--begin--> de este libro de visitas, pues si no el guión no tendrá forma de saber donde comienza la edición. La línea <!--begin--> es la única línea necesaria en el archivo guestbook.html, aunque mantener el enlace con el archivo addguest.html resulta ser una buena opción. :-)

 


Web para Enlaces Favoritos

La Página Web para Enlaces Favoritos Free permite configurar una pagina web en la cual los usuarios pueden añadir enlaces en determinadas categorías. Los nuevos enlaces se añaden al comienzo de cada categoría. El número total de enlaces presentes así como la fecha de cuando fue añadido el último enlace, se muestran al principio de la pagina. La preconfiguración de Free For All Link Page esta preparada en su servidor en http://www.sudominio.com/links/links.htm. La única configuración que posiblemente se quiera realizar es la personalización de la presentación de la pagina links.htm. Tan solo ha de mantener el método y los tags de entrada de la forma en que están. Si decide cambiar los nombres de las categorías, también ha de hacerlo en el documento links.htm, así como en el archivo links.pl en sus cgi-bin.


Generador de Texto Aleatorio

Este guión esta preconfigurado en su servidor. Hay un directorio en su directorio www llamado "random". Dentro de este directorio hay un archivo llamado random.txt. Tan solo ha de descargar este archivo a su disco duro y editarlo con cualquier texto aleatorio que desee situar en un documento html. Recuerde mantener los separadores %% entre comillas. Puede utilizar cualquier tag html para dar formato, incluso los tags <href> con lo cual puede configurarlo como un generador de enlaces aleatorio. Puede incluir cuantas comillas desee. Transfiera el archivo random.txt a su servidor a la misma localización donde lo encontró, teniendo siempre presente al transferirlo de hacerlo en modo ASCII o texto.

El guión utiliza SSI, Server Side Includes, por tanto la pagina en la cual desee utilizar texto aleatorio ha de tener la extensión .sht, shtm, o shtml. En su pagina, tan solo ha de colocar este tag donde quiera que aparezca el texto aleatorio:

<!--#exec cgi="/cgi-bin/randomtext.cgi"-->

¡ Es todo lo que tiene que hacer!


Tablón de Mensajes

WWW Board es una extensión del forums de discusión y tablón de mensajes de la WorldWideWeb, que permite a los usuarios colocar nuevos mensajes, a continuación de otro ya existente y más cosas. Esta totalmente preconfigurado en su servidor. Tan solo ha de ir a http://www.sudominio.com/bbs para allí dejar un mensaje.

Hay unas cuantas opciones que posiblemente desee configurar. La primera de ellas, el archivo index.sht en el directorio bbs puede ser personalizado de la forma que se quiera con tan solo dejar el método y los tags de entrada de la forma en que están por defecto.

Además, a continuación algunas opciones contenidas en el propio guión wwwboard.pl, localizado en su directorio cgi-bin, que puede desear cambiar, dependiendo de sus necesidades:

$show_faq = 1;

Esta opción permite escoger entre mostrar o no mostrar un enlace que apunta a la pagina FAQ, Frequently Asked Questions, preguntas realizadas mas frecuentemente, en cada uno de los mensajes. Por defecto la variable esta puesta a 1, y el enlace será puesto al comienzo del mensaje junto con los enlaces a Followups, Post Followups y Back to $title. Al poner esta variable a 0, se desactiva, mientras si la mantenemos a 1 mantendremos los enlaces. Es necesario crear un archivo faq.html y colocarlo en el directorio bbs. Las FAQ’s pueden contener cualquier información que se desee dar a los visitantes acerca de cómo funciona el tablón, su organización, tipos de mensajes permitidos, etc.

$allow_html = 1;

Esta opción permite elegir entre permitir o no permitir la posibilidad de emplear los mark-ups HTML en los mensajes. Si no se permite, entonces cualquier cosa que un usuario envíe entre <> será cortado y extraído del mensaje. Activando esta opción, variable puesta a 1, se permite la utilización de códigos HTML en los mensajes, mientras que para desactivarla hemos de poner esta variable a 0.

$quote_text = 1;

Manteniendo esta opción a 1, el mensaje anterior será entrecomillado en la caja de texto de entrada del followup. El texto entrecomillado tendrá un’:’ delante cosa de destacar lo que se ha dicho en el mensaje anterior del cual el actual remitente está intentando hacer referencia. Al poner esta variable a 0 se deja la caja de texto followup vacía para el nuevo remitente.

$subject_line = 0;

Hay tres opciones de cómo presentar la línea de asunto al usuario que esta dejando un mensaje en el followup. Al dejar esta opción a 0, valor por defecto, pondrá la anterior línea de asunto en el formulario followup, permitiendo a los usuarios editar el contenido de la forma que ellos quieran. Con esta opción a 1, de forma que, al poner el asunto entrecomillado, tan solo lo presentara al usuario, sin permitirle editar la línea de asunto. La tercera y última opción consisten en poner la variable $subject_line a 2. Si se pone a 2, el asunto no estará entrecomillado, por tanto al usuario se le presenta una caja vacía de asunto en su línea de asunto del followup.

$use_time = 1;

Esta opción permite elegir entre utilizar o no utilizar la hora, hora:minutos:segundos, con la fecha, día/mes/año, en la pagina principal. La fecha, día/mes/año, se colocará de forma automática en la pagina principal wwwboard.html, cuando se añade una nueva entrada, pero si se opta por dejar esta opción a 1, también aparecerá la hora, hora:minutos:segundos. Esto resulta muy útil para los tablones que reciben muchos mensajes, pero si se busca ahorrar espacio en su pagina principal, se puede deshabilitar esta opción dejando a 0 esta variable, al no presentar en pantalla la hora.


Search.cgi

Con este guión de búsqueda, puede buscar palabras a través de todas sus paginas html, devolviendo una lista con enlaces a todas las paginas que contienen dicha palabra. Este programa esta totalmente configurado y listo para funcionar, pero para que el guión Search.cgi devuelva una respuesta, es necesario activarlo previamente. Esto último es muy fácil de hacer, con tan solo abrir una sesión vía Telnet y una vez realizado el login, escribimos en el prompt la siguiente línea de comandos:

chmod +r /www/yourdomain

Ahora puede acceder al guión search.cgi a través de la siguiente URL: http://sudominio.com/cgi-bin/search.cgi.

Hay un archivo de configuración llamado search_define.pl el cual se adjunta con el guión search.cgi y configura las variables de este guión. Puede personalizar aquellos archivos los cuales se quiere excluir de las búsquedas, así como los modos de búsqueda y la presentación de la pagina de resultados.


Base de Datos

(No esta disponible. Como alternativa, puede consultarse el guión HTML)

La base de datos se compone de 5 archivos esenciales: database.cfg, database, post.html, search.html, y output.html. Están localizados en el directorio llamado "database" en su directorio www. Están configurados para que la base de datos funcione de una forma elemental, aunque se pueden personalizar para suplir sus necesidades.

database.cfg

Esta es el archivo de configuración de su base de datos. Ha de comprobar que los permisos Unix han sido puestos a chmod 666 para que este archivo funcione correctamente.

La primera línea se refiere a la localización de la base de datos, que tiene valor por defecto nuestra base de datos de texto.

La segunda línea hace referencia a que pagina ha de devolver después de enviar a la base de datos; el valor por defecto es el volver a la pagina de entradas para introducir una nueva entrada.

La tercera línea hace referencia a donde ha de comenzar a listar cualquier campo que se desee para realizar entradas a la base de datos. Por ejemplo:

nombre
url
direccion
ciudad
provincia
codigo postal

Puede tener cuantas listas quiera para estos campos. Estos son sus campos de entrada de datos y han de estar asociados con unos criterios de entrada de datos en su archivo post.html para cada uno de los que desee utilizar. Se ha de establecer, en su pagina post.html, un criterio de coincidencia de entrada, semejante al siguiente ejemplo (considérese que "nombre" y "direccion" son tan solo a modo de ejemplo, y pueden cambiarse por cualquier campo que se desee, al igual que los atributos de tamaño):

<input=text name="nombre" size="25">

<input=text name="direccion" size=30">

 

database

Esto no es ni más ni menos que la actual base de datos almacenada después de realizar las entradas en su pagina post.html.

 

post.html

Esta pagina se utiliza para escribir la base de datos desde su pagina web. Se han de establecer los criterios de entrada de cada uno de los campos utilizados en el archivo database.cgi. Además, puede utilizar tanto las cajas de consulta como los botones radiales. El tag de método ha de mantener la concordancia con el ya existente en el servidor, pero el resto del mismo puede configurarse como se quiera.

Si se desea activar la posibilidad de correo electrónico, se ha de añadir el siguiente tag en el formulario:

<input type="hidden" name="email" value="su direccion de correo">

Una vez activado, cada vez que alguien realiza una entrada en la base de datos, recibirá un mensaje de correo con el contenido.

 

search.html

Esta es la pagina que lee el archivo database, basado en los criterios de búsqueda deseados. También pueden personalizarse para satisfacer determinadas necesidades, de acuerdo a los campos configurados anteriormente.

 

output.html

Se ha de comprobar que los permisos Unix han sido configurados a chmod 666 para que este archivo funcione correctamente.

Cada campo que se desee mostrar en la pagina de salida ha de estar entre corchetes [brackets]. Pueden situarse en cualquier parte de la pagina. Lo anterior, podemos asimilarlo como una plantilla de salida de su archivo. Puede rodear las variables con texto normal de forma que la salida, la pagina mostrada, sea una combinación de texto normal y los registros seleccionados.


Tienda Virtual

Ha de haber un programa de Single Page Shopping Cart instalado en su servidor. Puede verlo yendo a través de su navegador a la siguiente URL:

http://www.sudominio.com/shop/boutique.html

Si desea personalizar su tienda virtual, (y lo hará si desea vender productos utilizando este programa), puede visitar:

http://virtualpublisher.com/host4u/index.html

El programa Virtual Publisher Shopping Cart es sofisticado y complejo. Se recomienda ir al website de Virtual Publisher y descargar los archivos de ayuda asociados a este programa.

Si el programa no esta instalado en su servidor y desea tenerlo, envíenos un mensaje de correo electrónico y realizaremos las operaciones necesarias para que disponga del programa.


Contadores

Hay 3 tipos diferentes de contadores de pagina que se pueden colocar en sus paginas. El primero es un contador gráfico no-frills, cuya apariencia es la siguiente:


Para utilizarlo, coloque el siguiente tag en algún sitio de su pagina, pero ha de cambiar en el archivo su_pagina.html para que sea la dirección de la pagina actual sobre la cual esta poniendo este contador. Además, no se ha de alterar el tag respecto a como lo hemos diseñado. Esta configurado de forma que el contador encaje en la pagina. El ancho, width=5, hace referencia al número de dígitos que tendrá el contador.


Este contador no es tan utilizado como los otros mencionados.

<IMG SRC="/cgi-bin/nph-count?width=5&link=http://yourdomain/yourpage.htm">

-------------------------------

Otro contador de pagina que es posible que desee utilizar es el Virtual Publisher Counter (solo en cuentas especiales). Es otro contador gráfico, pero da todo tipo de estadísticas tales como fecha y hora de las visitas, y los dominios desde los cuales provienen los visitantes. Tiene el siguiente aspecto:


Para colocar este contador en sus paginas, ha de insertar el siguiente tag en algún sitio. Notesé que la línea de comandos esta dividida en varias líneas, pero solo por motivos de ajustarla a esta pagina, pero la línea no puede dividirse a la hora de ponerla en su pagina.

<img src="http://sudominio.com/cgi-bin/counter/counter.cgi? fnam=testcount&viz=yes&isinv=yes&setup=/home/www/sudominio/cgi-bin/counter/setup.txt">

Donde se lea fram=testcoun, ponga el nombre de la pagina en la cual desea colocar el contador en lugar de la palabra testcount. La variable viz=yes le indica al guión del contador si el contador ha de ser visible o invisible. Si desea que el contador sea visible ha de dejarse la opción yes. Si desea que sea invisible, ha de poner viz=no.

La variable es para configurar el contador de forma inversa o no. La opción por defecto, en el ejemplo anterior, es la de que esta invertido (tal como se puede observar en el gráfico anterior). Si se desea que los números negros contra un fondo blanco, ha de escoger la opción isinv=no.

Otra característica es la de poder acceder a los ficheros históricos de cada pagina en las cuales tenga configurado un contador, además de poder poner el contador a cero o a cualquier número que se desee. Para ver la pagina que contiene estas instrucciones, dirigase a través de su navegador a http://sudominio.com/counter/.

Hay que tener en cuenta que el archivo de cuenta no se creará hasta que a la pagina no se acceda por primera vez.

-------------------------------

Finalmente, el más sencillo de los contadores de pagina es un contador basado en modo texto. Utiliza SSI, por tanto la pagina donde esta colocando este tipo de contador ha de tener la extensión .sht, .shtm, o .shtml. Tendrá los atributos de texto y tamaño que asignemos en dicha pagina. Los tags tienen la siguiente sintaxis:

<!--#exec cgi="/cgi-sudominio/counters/counter.cgi"-->

Después de colocar el contador en su pagina, examínela a través de su navegador. Si la primera vez no ve el contador, actualice la pagina. Entonces ha de ver el número 1. Si desea cambiar la cuenta de la pagina, a través de una sesión FTP, busque en el directorio de contadores en el directorio cgi-bin. Encontrará un archivo con nombre el de la pagina donde esta colocado el contador. Transfiera un nuevo archivo de texto que contenga el nuevo número, y será la nueva cuenta en la pagina la siguiente vez que la actualice. Hay que recordar de transferir el archivo en formato ASCII o texto.


SSI's

Su dominio tiene la capacidad de soportar la utilización de SSI’s, pero limitado al comando cgi ejecutable y en función del sistema que lo procesa, pero se ha de guardar las paginas con las extensiones .shtml o .sht, en vez de .htm o .html.

Ejemplos SSI:


<!--#exec cgi="/cgi-bin/count.cgi"--

En el ejemplo anterior, la URL es relativa y no una llamada completa, y por tanto no funcionará.


<!--#exec cgi="http://yourdomain.com/cgi-bin/count.cgi"--