Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/08/2003, 09:53
marquinho
 
Fecha de Ingreso: agosto-2003
Mensajes: 1
Antigüedad: 20 años, 9 meses
Puntos: 0
Exclamación Formulario + Adjunto

Estimados

Necesito un CGI que permita al usuario mandar un formulario y adjuntarle un archivo. Sería ideal que se pudiera determinar el tamaño máximo del archivo a adjuntar.

En estos momentos tengo un CGI que utilizo para procesar los formularios, permite la validación de datos (Mail u otros requeridos) y envia una respuesta automática al usuario si es que su mensaje ha sido enviado. la pregunta del millón es

¿puedo modificar de alguna manera para que este mismo CGI me sirva para enviar datos adjuntos?

Cuandoi mando el formulario solo me llega la "dirección" del archivo adjunto

El CGI que ocupo es:


# Enter the location of sendmail.
$mailprogram = "/usr/lib/sendmail -t";

# Enter the fields that are required. They should each be in quotes and
# separated by a comma. If no fields are required, change the next line
# to @required = ();
@required = ('email');

# Enter your e-mail address. Be sure to put a \ in front of the @.
# ([email protected] becomes user\@domain.com)
$youremail = "\@";


# Put the posted data into variables

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
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;
}

# Check for all required fields

foreach $check(@required) {
unless ($FORM{$check}) {
print "Location: http://www.algo.cl/resp_incorrecta.htm\n\n";
exit;
}
}

# Check the senders email

if ($FORM{'email'}) {
unless ($FORM{'email'} =~ /\w+@\w+.\w+/) {
print "Location: http://www.algo.cl/resp_incorrecta.htm\n\n";
exit;
}
}

open (MAIL,"|$mailprogram");
print MAIL "To: $youremail\n";
print MAIL "From: $FORM{'email'}\n";
print MAIL "Subject: $FORM{'subject'}\n";
print MAIL "Sres. X: la siguiente información les ha sido enviada:\n\n";
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
unless ($name eq "response" || $name eq "subject") {
print MAIL "$name: $value\n";
}
}
close MAIL;

if ($FORM{'response'} && $FORM{'email'}) {
open (RESPONSE, $FORM{'response'});
@response = <RESPONSE>;
close(RESPONSE);
open (MAIL,"|$mailprogram");
print MAIL "To: $FORM{'email'}\n";
print MAIL "From: $youremail\n";
print MAIL "Subject: $FORM{'subject'} -- Gracias por Contactarnos --\n";
foreach $line (@response) {
print MAIL "$line";
}
print MAIL "Gracias por contactarnos.\n";
print MAIL "\n";
close MAIL;
}

# Para un redireccionamiento cambir las siguientes lineas ....

#print "Content-type: text/html\n\n";
#print "<html><head><title>Gracias!</title></head>\n";
#print "<body><h1>Gracias!</h1><br>Su Información ha sido enviada! \n";
#if ($FORM{'response'} && $FORM{'email'}) {
# print "Su informaión está siendo procesada.<p>\n";
#}
#print "Please click back.\n";


# por las siguiente linea (no debe faltar el \n\n!! )

print "Location: http://www.algo.cl/resp_correcta.htm\n\n";