• Publicidad

Abrir cgi por otro cgi

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Abrir cgi por otro cgi

Notapor seafree » 2014-09-22 15:42 @695

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.
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518

Publicidad

Re: Abrir cgi por otro cgi

Notapor explorer » 2014-09-22 16:46 @740

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).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Abrir cgi por otro cgi

Notapor seafree » 2014-09-23 14:27 @644

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.
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518

Re: Abrir cgi por otro cgi

Notapor explorer » 2014-09-23 15:25 @684

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Abrir cgi por otro cgi

Notapor seafree » 2014-09-24 10:26 @476

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?
Última edición por explorer el 2014-09-24 11:47 @532, editado 2 veces en total
Razón: botom => botón; click => clic; parametros => parámetros; valido => válido; deberia => debería; que => Qué
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518

Re: Abrir cgi por otro cgi

Notapor seafree » 2014-09-24 11:21 @514

Ya lo hice funcionar, el uso de print qq(<form, no funcionó, utilicé print "<form...>";

Y listo, gracias.
Última edición por explorer el 2014-09-24 11:38 @526, editado 1 vez en total
Razón: utilice => utilicé
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518

Re: Abrir cgi por otro cgi

Notapor explorer » 2014-09-24 11:49 @534

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Abrir cgi por otro cgi

Notapor seafree » 2014-09-25 10:19 @471

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.
Última edición por explorer el 2014-09-25 11:22 @515, editado 1 vez en total
Razón: Si => Sí; razon => razón; equivoque => equivoqué; Veraz => Verás; modulo => módulo; tendre => tendré; explicacion => explicación; algun => algún; estan => están; agradecere => agradeceré
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518

Re: Abrir cgi por otro cgi

Notapor explorer » 2014-09-25 11:25 @517

No sé a qué módulo te refieres.

En CPAN me salen 1001 referencias con el nombre 'Session'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Abrir cgi por otro cgi

Notapor seafree » 2014-09-26 09:35 @441

En efecto, ya tengo la información. Gracias.
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado