He creado un formulario y un script perl cgi para el envío de datos del formulario por correo y todo funciona bien, salvo un pequeño problema, el orden de los campos está desordenado y no coincide con el orden en el formulario, no encuentro ninguna lógica, ¿alguien me puede echar una mano? Muchas gracias
script cgi:
#!/usr/local/bin/perl
$mailprog = '/usr/lib/sendmail';
$mimail= '[email protected]';
$asunto= 'reporte de Problemas';
######################################################################
push(@codigo,"");
push(@codigo,"");
push(@codigo,"gracias!");
push(@codigo,"El informe ha sido enviado. ");
push(@codigo,"");
####################################################################
# Toma las entradas del formulario.
&toma_entradas;
&envia_mail($mimail, $asunto);
&responde;
# ======================== SUBRUTINAS. Subrutines
# ---------------------------- Responde al usuario
sub responde
{
# Empieza la creacion de la pagina que vera el usuario
print "Content-type: text/html\n\n";
foreach $linea (@codigo) {
print "$linea\n";
}
}
# ---------------------------- Recoge los parametros. Takes parameters
sub toma_entradas {
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
# Recoge el par name-value
"fb.mau.cgi" 113 lines, 3169 characters
# Recoge el par name-value
@pairs = split(/&/, $ENV{'QUERY_STRING'});
}
elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
# Lee la entrada
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# Recoge el par name-value
@pairs = split(/&/, $buffer);
}
foreach $pair (@pairs) {
($name, $value) = split(/\=/, $pair);
# Eliminamos caracteres peligrosos
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
$QUERY{$name} = $value;
}
}
sub envia_mail
{
local ($recipient,$subject);
$recipient=@_[0];
$subject=@_[1];
$recipient=~s/^(.*)\n$/\1/;
($s,$m,$h, @resto) = localtime(time);
if ($recipient)
{
open (MAIL, "|$mailprog $recipient") || die "No puedo abrir $mailprog!\n";
open( FILE, "> /tmp/$h:$m:$s");
print MAIL "Reply-to: $recipient (No admite reply)\n";
print MAIL "To: $recipient\n";
print MAIL "Reply-to: $recipient (No admite reply)\n";
print MAIL "To: $recipient\n";
print MAIL "Subject: $subject\n";
print FILE "Subject: $subject\n";
print MAIL "From: remitente de informes\n";
print MAIL "\n";
print FILE "\n";
print MAIL "-----------------------------------------------------------\n";
print FILE "-----------------------------------------------------------\n";
while (($name, $value) = each(%QUERY)){
print MAIL "$name:\n";
print FILE "$name:\n";
print MAIL "$value\n";
print FILE "$value\n";
print MAIL "-----------------------------------------------------------\n";
print FILE "-----------------------------------------------------------\n";
}
print MAIL "-----------------------------------------------------------\n\n";
print FILE "-----------------------------------------------------------\n\n";
close (MAIL);
close FILE;
}
}