• Publicidad

Problema con el orden de los campos exportados desde un form

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Problema con el orden de los campos exportados desde un form

Notapor Mauro » 2005-07-08 06:55 @330

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;
}
}
Mauro
 

Publicidad

¿podrían ser más concisos?

Notapor Mauro » 2005-07-20 10:59 @499

Hola de nuevo,
lo primero muchas gracias por la ayuda, aunque, no soy un experto en perl ni mucho menos y no sé muy bien a qué se refieren, ?podrían comentarme más detalladamete qué es lo que debo hacer para ordenar los campos del formulario?

Muchísimas gracias,
Mauro
 


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados