+4

Usando a biblioteca Curl no PHP para trabalhar com recursos remotos

criado por Renato Garcia Bonicio em 25/05/2006 10:15am
Nos dois exemplos anteriores, você pode notar que usamos a função curl_setopt() para definir como a página seria acessada. Definindo mais opções, nós podemos perceber a força do Curl e o tudo o q ele torna possível.
Vamos testar um pouco mais:

Se você consultar o manual pela função curl_setopt(), você irá encontrar uma vasta lista de opções. Vamos testar as mais interessantes:

A primeira opção é a “CURLOPT_FOLLOWLOCATION”. Quando definida como TRUE, Curl automaticamente segue qualquer redirecionamento feito pela página. Por exemplo, se uma página PHP usa header("Location: http://url"), curl vai automaticamente segui-la:

<?php 
$ch = curl_init();

// informar URL e outras funções ao CURL
curl_setopt($ch, CURLOPT_URL, "http://www.google.com/");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// Acessar a URL e imprimir a saída
curl_exec($ch);
?>

Se o Google decidir por redirecionar, o exemplo anterior irá seguir para o novo local. Outras duas opções relacionadas à esta ação são as opções “CURLOPT_MAXREDIRS” e “CURLOPT_AUTOREFERER”.

A opção “CURLOPT_MAXREDIRS”, permite a você escolher quantos redirecionamentos poderão ser seguidos. Se a opção “CURLOPT_AUTOREFERER” estiver definida como TRUE, Curl irá automaticamente incluir o cabeçalho Referer em cada redirecionamento.

A próxima é a opção “CURLOPT_POST”. Esta é uma opção muito útil, a partir da idéia de que ela possibilita a você fazer requisições via POST, ao invés de requisições GET, que atualmente significa que você pode submeter um form para outras páginas sem estar atualizado.
O exemplo a seguir demonstra essa idéia:

<?php 
$ch = curl_init();

// informar URL e outras funções ao CURL
curl_setopt($ch, CURLOPT_URL, "http://projects/phpit/content/using%20curl%20php/demos/handle_form.php");

// Faz um POST
$data = array('name' => 'Renato', 'surname' => 'Bonicio');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

// Acessar a URL e imprimir a saída
curl_exec($ch);
?>

E o form.php:
<?php 
echo '<h3>Variáveis que eu recebi: </h3>';
echo '<pre>';
print_r ($_POST);
echo '</pre>';
?>

Como você pode perceber, está opção torna fácil o submit de forms e é uma ótima maneira de testarmos nossos forms sem a obrigação de preenchermos todas às vezes.

A opção “CURLOPT_CONNECTTIMEOUT”, é usada para definir quanto tempo a Curl deve esperar por uma tentativa de conexão. Esta é uma opção muito importante para evitar uma parada em seu script. Uma opção também relacionada a este assunto é a “CURLOPT_TIMEOUT”, que é usada para definir quantas requisições são permitidas.

A última opção é a “CURLOPT_USERAGENET”, que permite a você definir o usuário de uma requisição. Isto torna possível a criação de seu próprio “Buscador”:

<?php 
$ch = curl_init();

// informar URL e outras funções ao CURL
curl_setopt($ch, CURLOPT_URL, "http://www.useragent.org/");
curl_setopt($ch, CURLOPT_USERAGENT, 'My custom web spider/0.1');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// acessa a URL e imprime a saída
curl_exec($ch);
?>

Comentários:

Mostrando 1 - 2 de 2 comentários
Victor Sá disse:
Gostei muito do mini tutorial!, inclusive estou fazendo uma aplicação com o curl, está sendo de grande utilidade!
03/03/2010 11:52pm (~10 anos atrás)

André Taiar disse:
Curl é demais.

O interessante é que ela eh disponível para muuitas linguagens (já usei com PHP e com C) e tem um potencial muito bom pra recuperar informações da internet, trabalhar com formulários!

É coisa de primeira!

Parabéns pelo artigo com exemplos relevantes!
03/11/2009 9:59am (~11 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)