Lucas NN Postado Março 31, 2006 Denunciar Share Postado Março 31, 2006 Há como eu incluir um script programado em Perl/CGI em uma página de PHP e o script só poder ser chamado por ela?Ou seja, tem o script x.pl ou y.cgi, e só o arquivo w.php pode usá-lo para que ninguém acesse o arquivo por fora.Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mbleonardo Postado Março 31, 2006 Denunciar Share Postado Março 31, 2006 você pode usar o file_get_contents() para processar o PERL e pegar o valor da saída. O problema da segurança pode ser resolvido se você criar uma espécie de senha, que você passa na hora o get_contents e verifica no PERL.PHP: <?php $saida_perl = file_get_contents("perl_script.cgi?senha=aert"); ?> PERL $senha = $QUERY_STRING{senha}; if($senha != "aert") /// usuário não pode ver o script Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucas NN Postado Março 31, 2006 Autor Denunciar Share Postado Março 31, 2006 **Aqui é o irmão do Lucas, ele me pediu para verificar as respostas da pergunta, mas não sei muita coisa**Eu copio e colo os códigos em que parte das páginas?Lembrando que o PHP é um fórum IPB da mesma versão que este e o perl é um arquivo só (o CGIPROXY).Ou você quer que eu faça um arquivo php com um include e adicionar o script?Muito obrigado em nome do meu irmão, ele está tentando fazer essa integração a meses, mas perl é uma linguagem de suporte muito pequeno.EDITANDO: 1) Sendo um pouco chato, dá para incluir uma página de erro caso a senha não seja validada?2) No perl_script.cgi eu mudo para o nome do arquivo? A extensão é .pl, tem alguma diferença? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucas NN Postado Abril 1, 2006 Autor Denunciar Share Postado Abril 1, 2006 Olha o que eu fiz até agora:Criei o arquivo php e inclui a linha que você me indicou:pox.php <html> <head> <title>Orkut Proxy by Lucas [NN]</title> <meta http-equiv="Content-Type" content="text/html;"> <link rel="stylesheet" href="class.css" type="text/css"> </head> <body bgcolor="#E2E2E2" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <br> <font class="titulos" size="4"> Novo Sistema de Integracao em testes</font> [color=#FF0000] <?php $saida_perl = file_get_contents("http://www.nn.bluehosting.com.br/okt4/nph-proxy.pl?senha=aert"); ?> [/color] <?php include("http://www.nn.bluehosting.com.br/okt4/nph-proxy.pl"); ?> <br> <center><font face="Verdana" size="2"><a href="../">Home</a></font></center> <br> <center><font face="Verdana" size="2">© 2000-2005 Pk's - Lucas [NN]. Todos os direitos reservados ®.</font></center> <body> </html> E mesmo colocando em vários lugares do arquivo perl a outra parte do código, a operação resulta em um erro que postarei mais embaixo. Aqui vai o código Perl do outro arquivo: nph-proxy.pl #!/usr/bin/perl Pelo tamanho do código tive que hospedá-lo, pois não estava conseguindo postar. Ele encontra-se em http://www.nn.bluehosting.com.br/codigo_perl_script.txt ERRO quando abro o pox.php: Warning: file_get_contents(http://www.nn.bluehosting.com.br/okt4/nph-proxy.pl?senha=aert): failed to open stream: HTTP request failed! tÿ¿xÿ¿Œ? ¸ÄdG in /home/lucasnn/public_html/ipb2/IPB2/pox.php on line 13 Warning: main(http://www.nn.bluehosting.com.br/okt4/nph-proxy.pl): failed to open stream: HTTP request failed! 5 in /home/lucasnn/public_html/ipb2/IPB2/pox.php on line 17 Warning: main(): Failed opening 'http://www.nn.bluehosting.com.br/okt4/nph-proxy.pl' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/lucasnn/public_html/ipb2/IPB2/pox.php on line 17 A parte do php me parece tudo certo, pode ser que eu estou colocando o código na parte errada do arquivo Perl. Onde eu devo colocar a parte do Perl? Algum erro está acontecendo? Este parâmetro é aceito para cgi/perl?Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucas NN Postado Abril 1, 2006 Autor Denunciar Share Postado Abril 1, 2006 Tentei de várias maneiras e não consegui. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mbleonardo Postado Abril 1, 2006 Denunciar Share Postado Abril 1, 2006 Para fazer um "include" de um arquivo que não é PHP, mas deve ser processado antes, deve-se utilizar a função virtual(). Experimente:<?php virtual("arquivo.cgi"); ?>Logicamente, os códigos que eu te passei foram só exemplos, não adianta você apenas copiar e colar no seu código, apenas te mostrei como fazer...Ah, só por curiosidade... o que esse gigantesco script PERL faz? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucas NN Postado Abril 2, 2006 Autor Denunciar Share Postado Abril 2, 2006 Utilizando o Virtual resulta em um problema:Warning: virtual(): Unable to include 'http://www.nn.bluehosting.com.br/okt4/nph-proxy.pl' - request execution failed in /home/lucasnn/public_html/ipb2/IPB2/pox.php on line 18O que devo alterar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mbleonardo Postado Abril 2, 2006 Denunciar Share Postado Abril 2, 2006 Essa função só funciona em servidor Apache.Tente colocar só a URL relativa, ao invés da completa. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucas NN Postado Abril 2, 2006 Autor Denunciar Share Postado Abril 2, 2006 Meu servidor é apache com cPanel, Linux.Eu estava colocando só isso no arquivo .php: <?php virtual("http://www.nn.bluehosting.com.br/okt4/nph-proxy.pl"); ?> Url relativa? E só uma recapitulação: 1) Se a pessoa colocar a url do arquivo perl no browser ela vai conseguir acessá-lo? Ou só pelo .php mesmo? Eu pedi em uma comunidade para verificarem o código perl que você me passou e falaram para eu colocar o código abaixo: foreach $pair ($ENV{'QUERY_STRING'}) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($name) { ${$name} = $value; } } if ($senha ne "aert") { print "você não pode ver esse script mané!"; } Mesmo assim não consegui fazer com que funcionasse como eu quero.***Ps: O Perl é um script de um proxy, é bem gigante mesmo ^^ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mbleonardo Postado Abril 3, 2006 Denunciar Share Postado Abril 3, 2006 URL relativa é tipo arquivo.cgi, ../arquivo.cgi, ../../arquivo.cgi, de acordo com o diretório que o arquivo está. Use ao invés de http://.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Agosto 30, 2006 Denunciar Share Postado Agosto 30, 2006 Eu queria fazer isso agora entre dois arquivos php, eu quero que somente a index possa chamar (include) o arquivo xyz.php caso o usuário abra o xyz.php diretamente (pelo link no browser) ele seja redirecionado para erro.php....vlw!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Lucas NN
Há como eu incluir um script programado em Perl/CGI em uma página de PHP e o script só poder ser chamado por ela?
Ou seja, tem o script x.pl ou y.cgi, e só o arquivo w.php pode usá-lo para que ninguém acesse o arquivo por fora.
Obrigado.
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.