Enviar formulario a dirección de correo

En una página de internet (), conseguí un ejemplo para enviar un formulario a mi correo pero no he conseguido que funcione, allí se habla de un archivo con extensión cgi. Eso es una archivo en que formato, ¿se ubica en que carpeta o como es que funciona?.
Copio el código en html y aparece como si hubiera digitado texto, ¿podrías explicarme que debo hacer con cada trozo de código que hay? Donde colocarlo, o si no es mucho pedir, ¿podrías emviarme por correo el archivo con el formulario funcionando?
[email protected]
Muchas gracias.
El código es el siguiente:
Definido por las siguientes instrucciones HTM:
<form action="nombre.cgi" method=post>
Nombre: <input type=text name=nombre size=30><p>
Apellidos: <input type=text name=apellido size=50s><p>
Email: <input type=text name=email size=20><p>
Estamento: <select name=estamento>
<option value=pas>PAS
<option value=pdi>PDI
</select>
<p>
Introduzca sus comentarios:
<p>
<textarea name=comentar rows=5 cols=80>
</textarea>
<input type=submit value="Enviar">
</form>
Crearemos un pequeño programa que lea la salida del formulario y lo trate enviándonos un mail con los datos introducidos por el usuario.
Para ello crearemos un programa con la extensión .cgi que será el que se especifique en el atributo ACTION de la instrucción FORM.
El contenido de este programa escrito en lenguaje perl es el siguiente:
#!/usr/local/bin/perl -- -*-perl-*-
# Definición del programa para enviar correo, debe dejarse sin cambios.
$progmail = '/usr/lib/sendmail';
# Usuario al que se enviarán los mensajes. Deberá poner su alias de correo electrónico.
$destino = '[email protected]';
# Indica que se trata de un documento HTML
print "Content-type: text/html\n\n";
Esta primera parte debe incluirse sin realizan ningún cambio, solo añadir la dirección email de retorno, en esta definen las variables generales y se incluye la instrucción Content-type que indica al navegador que se trata de un documento HTML (text/html).
# Obtiene la entrada
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# Divide las variables entre nombre y valor.
@pairs = split(/&/, $buffer);
# Optiene todas las variables y sus valores
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
En esta parte se obtienen del formulario los pares variables, valor. El código es independiente del número de variables que se hayan introducido, ya que detectará todas las variable que se hayan pasado desde el formulario. Esta parte de código debe ser dejada sin ningún cambio.
# Si la respuesta es vacia, se llama a una función que la trata
&blank_response unless $FORM{'comentar'};
En este caso se llamará a la función si la variable comentar del formulario anterior, que se referencia mediante $FORM{'comentar'}, no tiene ningún valor. Se pueden añadir una linea similar por cada atributo que no pueda contener un campo blanco.
# Imprime el título y la cabecera
print "<Head><Title>Gracias</Title></Head>";
print "<Body><H1>Muchas Gracias, sus comentarios serán bienvenidos</H1>";
# Imprime el texto del texto a mostar.
print "Gracias por enviar sus comentarios a <I>__________</I>!<P>";
print "Vuelva a la <A HREF=\"__________\">página inicial</A>, si lo desea.<P>";
Se incluirá el mensaje que se mostrará tras analizar el formulario, este mensaje será de agradecimiento o de indicación de que su petición ha sido atendida. Aquí se podrá indicar el texto que desee. Será conveniente que incluya un enlace a la página inicial desde la que se accedió al formulario, para facilitar al usuario la vuelta atrás.
Cada línea la formará una instrucción print y entre comillas el texto HTML que se quiere que aparezca. En caso que la instrucción HTML tenga comillas, deberá incluir la secuencia de escape \" como se ve en el ejemplo.
# Ahora enviamos el mail al $destino
open (SALIDA, "|$progmail $destino") || die "No puedo abrir $progmail!\n";
print SALIDA "Reply-to: $FORM{'email'} ($FORM{'nombre'} $FORM{'apellidos'})\n";
print SALIDA "Subject: Comentarios al formulario de prueba ($FORM{'nombre'} $FORM{'apellidos'})\n\n";
print SALIDA "$FORM{'nombre'} $FORM{'apellidos'} del $FORM{'estamento'}envio \n";
print SALIDA "El siguiente comentario::\n\n";
print SALIDA "------------------------------------------------------------\n";
print SALIDA "$FORM{'comentar'}";
print SALIDA "\n------------------------------------------------------------\n";
close (SALIDA);
En este caso todo lo que se incluya en la instrucción print SALIDA será enviado dentro del mail.
En la línea que comienza como Reply-to: se incluirá la dirección de correo a la que se debe replicar el mail, normalmente la dirección de correo de quién envió el formulario.
En la línea que comienza con Subject: Se incluirá el texto que se desea que aparezca como subject del mensaje, que será un texto que le ayuda a identificar el origen del mensaje.
Y luego se incluirán las respuestas al formulario, el orden que lo ponga es indiferente, siendo el formato que utilice el que se mostrará en el mensaje que usted reciba, en este caso como respuesta del formulario se obtendría por correo electrónico:
Date: Thu, 30 May 96 12:55:53 +0200
From: Servidor WWW de la UCA
Reply-To: [email protected] (Nombre del usuario)
Subject: Comentarios al formulario de prueba (Nombre del usuario)
Apparently-To: [email protected]
Nombre del usuario del PDI envío
El siguiente comentario:
------------------------------------------------------------
Texto del comentario.
------------------------------------------------------------
# ------------------------------------------------------------
# subrutina blank_response para comentarios en blanco
sub blank_response
{
print "Sus comentarios estan en blanco, de manera que no seran";
print " enviados a __________. Por favor vuelva a introducirlos o vuelva";
print " a la <A HREF=\"__________\">página inicial</A> si lo desea.<P>";
exit;
}
Este procedimiento se ejecutará cuando se introduzca unos comentarios en blanco, se indicará esto y se le permitirá volver a la página inicial o pulsando el botón de retorno a la página anterior introducir de nuevo el formulario.
Por tanto uniendo los trozos formaremos el programa que trataba el formulario anterior. Sobre este mismo programa se pueden introducir pequeñas modificaciones que permitan tratar prácticamente cualquier tipo de formulario. Sí se desea que en vez de enviar un mail se genere un fichero donde se...

1 respuesta

Respuesta
1
Supongo que ya sabrás la función que realiza el CGI... pues hay una forma mucho más sencilla de conseguir enviar tus formularios a un CGI antes que hacértelos tu mismo. Y es con www.meristation.com.
Esta página web te ofrece sus CGI gratis.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas