Enviando dados via POST com file_get_contents() em PHP

A função file_get_contents() é utilizada para obter dados de arquivos e URLs. Através dela, também é possível enviar dados via POST para uma página web e então receber o resultado desta página.

Para isto, basta utilizar o terceiro parâmetro da função. O terceiro parâmetro deve ser um stream de contexto que pode ser criado através da função stream_context_create().

Primeiro, vamos criar a query HTTP que será enviada por POST:

$dados = http_build_query(array('firstname' => 'John', 'lastname' => 'Doe'));

Em seguida, vamos criar o stream de contexto que será passado como parâmetro para a função file_get_contents():

$contexto = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'content' => $dados,
        'header' => "Content-type: application/x-www-form-urlencoded\r\n"
        . "Content-Length: " . strlen($dados) . "\r\n",
    )
));

Após isto, basta chamar a função e obter a resposta:

$resposta = file_get_contents('http://url_de_teste/teste.php', null, $contexto);

Um exemplo completo pode ser baixado AQUI.

Até a próxima 😉