Página 1 de 1

Abrir cgi por otro cgi

NotaPublicado: 2014-09-22 15:42 @695
por seafree
Hola, buenas tardes, quiero abrir un cgi desde otro cgi de la siguiente manera:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "<form name=forma1 method=get action='http://10.26.6.15/cgi-bin/site/charts/economia.pl?vengo_de=paso1&cve=$cve_hom&clas=$clasif&date1=$date1&date2=$date2'>";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Previo a la llamada corroboré que se reciben los parámetros antes de formar el <form> y, efectivamente, están llegando pero al momento de usar <form> no se están enviando los parámetros, le agradeceré su valeroso apoyo.


Gracias.

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-22 16:46 @740
por explorer
En principio, no veo ningún fallo a la hora de crear la línea. Quizás usaría esta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print qq(<form name="forma1" method="get" action="http://10.26.6.15/cgi-bin/site/charts/economia.pl?vengo_de=paso1&cve=$cve_hom&clas=$clasif&date1=$date1&date2=$date2">);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Cuando hagas la petición, mira lo que sucede en los archivos access.log/error.log del servidor web. Allí saldrá la petición real que está recibiendo el servidor.

O algo tan sencillo como redirigir la salida hacia un archivo, para ver si realmente generar lo que queremos.

¿Los valores almacenados en $cve_hom, $clasif, $date1 y $date2 están escapados? Ten en cuenta que al ser una petición GET, deben ser url-escapados, para que puedan ser admitidos por el servidor.

Una forma de estar seguros:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use URI::URL;
  2.  
  3. my $url = url('http://10.26.6.15/cgi-bin/site/charts/economia.pl');
  4.  
  5. $url->query_form(
  6.         vengo_de => 'paso1',
  7.         cve      => $cve_hom,
  8.         clas     => $clasif,
  9.         date1    => $date1,
  10.         date2    => $date2,
  11. );
  12.  
  13. print qq(<form name="forma1" method="get" action="$url">);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Lo que hacemos es crear el URL y luego le agregamos los parámetros. El método query_form() se encargará de escapar los caracteres peligrosos o extraños. (Sacado de la pregunta How do I automate an HTML form submission? en perlfaq9).

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-23 14:27 @644
por seafree
Hola, explorer. Mira, pasa esto:

Tengo tres scripts. Uno es donde se despliega un botón para hacer una visualización restringida. En dicho botón estoy enviando los cinco parámetros y llegan bien al segundo script. De allí los estoy enviando a un programa que verifica permisos y van todos. Por último llamo un script para visualizar datos y recibo los parámetros enviados, pero algo no está bien en print "(<form name='forma1' method='get' action='$url'>)".

Sí están llegando bien los parámetros pero en algo me estoy equivocando:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $url = url('http://10.26.6.15/cgi-bin/site/charts/economia.pl');
  2. $url->query_form(
  3.     vengo_de => $vengo_de,
  4.     cve      => $cve_home,
  5.     clas     => $clasif,
  6.     date1    => $date1,
  7.     date2    => $date2,
  8. );
  9.  
  10. print qq(<form name="forma1" method="get" action="$url">)
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Espero me puedas seguir apoyando; mientras, sigo intentando.

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-23 15:25 @684
por explorer
A ver... el resultado de los print es un código en HTML, ¿verdad?

Bueno, pues queremos ver qué es lo que se genera, a ver si vemos algo. Porque en el código, yo lo veo todo perfecto.

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-24 10:26 @476
por seafree
Ok, veamos, despliego el primer script con un botón para llamar al resultado final:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <input type=button style="font:arial; color:#ffffff; background:#639c18" value="Costos" OnClick="parent.location='http://10.26.6.15/cgi-bin/site/pwd_costos.cgi?vengo_de=icev&cve=TMT&clas=TODO&date1=2014-08-01 00:00:00&date2=2014-08-31 23:59:59'">&nbsp;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Al pulsar clic el botón lleva los parámetros:

vengo_de,cve,clas,date1,date2

Llega al segundo script con:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
VENGO DE menu: icev - TMT - TODO -2014-08-01 00:00:00 - 2014-08-31 23:59:59

PIDE-> Usuario:
Password:
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Verifico que sea un usuario válido y llevo los parámetros iniciales:

icev - TMT - TODO - 2014-08-01 00:00:01 - 2014-08-31 23:59:00

Defino el $url:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $url=url('http://10.26.6.15/cgi-bin/site/charts/economia.pl');
  2. $url->query_form(
  3.         vengo_de => $vengo_de,
  4.         cve => $cve,
  5.         clas => $clasif,
  6.         date1 => $date1,
  7.         date2 => $date2,
  8.         );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

*¿Para formar el URL debo de utilizar el módulo URI::URL?

Al ser un usuario válido debería desplegar el resultado:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "<body onLoad='javascript&#058;document.forma1.submit();'>";
  2. {print qq(<form name="forma1" method="get" action="$url">);}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Deducción: La referencia al URL no la estoy haciendo correctamente. ¿Qué pasa con la referencia?

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-24 11:21 @514
por seafree
Ya lo hice funcionar, el uso de print qq(<form, no funcionó, utilicé print "<form...>";

Y listo, gracias.

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-24 11:49 @534
por explorer
Pues es extraño, porque qq() hace las mismas funciones que las comillas dobles.

Y sí, necesitas poner un use URL::URI; al principio del programa para poder usar el método query_form(). Pero si cuentas con otros módulos que hagan lo mismo (escapar los parámetros y crear el URL), pues adelante.

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-25 10:19 @471
por seafree
Sí, explorer tienes toda la razón, por las prisas me equivoqué al expresar el resultado, disculpas.

Verás: lo que pasa con mis scripts es el manejo del módulo SESSION que hago con mis variables aunque no entiendo bien, y tendré que leer el módulo SESSION y rastrear mis variables porque por algún lado se están perdiendo su valores.

Si puedes, por favor, proporcionar una explicación del módulo SESSION, te lo agradeceré.

Saludos.

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-25 11:25 @517
por explorer
No sé a qué módulo te refieres.

En CPAN me salen 1001 referencias con el nombre 'Session'.

Re: Abrir cgi por otro cgi

NotaPublicado: 2014-09-26 09:35 @441
por seafree
En efecto, ya tengo la información. Gracias.