25 noviembre 2007

Formularios con scripts CGI. correo.pl

(Es recomendable haber leído la entrada anterior respecto a FormMail, pues algunas cosas quedan explicadas allí).
Bien, es muy probable que aunque haya seguido los pasos para configurar FormMail este siga sin funcionar, que puede ser debido a múltiples causas, dado que hay muchas versiones y revisiones de este script y además puede haber errores de sintaxis que sean inalcanzables para alguien que no pertenece al mundillo de la informática.
En particular, yo prefiero una variante de este script, desarrollado por Americandominios. Se llama correo.pl y funciona a las mil maravillas. Es más sencillo de analizar. Puede descargarse una versión desde la sección documentos de la web de la escuela de arte de Talavera.
Viene como un fichero comprimido, con el script, con un formulario de ejemplo y con un PDF de ayuda para la configuración.
Esencialmente es parecido a FormMail, ya que está basado en él. Está también escrito en Perl y hay que modificar un par de líneas, como indica la ayuda. Tras subir el script a la carpeta cgi-bin, establecer los permisos y poner la línea en el formulario correspondiente a la acción, es de esperar que todo funcione correctamente.

Así, pues, las líneas modificadas en el fichero correo.pl quedan así:

@referers = qw(escueladeartetalavera.com 137.213.100.76 localhost);
@allow_mail_to = qw(info@escueladeartetalavera.com localhost);

(la ip en este caso es ficticia, debe reemplazarse por la suya como ya se explicó en el artículo anterior)

Y en el formulario, la etiqueta correspondiente quedaría:

[form action="http://www.escueladeartetalavera.com/cgi-bin/correo.pl" method="POST"]

(no olvide sustituir los corchetes si hace copia y pega).

Puede comprobar que funciona magníficamente.

Algunas precisiones respecto al formulario de ejemplo, que puede alterar según su gusto (fíjese al final del código):

