Array
(
)

Como ler o resultado de um ficheiro para uma variável passando parâmetros POST?

PHP
Joaci Gomes
   - 11 jan 2016

Boa tarde,
É possível retornar o resultado da execução de uma URL pra uma var fazendo uso de uma função file_get_contents():
<?php
$pagina = file_get_contents('http://www.meusite.com/');
echo $pagina;
?>

É possível estender esta funcionalidade, passando parâmetros do tipo POST na requisição?

Valew!

Nilton Braz
   - 11 jan 2016

Uma maneira é fazer uso das funções stream_context_create() e http_build_query() que nos vão permitir criar um contexto de fluxo e gerar uma consulta de HTML. Depois basta aplicar tudo isso como parâmetros da função file_get_contents():

Função
/**
* 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);
}
Utilização
<?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');

?>
Desta forma, estamos a ler o resultado do ficheiro ficheiro.php como se tivesse sido realizado um POST ao mesmo.

0
|
0

Joaci Gomes
   - 12 jan 2016

Obrigado pela atenção e desculpa na demora do feedback Nilton Felipe Braz!

Deu certo!

0
|
0