Tutorial retirado do blog do Thiago Belem

Vamos lá!

No PHP existem quatro formas de você acessar uma URL externa: usando a função fopen(), usando a função fsockopen(), usando a biblioteca cURL e usando a classe HTTP_Request. Cada uma dessas formas tem o seu uso específico mas todas podem ser usadas, de forma geral, pra mesma coisa. Eu, pessoalmente, prefiro e recomendo o uso da biblioteca cURL pelo seu poder e facilidade de uso.

Para poder usar o cURL no seu site/sistema você precisa que a biblioteca esteja instalada e habilitada, então vamos a um tutorial rápido de como fazer isso.. Se você já sabe que tem o cURL instalado no seu servidor, é só pular para o capitulo “Uso básico do cURL”.


Verificando se o cURL está instalado

Recomendo que antes de sair tentando instalar a cURL, verifique se ela já não está habilitada no seu servidor… Crie um arquivo .php com o seguinte conteúdo:

Código PHP:
<?php
    
// Exibe informações relativas ao PHP e suas extensões
    
phpinfo();
?>
Acesse esse arquivo pelo seu navegador e procure por “cURL support” se encontrar algo significa que você tem o cURL instalado e pode pular o próximo capitulo.


Instalando o cURL

Para instalá-lo é bem simples, basta acessar o seu arquivo php.ini que geralmente fica dentro da pasta php do seu servidor (sim, você precisa ter acesso a esse arquivo) e procure por essa linha:
Código:
;extension=php_curl.dll
Agora remova o ponto-e-vírgula (; ) do começo da linha, reinicie o seu servidor e voila! Você acabou de instalar o cURL no seu sistema.


Uso básico do cURL

Bom, primeiro de tudo, vamos o script mais simples que você pode usar para pegar a resposta de um site (que nesse caso, é o arquivo robots.txt do blog Thiago Belem):

Código PHP:
<?php
    
// Inicia o cURL acessando uma URL
    
$cURL curl_init('http://blog.thiagobelem.net/robots.txt');
    
// Define a opção que diz que você quer receber o resultado encontrado
    
curl_setopt($cURLCURLOPT_RETURNTRANSFERtrue);
    
// Executa a consulta, conectando-se ao site e salvando o resultado na variável $resultado
    
$resultado curl_exec($cURL);
    
// Encerra a conexão com o site
    
curl_close($cURL);
?>
Depois de executar esse script, o conteúdo da variável $resultado será exatamente o conteúdo do meu arquivo robots.txt. Você pode usar esse método para pegar o HTML resultado de qualquer site e etc.

A função curl_setopt() permite que você defina uma série de opções MUITO úteis para o uso do cURL, recomendo que vocês vejam a [Somente usuários registrados podem vem os links. ] dela para dar uma olhada na lista completa.


Verificando se um site está no ar e acessível

Com o script esse você vai poder acessar qualquer endereço ou URL pública e descobrir se ele retorna erro 404 (página não encontrada) ou não, baseando-se no código HTTP de resposta:

Código PHP:
<?php
    $cURL 
curl_init('http://www.sitequenaoexiste.net.br');
    
curl_setopt($cURLCURLOPT_RETURNTRANSFERtrue);

    
// Seguir qualquer redirecionamento que houver na URL
    
curl_setopt($cURLCURLOPT_FOLLOWLOCATIONtrue);

    
$resultado curl_exec($cURL);

    
// Pega o código de resposta HTTP
    
$resposta curl_getinfo($cURLCURLINFO_HTTP_CODE);

    
curl_close($cURL);

    if (
$resposta == '404') {
        echo 
'O site está fora do ar (ERRO 404)!';
    } else {
        echo 
'Parece que está tudo bem...';
    }
?>
Ai tem uma opção nova (CURLOPT_FOLLOWLOCATION) que vai permitir que o cURL siga todos os redirects que houverem na URL. Por exemplo, se estivermos usando o TintURL é preciso seguir o redirecionamento depois de acessar a url reduzida para chegar na URL final.


Enviando dados para formulários (via método POST)

Suponhamos que você queira testar o cURL enviando dados para um formulário, como se você tivesse digitando os dados e dando submit no formulário. Você vai precisar de duas coisas: a lista dos nomes (names) dos campos e o action do formulário (que é pra onde os dados são en*****s)… Depois é só montar um script parecido com esse:

Código PHP:
<?php
    
// Aqui entra o action do formulário - pra onde os dados serão en*****s
    
$cURL curl_init('http://www.meusite.com.br/envia.php');
    
curl_setopt($cURLCURLOPT_RETURNTRANSFERtrue);

    
// Definimos um array seguindo o padrão:
    //  '<name do input>' => '<valor inserido>'
    
$dados = array(
        
'nome' => 'ImperyusGames',
        
'email' => 'imp@imperyusgames.com.br',
        
'mensagem' => 'Testando o cURL!'
    
);

    
// Iremos usar o método POST
    
curl_setopt($cURLCURLOPT_POSTtrue);
    
// Definimos quais informações serão enviadas pelo POST (array)
    
curl_setopt($cURLCURLOPT_POSTFIELDS$dados);

    
$resultado curl_exec($cURL);
    
curl_close($cURL);
?>
Mas suponhamos que você testou o script e reparou que algo deu errado.. E depois de fazer o seu trabalho de casa, descobriu que o site permite apenas dados vindos do próprio site (ou seja, ele verifica o REFERER que é o endereço da página na qual os dados foram inseridos). Então, você ajusta o seu script da seguinte maneira:

Código PHP:
<?php
    $cURL 
curl_init('http://www.meusite.com.br/envia.php');
    
curl_setopt($cURLCURLOPT_RETURNTRANSFERtrue);

    
$dados = array(
        
'nome' => 'Thiago Belem',
        
'email' => 'contato@thiagobelem.net',
        
'mensagem' => 'Testando o cURL!'
    
);

    
curl_setopt($cURLCURLOPT_POSTtrue);
    
curl_setopt($cURLCURLOPT_POSTFIELDS$dados);

    
// O site só permite requisições vindas do próprio site:
    // Definimos então o REFERER como sendo a página do formulário de contato
    
curl_setopt($cURLCURLOPT_REFERER'http://www.meusite.com.br/contato.php');

    
$resultado curl_exec($cURL);
    
curl_close($cURL);
?>
Existem vários outros usos e possíveis exemplos do cURL, mas a intenção era apenas mostrar como é simples e rápido usar todos os recursos do cURL… Se você misturar os comandos certos com as funções certas, vai poder fazer um sistema bem legal.

Créditos: Thiago Belem

Praticamente um CTRL+C/CTRL+V...
Vocês podem acessar o blog do Thiago Belem, lá tem bons tutoriais para você que está aprendendo php!