• Publicidad

Problema con CGI y recepción de parámetros

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problema con CGI y recepción de parámetros

Notapor split_code » 2011-07-13 07:49 @367

Hola, soy nuevo en el mundo de los CGI, y estoy teniendo un problema que no consigo arreglar por más vueltas que le doy:

Por una parte tengo este mini cgi, que muestra un combo en el cual se elige un código numérico entre 1 y 100:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $entrada="numero_usuarios.txt";
  2. open (ENTRADA,"$entrada") || die "ERROR: No puedo abrir el fichero $entrada\n";
  3. print <<ENDHTML;
  4.  
  5. <LABEL class=hh3><p><strong><center>Reservar rango</center></strong></p></LABEL>
  6. <tr><td colspan="8"><center><SELECT class=w144 id=PARAMETRO tabIndex=3 name=PARAMETRO><\center>
  7. ENDHTML
  8. while (<ENTRADA>)
  9.     {
  10.             print "<OPTION value=$_ selected>$_</OPTION>";
  11.     }
  12. print <<ENDHTML;
  13. </SELECT>
  14. <A HREF="http://localhost/cgi-bin/passwords.pl?$PARAMETRO"> Comenzar </A>
  15. ENDHTML
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Como veis le paso con el <A HREF> del final el atributo que me interesa, el $PARAMETRO al cgi que llamo.

Pero el cgi que es llamado, cuando hago
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $argumento=$ENV{"QUERY_STRING"}; print $argumento
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

no imprime nada, no recibe ningún valor. En cambio si a este cgi le llamo pasando algo que no sea una variable de Perl, sí que lo recibe, por ejemplo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. <A HREF="http://localhost/cgi-bin/passwords.pl?cadenamixta123">
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La pregunta es, ¿cómo puedo hacer para guardar en una variable la opción elegida en el combo? Porque es lo que no me está funcionando bien... :?
split_code
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2011-06-08 03:58 @207

Publicidad

Re: Problema con CGI y recepción de parámetros

Notapor explorer » 2011-07-13 09:43 @447

No has entendido el funcionamiento de la mecánica...

Tienes definido un <select>, con todas las opciones, que se llama PARAMETRO, pero ese nombre, "PARAMETRO" es solo conocido dentro del DOM creado por el código HTML dentro del navegador web del usuario, en el momento de crear la página.

No es una variable Perl que aparece cuando el navegador está creando la página (el navegador no tiene un intérprete de Perl).

Esto es lo que ocurre. Tu primer CGI se ejecuta, creando el código HTML, y el servidor web (que arrancó el CGI), se encarga de llevar ese código HTML al navegador web del usuario. En ese momento, se está construyendo el código HTML, y en el <a href...>, la variable de Perl $PARAMETRO no tiene ningún valor.

El navegador construye la página, con su <select> y con el <a href=, pero vacío, sin parámetro ninguno.

Lo que necesitas es recibir el valor del <select>. Te basta con meter el <select> dentro de un <form>. Quitas el <a href=... y la dirección se la pones al formulario. Y ya está. Recibirás una cadena del tipo PARAMETRO=.....

Te recomiendo el uso del módulo CGI. Te simplificará mucho el código. Mira mi CGI mínimo, como ejemplo para leer parámetros pasados por el usuario.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con CGI y recepción de parámetros

Notapor split_code » 2011-07-14 06:35 @315

Me has aclarado muchas cosas con tu explicación, explorer. Un 10, como siempre.
Eres de mucha ayuda, ¡¡¡¡¡¡¡¡¡¡¡¡molto gracias!!!!!!!!!!!!
split_code
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2011-06-08 03:58 @207


Volver a Básico

¿Quién está conectado?

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

cron