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.

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