How to read the result of a file to a variable passing POST parameters?

3

We can get the result of executing a URL for a variable using the file_get_contents ( ) :

<?php
$pagina = file_get_contents('http://www.meusite.com/');
echo $pagina;
?>

But how can we extend this functionality by passing parameters of type POST to the request?

    
asked by anonymous 22.12.2013 / 16:47

1 answer

2

One way is to use the stream_context_create () and link that will allow us to create a flow context and generate an HTML query. Then just apply all this as parameters of the file_get_contents() function:

Function

/**
 * Get File Stream Data
 *
 * Executa um POST ao ficheiro indicado devolvendo o
 * output gerado pelo mesmo.
 *
 * @param string $postdata Parametros para enviar como POST ao ficheiro
 * @param string $filepath Caminho de URL completo para o ficheiro
 *
 * @return string Resultado do POST ao ficheiro indicado
 */
function getFileStreamData ($postdata, $filepath) {

    // preparar a matriz de opções
    $opts = array('http' =>
        array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded' . "\r\n",
            'content' => $postdata
        )
    );

    // criar o contexto de fluxo
    $context  = stream_context_create($opts);

    // devolver os resultados do ficheiro com a realização de um POST
    return file_get_contents($filepath, false, $context);
}

Use

<?php

// criar a consulta a enviar para a página
$postdata = http_build_query(
    array(
        "parametro1" => 'john',
        "parametro2" => 'doe',
        "parametro3" => 'bananas'
    )
); 

// recolher a página enviando os parâmetros de consulta
$result = getFileStreamData ($postdata, 'http://www.site.pt/caminho/para/ficheiro.php');

?>

In this way, we are reading the result of the file ficheiro.php as if a POST had been done to it.

    
22.12.2013 / 16:47