Postado dia

E ae pessoal! Uma dica rápida para aqueles que estão aprendendo PHP. Recentemente tive problemas com um gerenciador de um site que criei, aonde estava acontecendo um problema com upload de imagens. A imagem estava ocasionando problemas só por ser muito grande, mas o cansaço não me deixou perceber isso na hora dos testes, e isso fez com que a sequência de dados da imagem sendo enviadas impedisse a leitura dos dados POST. E neste caso, uma das coisas que me ajudaram foi o uso do php://input.

Perae, php://?

Isso. O php:// é um protocolo, assim como o http://, https://, ftp://, entre outros, mas providenciado pelo próprio PHP para que seja possível acessar os dados de entrada e saída dele mesmo, assim como entradas e saídas padrões de transmissões, e outros dados. É praticamente o controle de dados manipulados pelo PHP, aqueles que o PHP recebe e lê, e aqueles que o PHP vai escrever.

E esse “input”?

O php://input é a transmissão do protocolo que permite obter dados de entrada somente para leitura em sua forma crua, ou seja, pura. É mais usado para obter dados POST.

E foi este o meu caso. Os dados da imagem eram muito grandes, mas como disse, eu estava cansado e não notei que estava tentando subir uma imagem grande. Como não conseguia ler os dados, optei pelo php://input. Para isso, usa-se a seguinte linha de código:

$post = file_get_contents('php://input');

Dentro da variável $post (use o nome que quiser), ele usará a função file_get_contents, que pega os dados do conteúdo indicado, e converte em uma string igual usadas em método GET, desta forma: var1=valor1&var2=valor2, igual a envio de dados GET pela URL, e então retorna esta string.

Aí consegui ler os dados e percebi o tamanho gigantesco dos dados da imagem e acordei na hora. Percebi meu erro. Duh!

Então caso precisar de uma leitura crua dos dados enviados via método POST, opte pelo php://input. E se você usa a versão do PHP superior a 5.6, então aí sim que você vai ter que optar por este protocolo, pois o outro modo de leitura de dados crus POST, o uso do $HTTP_RAW_POST_DATA, se tornou obsoleto.

Caso você não conhecia o php://, então essa dica pode ser útil para você em algum momento. Abraço!

Mais informações

Tags: , ,

Manda sua palavra ae! Deixe um comentário: