• Publicidad

Cómo recuperar valores de variables a través del URL

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

Notapor paopao » 2008-04-14 12:59 @583

ok.. ahora me muestra en formulario de la pagina del OpenCa pero no me imprime los valores de las variables que se le envian por el URL...

Es decir no recibo los valores que envie por POST desde el archivo php.

;)
paopao
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-02-08 13:44 @614

Publicidad

Notapor explorer » 2008-04-14 14:26 @643

A ver... a ver... con calma...

No se puede ir probando líneas para ver qué pasa...

Después del use CGI... fíjate en el CGI mínimo que hay un print que saca, primero, el header() y luego el start_html(). Una vez que se ha creado el comienzo de página, ya se puede imprimir lo que se quiera.

En resumen, podrías copiar literalmente todo el CGI mínimo, moviendo la línea de end_html() al final del módulo OpenCA que saca cosas en pantalla.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor paopao » 2008-04-14 14:36 @650

Hice exactamente lo que mencionas, y al reiniciar el OPENCA para que los cambios surjan efecto, el proceso se reinicia pero sucede lo siguiente:

Código: Seleccionar todo
Starting OpenCA ... Content-Type: text/html; charset=ISO-8859-1

<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>CGI MINIMO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>CGI MINIMO</h1><hr /><p>Si ves este texto es que SI esta funcionando bien</p><hr />
</body>
</html>

OK


OPENCA si levanta y tira sus PID´s pero la página sigue saliendo igual sin los valores de las variables.

Una vez más, Gracias...
paopao
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-02-08 13:44 @614

Notapor explorer » 2008-04-14 15:00 @667

Entonces está claro que antes de llegar a esas líneas del CGI mínimo el OpenCA ya ha inicializado el acceso al protocolo CGI. Se vé porque aparece el texto Starting OpenCA ... antes de lo demás.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor paopao » 2008-04-14 16:00 @708

Pero si yo le quito las líneas del cgi mínimo... el dice solamente:

Starting OpenCA... ok
paopao
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-02-08 13:44 @614

Notapor explorer » 2008-04-14 16:49 @742

Si eso sale en la página web que genera OpenCA, entonces es que ese script genera toda la salida del protocolo CGI. Es decir, él se encarga de procesar las entradas y la salida de la cabecera HTTP y de todo lo demás.

El poner líneas con salida usando el módulo CGI, creo que lo complica innecesariamente.

Yo creo que lo mejor es que intentes ejecutarlo paso a paso, con el debugger, por ejemplo, en una terminal de línea de comandos. Así sabrás en qué punto está leyendo los parámetros pasados por el URL, normalmente desde la entrada estándar (STDIN).

En el trozo de código que has puesto antes, aparece una línea como $query->param ('operation');, que da la sensación de que es uno de los parámetros que deben ser pasados por el URL, pero claro, para estar seguros, debería estar puesto en la documentación, o al menos, estar claro al ejecutarlo paso a paso.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor paopao » 2008-04-15 13:04 @586

Estoy usando este código al inicio del programa:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);

our $cedu;

if($ENV{'REQUEST_METHOD'} eq 'POST') {
    our $cedu;
    read (STDIN, $cedu, $ENV { 'CONTENT_LENGTH'} );
    print $cedu;
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Y lastimosamente aun no imprime nada... lo del debug en la línea de comandos como que no entiendo muy bien cómo hacerlo.

De todas maneras traté de correrlo así: perl nombrearchivo.. y el resultado fue nulo...

Creo que ya estoy perdiendo la calma... iré por una coca cola... te envío una vía Internet...

Saludos.
paopao
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-02-08 13:44 @614

Notapor explorer » 2008-04-15 15:04 @670

Es que... vamos a ver... si usas el módulo CGI no necesitas hacer nada de lo que haces a continuación, de leer directamente de la entrada estándar.

Los módulos están para ayudar a hacer las cosas más sencillas. Si no quieres o no vas a usarlos, es mejor que los quites, pues pueden influir en lo que vas a hacer.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor paopao » 2008-04-15 15:30 @688

Ahora cambié el método de post a get, porque me di cuenta que con post en realidad ni siquiera enviaba las variables a la página en Perl :oops:

Ya revisé y sí las manda por el url...

Ahora bien, si yo uso esta programación:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my (%datos1, $buffer, @pairs, $pair, $name, $value);

$buffer = $ENV{'QUERY_STRING'};

@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
 ($name, $value) = split(/=/, $pair);
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿Cómo puedo yo imprimir los valores de $name y $value en el mismo archivo para que se muestren en la pagina html...???

Gracias una vez más...
paopao
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2008-02-08 13:44 @614

Notapor explorer » 2008-04-15 16:02 @709

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print qq{<p>Nombre: $name. Valor: $value</p>\n};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Pero recuerda que antes de sacar nada a la salida estándar, debes sacar la cabecera HTTP de respuesta, para que el cliente web sepa qué es lo que le estás enviando.

Y si le envías HTML, recuerda que debes enviar un HTML de verdad, por lo que deberás enviar '<html>...<body>...' antes de lo anterior. Y lo mismo, para el final.

(Definitivamente, usar el módulo CGI es más cómodo que todo esto :) )
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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

cron