How to read the output from a file to a variable by passing POST parameters?

Asked

Viewed 335 times

3

We can get the result of running a URL to a variable using the function 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 in the request?

1 answer

2


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

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);
}

Utilizing

<?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');

?>

This way, we are reading the result of the file ficheiro.php as if a POST at the same.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.