PHP – Introdução a lib CURL

CURL significa Cliente URL.
Basicamente ela funciona para obter conteudo de outros sites. Todo desenvolvedor web precisará dela um dia.
A lib CURL é uma biblioteca muito poderosa. Hoje ela aceita os seguintes protocolos, http, https, ftp, gopher, telnet, dict, file, e ldap. Suporta também os certificados HTTPS, HTTP POST, HTTP PUT, upload com FTP, upload baseado em formulário HTTP, proxies, cookies, e autenticação usuário+senha.

Como funciona?
É como se no servidor abrisse uma janela do navegador com a URL que você solicitou. Você pode pedir para enviar variaveis por POST ou GET, pegar os cookies de seção (session cookies), o header da pagina, e até mesmo imagens e uma infinidade de coisas. Essas informações são todas armazenadas e disponibilizadas para o php trabalhar com elas e repassada então para o cliente.

Vamos dar uma olhada em um exemplo usando a URL do Google:

Exemplo1:


2. Cria um novo recurso CURL. Sempre se da inicio ao recurso com a função curl_init().
3. A função curl_setopt é muito usada. Ela estabelece opções (set options) para o recurso iniciado.
4. curl_exec() executa o recurso abrindo a seção com a URL.
5. E por fim encerra a seção com curl_close();

Este é praticamente o esqueleto de toda aplicação que utilize CURL.
Copie e cole o codigo acima e teste no seu servidor.

Principais e mais usadas opções da biblioteca: (veja todas as opções na documentação do php aqui)

CURLOPT_URL – a URL para obter. isto também pode ser definido ao inicializar a sessão com curl_init().
CURLOPT_FOLLOWLOCATION TRUE – para seguir qualquer cabeçalho “Location: ” que o servidor envie como parte do cabeçalho HTTP (note que isto é recursivo, PHP irá seguir tantos cabeçalhos “Location: ” quantos sejam enviados, a menos que CURLOPT_MAXREDIRS seja definido).
CURLOPT_MAXREDIRS – o número máximo de redirecionamentos HTTP a seguir. Use esta opção em conjunto com CURLOPT_FOLLOWLOCATION.
CURLOPT_HEADER – TRUE para incluir o cabeçalho na saída.
CURLOPT_POST – TRUE para fazer um HTTP POST normal, mais comunmente usado pelos formulários HTML.
CURLOPT_POSTFIELDS – todos os dados para enviar em uma operação HTTP “POST”. Para enviar um arquivo, adicione antes do nome do arquivo um @ e use o caminho completo. Isto pode ser passado como uma string codificada para url como ‘para1=val1&2=val2&…’ ou como uma matriz com o nome do campo como índice e o dado do campo como valor.
CURLOPT_COOKIEFILE – o nome do arquivo contendo os dados de cookie. O arquivo de cookie pode estar no formato Netscape, ou apenas no estilo de cabeçalhos HTTP salvos em um arquivo.
CURLOPT_COOKIEJAR – o nome do arquivo para salvar todos os cookies internos quando a conexão fechar.
CURLOPT_RETURNTRANSFER – TRUE para retornar a transferencia como uma string de valor de retorno de curl_exec() ao invés de enviar diretamente para a saída.

Vamos ver mais alguns exemplos para entendermos melhor ainda usando a URL do google:

Exemplo2:


2. Cria um novo recurso CURL.
3. CURLOPT_URL para dizer qual é a url para acessar.
4. CURLOPT_RETURNTRANSFER para armazenar o resultado em uma variavel.
5. Executa o recurso abrindo a seção com a URL e armazenado o resultado em $output.
6. Encerra a seção.
7. Echo para simplesmente mostrar a saída.

Exemplo3:


2. Cria um novo recurso CURL.
3. CURLOPT_URL para dizer qual é a url para acessar.
4. CURLOPT_RETURNTRANSFER para armazenar o resultado em uma variavel.
5. Executa o recurso abrindo a seção com a URL e armazenado o resultado em $output.
6. Encerra a seção.
7. Substitui todas as palavras ‘Google’ por ‘boa-ventura.net’ na variavel $output;
8. Mostra o resultado.

Só para finalizar este POST, vamos fazer alguma coisa util. Entrem no site http://www.chucknorris.com.br/r.php, é um site que tem as piadinhas sobre Chuck Norris. Vamos ao exemplo e suas possibilidades.

Exemplo4:


2. Cria um novo recurso CURL.
3. CURLOPT_URL para dizer qual é a url para acessar.
4. CURLOPT_RETURNTRANSFER para armazenar o resultado em uma variavel.
5. Executa o recurso abrindo a seção com a URL e armazenado o resultado em $output.
6. Encerra a seção.
7-9. Para conseguir pegar alguma informação de um site, voce precisa dar uma estudada no html do site. Onde que a informação que voce quer aparece. Neste caso está entre o codigo da linha 7 e 8. A linha 9 serve para tirar o numero da piada.
10. Mostra a piada.

Veja aqui o codigo acima funcionando.

Use sua imaginação, ao invés de mostrar a piada o aplicativo poderia consultar o banco de dados se esta piada ja está la, caso não esteja grava-la, caso esteja fazer uma nova consulta. Coloque isso em um loop de 10 e terá 10 piadas diferentes em seu banco de dados.

Agora é só usar a imaginação.

This entry was posted in PHP and tagged , , , , , . Bookmark the permalink.

One Response to PHP – Introdução a lib CURL

  1. Pingback: PHP - Curl & Captchas « boa-ventura.net

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>