Página 1 de 1

Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-27 09:34 @440
por soporteigwifi
Hola. Quisiera saber cómo hacer para pasar una variable de un script.pl a un archivo.php, por método post (oculto). El script.pl es ejecutado por comandos en la consola de la siguiente forma: perl script.pl, y de ahí quiero mandar datos de una variable a un PHP.

Gracias.

Re: Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-27 09:51 @452
por explorer
Pero... el llamado POST no es al PHP, sino al formulario HTML generado por la ejecución del PHP, ¿no?.

En ese caso, puedes hacerlo de muchas maneras. Por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.          use LWP::UserAgent;
  2.          $ua = LWP::UserAgent->new;
  3.  
  4.          my $req = HTTP::Request->new(
  5.              POST => 'http://rt.cpan.org/Public/Dist/Display.html');
  6.          $req->content_type('application/x-www-form-urlencoded');
  7.          $req->content('Status=Active&Name=libwww-perl');
  8.  
  9.          my $res = $ua->request($req);
  10.          print $res->as_string;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

o por ejemplo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.          use HTTP::Request::Common qw(POST);
  2.          use LWP::UserAgent;
  3.          $ua = LWP::UserAgent->new;
  4.  
  5.          my $req = POST 'http://rt.cpan.org/Public/Dist/Display.html',
  6.                        [ Status => 'Active', Name => 'libwww-perl' ];
  7.  
  8.          print $ua->request($req)->as_string;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Los dos ejemplos están sacados de la página de manual de lwpcook, pero hay dos docenas de formas distintas para hacerlo. De forma más moderna, con Mojolicious (Mojo::UserAgent):

my $tx = $ua->post_form('http://servidor/archivo.php' => {variable => 123});

Re: Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-27 16:15 @718
por soporteigwifi
La idea es la siguiente (tal vez no me expresé bien): dentro del script.pl estoy pasando la variable de esta forma al PHP: http://midominio.com.ar/archivo.php?pag=$var. ($var es una variable de Perl, que la estoy pasando por URL (method get) al archivo.php.

Esto anda perfecto, pero lo que quería hacer es pasar eso pero que no se vea en la URL ¿me explico? Es decir, pasarlo de forma oculta como el method post de PHP.

Gracias.

Re: Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-27 17:19 @763
por explorer
Sí, te he entendido.

Y la respuesta es justo la que te he puesto: hacer una petición POST.

Fíjate en el primer código:
  • En las líneas 1 y 2 creamos un objeto LWP::UserAgent
  • En la 4 y 5, creamos un objeto HTTP::Request en donde indicamos que vamos a hacer una petición POST, a una determinada dirección, que es la correspondiente al action del formulario. Esto creará una petición HTTP con una serie de cabeceras estándares
  • En la 6 indicamos en la cabecera, además, que la petición es del tipo 'application/x-www-form-urlencoded', que es la forma estándar de codificar el paso de claves/valores desde el formulario al action
  • En la 7 es donde agregamos, en el contenido del mensaje, las claves/valores que queremos que el action procese
  • En la 9 es donde mandamos la petición
  • Y en la 10, recibimos la respuesta que, en este caso, sacamos como cadena de caracteres.
El segundo y tercer código es lo mismo, pero más abreviado, al usar otro módulo distinto.

Los parámetros no se ven por ningún lado, pues se trasmiten por los canales estándares (entrada y salida), y no por el URL.

En tu caso, tu action es http://midominio.com.ar/archivo.php.

No sé si habrá quedado claro... :(

Re: Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-27 19:23 @849
por soporteigwifi
Estuve probando pero no pude dar en la tecla, te muestro cómo lo tengo hecho y andando por método GET. Te comento que este script.pl se ejecuta en el squid.conf mediante url_rewrite_program

script.pl

while (<>) {
my ($url) = split;
my $URA = "http://midominio/?pag=$url";
$url = "302:$URA";
print "$url\n";
}

y en index.php tengo

<?
echo $_GET["pag"];
?>

La idea es recibir la variable $url por método POST de esta forma

<?
echo $_POST["pag"];
?>

Re: Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-28 10:28 @477
por explorer
Pues solo tienes que modificar el primer o segundo ejemplo, con la URL que quieres usar. Y luego poner el parámetro que quieres pasar...

¿Lo has probado?

P.D. quizás este foro de Intermedio no es el correcto.

Re: Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-28 15:58 @707
por soporteigwifi
Sí, probé, pero no me funciona. Algo seguro estoy haciendo mal.

Gracias, igual voy a seguir probando.

Re: Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-28 16:02 @709
por explorer
Publica el código y así vemos qué puede estar mal...

Re: Pasar variable de un script Perl a un archivo PHP

NotaPublicado: 2012-03-28 19:37 @859
por soporteigwifi
Mira, por ahora encripté usando MIME::Base64.

Gracias