Como ler o resultado de um ficheiro para uma variável passando parâmetros POST?
11/01/2016
0
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!
É 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!
Joaci Gomes
Curtir tópico
+ 1
Responder
Posts
11/01/2016
Nilton Braz
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.
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.
Responder
12/01/2016
Joaci Gomes
Obrigado pela atenção e desculpa na demora do feedback Nilton Felipe Braz!
Deu certo!
Deu certo!
Responder
Clique aqui para fazer login e interagir na Comunidade :)