[INPUT TYPE=hidden name="env_report" value="HTTP_USER_AGENT,REMOTE_ADDR">
[INPUT TYPE="hidden" NAME="recipient" VALUE="info@escueladeartetalavera.com"]
[INPUT TYPE="hidden" NAME="subject" VALUE="Formulario enviado desde escueladeartetalavera.com "]
[INPUT TYPE="hidden" NAME="redirect" VALUE="http://www.escueladeartetalavera.com/confirmacion.htm"]


Fíjese en estos cuatro campos ocultos del formulario: en uno de ellos se establece el informe (report) del formulario. Entre esos datos está el navegador usado para gestionar el correo, así como la IP del que le rellenó el formulario (yo he eliminado el valor REMOTE_HOST, que hace referencia a la página principal de Americandominios).

El campo oculto [INPUT TYPE="hidden" NAME="recipient" VALUE="info@escueladeartetalavera.com"] es imprescindible, al igual que en los formularios gestionados por FormMail, para que el formulario sepa donde dirigir el correo. Su contenido debe coincidir con la dirección de correo que se configuró en el script en el apartado @allow_mail_to.

El campo de nombre "subject" hace posible que establezca el asunto del correo. Yo he puesto uno genérico, "Formulario enviado desde ....", si bien puede gestionarse uno distinto con un campo de texto de entrada en el formulario, que se llame "subject" y donde el usuario pueda establecer su Asunto personalizado.
Y por último, se establece en el campo "redirect" dónde debe acabar el usuario tras haber mandado el formulario. Yo lo configuro a una página donde se confirma que se ha recibido el formulario correctamente pero que tiene el mismo aspecto de la página donde se rellenó, para que el usuario pueda seguir navegando desde el punto en que decidió mandar su consulta.

Todo esto puede verlo en acción desde la página contacto de la web de la escuela de arte de Talavera, donde además puede apreciar el diseño de campos y botones personalizados aplicando hojas de estilo CSS corrientes y molientes.

Por cierto, si observa, puede acceder a otro formulario de contactar con el webmaster. Sepa que el formulario de la consulta genérica está gestionado por el script correo.pl configurado manualmente y que el formulario de contacto con el webmaster usa el script FormMail. Puede comprobar que ambos funcionan sin problemas.

Artículos relacionados:

Gestionar formularios
Formulario básico de correo
scripts CGI. FormMail
FormMail compat

6 comentarios:

Luis Miguel Senovilla dijo...

Hola Javier, Acabo de seguir tu tutorial sobre los Feeds RSS y creo que he terminado la operación con éxito. En clase no me había enterado muy bien, pero creo que ya he salido de dudas. Si quieres echar un vistazo (y de paso suscribirte) lo he hecho en mi primera web http://www.velvetta.es
La dirección del Feed es http://www.velvetta.es/rss.xml

Ah, y he echado un vistazo también a lo de los formularios y me enterado a medias. Lo releeré otro día a ver si me aclaro algo más.
Un saludo.

Anónimo dijo...

Hola.

En principio, GRACIAS por publicar una explicación tan detallada. Por fin encontré respuesta a muchas de mis dudas relacionadas con formularios.
Crees que pudieras publicar algo de formularios en php?
Gracias anticipadas

P.D. el hospedaje de mi web es gratuito y no me permite modificar los atributos de GCI-BIN así que aún no logro probar el formulario, pero buscaré el modo.

anquela dijo...

Respuesta para Susana:

Hay algunos servicios de hospedaje gratuitos que permiten la ejecución de scripts cgi, como Tripod, si bien el script que debe utilizarse es el alojado por ellos mismos en sus servidores y debe ponerse la dirección el el "action" del formulario que ellos indican en su ayuda. Efectivamente para poder acceder a gestonar los permisos CHMOD es usual que sea para servicios de hospedaje de pago. No obstante, últimamente hasta estos mismos recomiendan no utilizar los scripts de formularios configurados por el usuario, sino a través de sus propios scripts. Y esto es por el motivo de tratar de evitar el correo masivo SPAM del que somos víctimas aquellos que ponemos nuestra dirección de correo electrónico en un formulario clásico y gestionado a la manera que se explica en este blog.
El que uno ponga su dirección de correo electrónico en un formulario te hace indefectiblemente víctima de recepción de spam y también de suplantación de identidad, como si tú mismo fueras el remitente de tanto correo basura de empresas que se dedican a vender píldoras tipo Viagra o a vender relojes de imitación, como poco.
Sí que es verdad que los formularios pueden ser gestionados por páginas que usan lenguajes de lado del servidor, tipo PHP, a través de la función mail(). Pero también por razones de evitar abusos de spam algunos servidores gratuitos famosos como webcindario.com han limitado y restringido su uso. Para una prueba efectiva de todas las posibilidades del diseño y gestión de websites no hay más remedio: hay que darse de alta en un servidor de cuota; ninguno gratuito ofrece soporte completo a todas las funciones, ni en HTML estático y mucho menos en webs dinámicas.

anquela dijo...

Respuesta para Susana:

Hay algunos servicios de hospedaje gratuitos que permiten la ejecución de scripts cgi, como Tripod, si bien el script que debe utilizarse es el alojado por ellos mismos en sus servidores y debe ponerse la dirección el el "action" del formulario que ellos indican en su ayuda. Efectivamente para poder acceder a gestonar los permisos CHMOD es usual que sea para servicios de hospedaje de pago. No obstante, últimamente hasta estos mismos recomiendan no utilizar los scripts de formularios configurados por el usuario, sino a través de sus propios scripts. Y esto es por el motivo de tratar de evitar el correo masivo SPAM del que somos víctimas aquellos que ponemos nuestra dirección de correo electrónico en un formulario clásico y gestionado a la manera que se explica en este blog.
El que uno ponga su dirección de correo electrónico en un formulario te hace indefectiblemente víctima de recepción de spam y también de suplantación de identidad, como si tú mismo fueras el remitente de tanto correo basura de empresas que se dedican a vender píldoras tipo Viagra o a vender relojes de imitación, como poco.
Sí que es verdad que los formularios pueden ser gestionados por páginas que usan lenguajes de lado del servidor, tipo PHP, a través de la función mail(). Pero también por razones de evitar abusos de spam algunos servidores gratuitos famosos como webcindario.com han limitado y restringido su uso. Para una prueba efectiva de todas las posibilidades del diseño y gestión de websites no hay más remedio: hay que darse de alta en un servidor de cuota; ninguno gratuito ofrece soporte completo a todas las funciones, ni en HTML estático y mucho menos en webs dinámicas.

anquela dijo...

Respuesta para Susana:

Hay algunos servicios de hospedaje gratuitos que permiten la ejecución de scripts cgi, como Tripod, si bien el script que debe utilizarse es el alojado por ellos mismos en sus servidores y debe ponerse la dirección el el "action" del formulario que ellos indican en su ayuda. Efectivamente para poder acceder a gestonar los permisos CHMOD es usual que sea para servicios de hospedaje de pago. No obstante, últimamente hasta estos mismos recomiendan no utilizar los scripts de formularios configurados por el usuario, sino a través de sus propios scripts. Y esto es por el motivo de tratar de evitar el correo masivo SPAM del que somos víctimas aquellos que ponemos nuestra dirección de correo electrónico en un formulario clásico y gestionado a la manera que se explica en este blog.
El que uno ponga su dirección de correo electrónico en un formulario te hace indefectiblemente víctima de recepción de spam y también de suplantación de identidad, como si tú mismo fueras el remitente de tanto correo basura de empresas que se dedican a vender píldoras tipo Viagra o a vender relojes de imitación, como poco.
Sí que es verdad que los formularios pueden ser gestionados por páginas que usan lenguajes de lado del servidor, tipo PHP, a través de la función mail(). Pero también por razones de evitar abusos de spam algunos servidores gratuitos famosos como webcindario.com han limitado y restringido su uso. Para una prueba efectiva de todas las posibilidades del diseño y gestión de websites no hay más remedio: hay que darse de alta en un servidor de cuota; ninguno gratuito ofrece soporte completo a todas las funciones, ni en HTML estático y mucho menos en webs dinámicas.

anquela dijo...

Respuesta para Susana:

Hay algunos servicios de hospedaje gratuitos que permiten la ejecución de scripts cgi, como Tripod, si bien el script que debe utilizarse es el alojado por ellos mismos en sus servidores y debe ponerse la dirección el el "action" del formulario que ellos indican en su ayuda. Efectivamente para poder acceder a gestonar los permisos CHMOD es usual que sea para servicios de hospedaje de pago. No obstante, últimamente hasta estos mismos recomiendan no utilizar los scripts de formularios configurados por el usuario, sino a través de sus propios scripts. Y esto es por el motivo de tratar de evitar el correo masivo SPAM del que somos víctimas aquellos que ponemos nuestra dirección de correo electrónico en un formulario clásico y gestionado a la manera que se explica en este blog.
El que uno ponga su dirección de correo electrónico en un formulario te hace indefectiblemente víctima de recepción de spam y también de suplantación de identidad, como si tú mismo fueras el remitente de tanto correo basura de empresas que se dedican a vender píldoras tipo Viagra o a vender relojes de imitación, como poco.
Sí que es verdad que los formularios pueden ser gestionados por páginas que usan lenguajes de lado del servidor, tipo PHP, a través de la función mail(). Pero también por razones de evitar abusos de spam algunos servidores gratuitos famosos como webcindario.com han limitado y restringido su uso. Para una prueba efectiva de todas las posibilidades del diseño y gestión de websites no hay más remedio: hay que darse de alta en un servidor de cuota; ninguno gratuito ofrece soporte completo a todas las funciones, ni en HTML estático y mucho menos en webs dinámicas.