Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite, pessoas!
Então, existe alguma forma de eu obter os Headers de uma requisição POST PHP? Deixa eu tentar explicar melhor: preciso restringir o acesso de uma página apenas a usuários que possual uma AccessKey, então pensei em enviar a AcessKey como um Header e recuperá-lo na página que recebe o POST para poder tratar a requisição e verificar se usuário possui as credenciais válidas. Meu código que faz o POST tá assim:
$url = "https://www.mywebsite.com/teste.php";
$postdata = http_build_query(
array(
'userCONTENT' => 'example',
'userIDcredencials' => 'example'
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
"Accept-language: en\r\n" .
"AccessKey: 1234567890\r\n",
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
echo $result;
Só que não sei o que fazer na página teste.php pra ela recuperar o header, tentei assim:
$url = "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
echo "<pre>";
print_r(get_headers($url, 1));
echo "</pre>"
Mas aí ele não retorna o AccessKey, só isso:
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Sat, 06 Jun 2015 21:25:04 GMT
[Server] => Apache
[Vary] => Accept-Encoding,User-Agent
[Connection] => close
[Content-Type] => text/html
)
Tem como fazer o que eu to querendo? Pra exemplificar, queria que me retornasse algo assim:
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Sat, 06 Jun 2015 21:25:04 GMT
[Server] => Apache
[Vary] => Accept-Encoding,User-Agent
[Connection] => close
[Content-Type] => text/html
[AccessKey] => 1234567890
)
Quanta burrice a minha, mais fácil enviar como um parâmetro no POST junto com os outros dados.
Pior que sim, a questão é que na realidade seria uma espécie de API pra pessoa obter uma resposta do meu servidor de acordo com cada requisição enviada, aí não tem como fazer com sessão (infelizmente) :/
Meu único problema real com enviar a AcessKey por parâmetro no POST é a questão da chave ser secreta, então eu queria alguma forma de evitar que ela pudesse ser acessada por terceiros, mas dá pra fazer com o POST normalmente...
Explicando melhor: a pessoa faz transações no sistema que eu criei (isso já funciona perfeitamente), aí, dependendo do plano que ela contratou, ela pode enviar uma requisição automática toda vez que uma transação for concluída e meu servidor responde com o status da transação. A famosa "resposta automática". Por isso não teria como fazer por sessão, não tem acesso direto ao script, roda tudo em segundo plano.
Tem duas formas de conseguir o valor de AccessKey.
Uma delas é:
file_get_contents("php://input")
E outra:
$_POST['AccessKey']
Já pensou em trabalhar com sessões?