Un saludo para todos, escribo porque tengo un proble y no logro solucionarlo, he creado un CGI que pide dos datos al usuario, nombre y e-mail, el cgi recibe esta informacion y la guarda en un archivo .dat junto con un numero generado al azar, y muestra en pantalla los datos introducidos y el numero al azar, luego el usuario mediante otro formulario introduce su numero y el CGI debe buscar ese numero dentro del archivo .dat y mostrarle en pantalla sus datos, en este caso el nombre y el e-mail introducidos anteriormente, este es el código, espero me colaboren:
#!/usr/local/bin/perl
print "Content-type: text/plain\nPragma: no-cache\nExpires: 0\n\n";
################################################## ##
if ($ENV{'QUERY_STRING'})
{
$buffer = $ENV{'QUERY_STRING'};
}
elsif ($ENV{'CONTENT_LENGTH'})
{
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
}
@cgiPairs = split(/&/, $buffer);
foreach $cgiPairs (@cgiPairs)
{
($name,$value) = split(/=/, $cgiPairs);
$value =~ s/\+/ /g;
$value =~ s/%(..)/pack("c",hex($1))/ge;
$Form{$name} .= "\0" if (defined($Form{$name}));
$Form{$name} .= "$value";
}
undef $name; undef $value;
################################################## ##
if ($Form{'submit'})
{
$nombre = $Form{'nombre'};
$email = $Form{'email'};
$archivo = "/data1/hypermart.net/darkmew/cgi-bin/numeros.dat";
if ($nombre eq ''){
&error ("nombre en blanco.");
}
elsif ($email eq ''){
&error ("E-mail en blanco.");
}
else {
&procesadatos;
}
}
################################################
if ($Form{'submit2'}){
$numero = $Form{'numeusuario'};
$acceso = 0;
if ($numero == ''){
&error ("Numero en blanco.");
}
else
{
open(DATOS,"$archivo") || &error ("No se puede abrir la Base de Datos.");
@lineas = <DATOS>;
close(DATOS);
foreach $linea (@lineas){
chomp($linea);
@datos = split(/:/, $linea);
$acceso = 1 if ($datos[0] eq $numero);
}
Jair A. Bedoya