Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Davicamarinha

Curl não mostra nada

Recommended Posts

Boa tarde a todos.

Estou tentando aprender a usar o curl, mas estou tendo um pouco de dificuldades na parte de fazer login em paginas.

 

Eu estou testando em site que eu mesmo fiz. Comecei com esse script basico:

 

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

curl_exec($ch);

curl_close($ch);

 

E apareceu o site para mim...

O problema começa agora. Procurei diversos lugares como fazer o login no curl, mas nenhum funcionou.

 

ini_set( 'display_errors', TRUE );
error_reporting( E_ALL | E_STRICT );

$ch = curl_init();

// Define a URL original (do formulário de login)
curl_setopt($ch, CURLOPT_URL, 'http://www.meusite.com.br/index.php');

// Habilita o protocolo POST
curl_setopt ($ch, CURLOPT_POST, 1);


// Imita o comportamento patrão dos navegadores: manipular cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

// Define o tipo de transferência (Padrão: 1)
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch,CURLOPT_USERPWD,"login:admin&senha:12345"); 

// Executa a requisição
$store = curl_exec ($ch);

// Define uma nova URL para ser chamada (após o login)
curl_setopt($ch, CURLOPT_URL, 'http://www.meusite.com.br/principal.php');

// Executa a segunda requisição
$content = curl_exec ($ch) or die( curl_error( $ch ) );

if(curl_exec($ch) === false) {
   echo 'Erro no cURL: ' . curl_error($ch);
} else {
   echo 'Sucesso!';
}
// Encerra o cURL
curl_close ($ch);

 

Simplesmente não aparece nada, branco, nenhum erro, NADA...

Curl é tão complicado assim, ou eu to sendo tão burro que não vejo o erro???

Agradeço desde já qualquer ajuda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você criou a variável $content. Pode usá-la no if, em vez de chamar curl_exec de novo

 

Talvez o problema seja o CURLOPT_USERPWD. Nunca o usei, mas suponho que seja para autenticação HTTP, não para autenticação com formulário, como costumamos ver por aí. Que tipo de autenticação sua página suporta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um sistema de login simples, digita o login e a senha e o script faz um teste se o login e senha existem no banco de dados, se existir ele deixar passar, se não, volta para a pagina de login...

 

Troquei o CURLOPT_USERPWD pelas linhas abaixo, mesmo problema, nada aparece.

 

$data = array('login' => 'admin', 'senha' => '12345');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho.

dá um echo em $content, em vez de mostrar apenas "sucesso" ou "erro"

 

O que eu tinha perguntado antes era que tipo de autenticação a página permite: com formulários ou via HTTP Auth. Era referente à página de login que você acesa via cURL, não o script que usa o cURL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o que você pediu, nada...

 

/*
if(curl_exec($ch) === false) {
   echo 'Erro no cURL: ' . curl_error($ch);
} else {
   echo 'Sucesso!';
}
*/

echo $content;

 

Não sei se isso vai ajudar...

Eu retirei o "or die( curl_error( $ch ) );"

 

E agora o If funcionou, ta mostrando "Sucesso", mas não aparece nada. E com o echo no $content continua sem aparecer nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim, ta certo? AInda continua dando o mesmo problema, nao mostra nada...

 

curl_setopt ($ch, CURLOPT_HEADER, true);


if($content === false) {
   echo 'Erro no cURL: ' . curl_error($ch);
} else {
   echo 'Sucesso!';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O codigo completo como esta agora

 

ini_set( 'display_errors', TRUE );
error_reporting( E_ALL | E_STRICT );



$ch = curl_init();

// Define a URL original (do formulário de login)
curl_setopt($ch, CURLOPT_URL, 'http://www.meusite.com.br/adm/index.php');

// Habilita o protocolo POST
curl_setopt ($ch, CURLOPT_POST, 1);


// Imita o comportamento patrão dos navegadores: manipular cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

// Define o tipo de transferência (Padrão: 1)
curl_setopt ($ch, CURLOPT_HEADER, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$data = array('login' => 'admin', 'senha' => 'passwd');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

// Executa a requisição
$store = curl_exec ($ch);

// Define uma nova URL para ser chamada (após o login)
curl_setopt($ch, CURLOPT_URL, 'http://www.meusite.com.br/adm/index2.php');

// Executa a segunda requisição
$content = curl_exec($ch);


if($content === false) {
   echo 'Erro no cURL: ' . curl_error($ch);
} else {
   echo 'Sucesso!';
}

// Encerra o cURL
curl_close ($ch);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apareceu isso aqui

 

HTTP/1.1 100 Continue HTTP/1.1 302 Moved Temporarily Connection: close Date: Thu, 13 Jan 2011 17:06:48 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET Set-Cookie: PHPSESSID=uck01u0bmh4m4gk2lf4a1uo2p0; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Location: index.php Content-type: text/html Content-Length: 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

O resultado agora foi diferente, mas não o esperado. Ele voltou para a pagina index.php, sendo que eu queria que ele fosse para a index2.php. Mas alterou o destino de index2.php para logar.php, ele foi para a pagina index2.php. Ou seja, aparentemente funcionou.

 

Uma ultima pergunta, meu script funciona do seguinte forma.

 

1-index.php - Preenche os dados de acesso(login e senha), e envia esses dados para o logar.php

2-logar.php - Verifica se os dados estão corretos, se estiverem corretos, vai para o index2.php, se não estiverem, volta para o index.php

 

A minha pergunta é, como eu faria para acessar uma pagina que não fosse a index2.php? Se eu quisesse acessar direto a fotos.php? Tem como usando o curl?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.