Recebendo e enviando cookies por PHP cURL

O PHP suporta uma lib chamada libcurl. Essa biblioteca tem como objetivo se comunicar com servidores enviando e recebendo informações por diversos tipos de protocolo, como HTTPS, HTTP PUT, upload por FTP e até mesmo o conhecido HTTP POST, método conhecido e utilizado para envio de formulários, por exemplo. O fato é que muitas vezes sabemos utilizar muito bem esta biblioteca, mas nos deparamos com o problema de sites que esperam o recebimento de COOKIES por exemplo, para que seu POST funcione. É o exemplo clássico de quando precisamos fazer uma requisição de login e é obvio que nesse processo precisamos de algo mais para continuar enviando e recebendo informações. Algo que esteja armazenado em COOKIES.

Vejamos então um exemplo de como receber e enviar esses COOKIES:

Passo 1: Declarando o caminho no nosso servidor do diretório que guardaremos esses COOKIES.

$dir = tempnam ("/tmp", "CURLCOOKIE");

Obs: A função tempnam cria um arquivo, com permissão de acesso definida para 0600, no diretório especificado. Se o diretório não existe, tempnam() pode gerar o nome de arquivo no diretório temporário do sistema. Retorna o nome gerado. (http://php.net/manual/pt_BR/function.tempnam.php)

Passo 2: Envie a requisição e diga onde espera salvar o COOKIE recebido.

$ch = curl_init ("http://algumdominio.com.br/");
// Aqui estamos dizendo através da operação CURLOPT_COOKIEJAR para que o COOKIE recebido seja salvo.
curl_setopt ($ch, CURLOPT_COOKIEJAR, $dir);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);

Passo 3: Envie a próxima requisição juntamente com o COOKIE previamente recebido e salvo.

$ch = curl_init ("http://algumdominio.com.br/paginaqueprecisadocookie");
// Através da operação CURLOPT_COOKIEFILE estarei enviando meu COOKIE.
curl_setopt ($ch, CURLOPT_COOKIEFILE, $dir);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);