Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

t0ze

[Resolvido] Login via httprequest e download de ficheiro

Mensagens Recomendadas

t0ze    3
t0ze

Boa tarde,

Não sei se isto é possível com PHP e nem sei por onde começar, o contexto é este:

Existem uma Listagem com uma série de filtros que podem ser aplicados a essa mesma listagem. Existem também nessa Lista um botão de "Download". Ou seja, em utilização normal o utilizador, faz Log In e só depois do login bem sucedido é que tem acesso a fazer as pesquisas e o download de um ficheiro (Crystal Report) que contem os resultados dessa pesquisa.

A necessidade é obter esse ficheiro de forma automática, sem o utilizador ter efectivamente que fazer login, aplicar os filtros e carregar no download.

Obrigado.

Editado por t0ze

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
t0ze    3
t0ze

Obrigado I-NOZex.

Estive a ler e a pesquisar sobre o CURL, e é isso, é uma coisa nova para mim, e para já numa primeira fase queria fazer login, por isso segui o exemplo dado aqui neste topic

http://www.portugal-a-programar.pt/topic/58623-login-automatico/page__hl__curl

Acontece que a página fica branca, não sei como verificar se fiz login ou nao...

O meu ficheiro cookie.txt

Mostra isto

# Netscape HTTP Cookie File

# http://curl.haxx.se/docs/http-cookies.html

# This file was generated by libcurl! Edit at your own risk.

og1 FALSE / FALSE 0 PHPSESSID 433ifcekqoj210nvjltva5hfl1

Editado por t0ze

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
t0ze    3
t0ze

Já ultrapassei o login e já estou com a informação que preciso:

curl_setopt($ch, CURLOPT_URL, $strURL);
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
print_r($store);

Acontece que isto é suposto retornar um crystal report, e ele está lá porque consigo ler algumas partes do conteudo aqui:

@ABCDEþÿÿÿGþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿProdORACLE_PRODGENTAP.GENTAP_ACTV_HIST_VIEWgentapðpppp0xjjj8ky//.x;:%;:;:;;x0010000000000838<90Pool = 'A320' and Rank = 'OPT' and Base = 'LIS' and Employee = '17169.4'D  T#   pdsodbc.dll GENTAP.GENTAP_ACTV_HIST_VIEW  tap_actv_hist_view uþÿà…ŸòùOh«‘+'³Ùà…ŸòùOh«‘+'³Ù0u˜ ¬¸ÄÐÜè ô  $08@Hhä218@ÀóžE@«g²¯‚À@:ÀÛÎ@Іֆ€ÀSeagate Crystal Reports0ððuSQLpdsodbc.dllODBC - Oracle_‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ   

O que eu não estou a ser capaz é de gravar esse output para um ficheiro .rpt

Alguma sugestão ?

Obrigado.

PS: EU tenho instalado e configurado a COM do Crystal Report e consigo fazer isto sem problemas:

//------  Variables ------
$my_report = "planeamentos.rpt";
$my_csv = "planeamentos.csv";
//------ Create a new COM Object of Crytal Reports------
$ObjectFactory= new COM("CrystalReports13.ObjectFactory.1");
//------ Create a instance of library Application -------
$crapp =$ObjectFactory->CreateObject("CrystalDesignRunTime.Application.13");
$creport = $crapp->OpenReport($my_report, 1);
$creport->ExportOptions->DiskFileName=$my_csv;
//$creport->ExportOptions->FormatType=31; // PDF
$creport->ExportOptions->FormatType=6; //CSV
$creport->ExportOptions->DestinationType=1;
$creport->Export(false);
//------ Release the variables
$creport = null;
$crapp = null;
$ObjectFactory = null;

Editado por t0ze

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
t0ze    3
t0ze

Não. Vou testar. Obg

EDIT:

Deu direitinho Rui Carlos, acontece é que as vezes os pedidos resultam em ficheiros com muitas linhas e a escrever num ficheiro acaba por se tornar muito lento.

Há alguma chance de colocar logo tudo num binário ? Não sei, por exemplo fazer o

echo $store

E no header colocar o type do crystal report ? (não pesquisei ainda muito sobre header's confesso).

Obrigado pela dica.

Editado por t0ze

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.