Meu trabalho recente na Mozilla me fez criar uma transação de autenticação semelhante ao OAuth entre o Bugzilla e o Phabricator. Essa tarefa me levou de volta ao mundo do PHP, uma linguagem que não toco muito (desde a versão ~5.2) além de criar temas e plug-ins do WordPress para este blog. Voltar a uma linguagem que não se toca há anos é como uma experiência completamente nova; você percebe padrões e métodos que não teria imaginado em anos anteriores.


Parte da transação de autenticação exige que o Phabricator receba uma solicitação POST que contenha dados JSON. Eu esperava que os dados fossem parar no $_POST mas a variável estava vazia; como diabos obtenho os dados do POST? Para obter o JSON do POST com PHP, o senhor usa o seguinte:



# Get JSON as a string
$json_str = file_get_contents('php://input');

# Get as an object
$json_obj = json_decode($json_str);


file_get_contentsque eu achava que era usado apenas para recuperar conteúdo de arquivos locais ou URLs tradicionais, permite que o usuário use o php://input para recuperar dados JSON como uma string. A partir daí, o usuário usa json_decode para transformar a string JSON em um objeto/array funcional.


Faz sentido que o JSON não seja tratado por meio do $_POST já que não há realmente nenhum keypor si só; essencialmente, o senhor só precisa do “blob” de dados como um todo, que é fornecido pelo php://input. O senhor pode testar o Manipulação de JSON+POST com cURL.

  • 7 funções essenciais do JavaScript

    Lembro-me dos primeiros dias do JavaScript, quando era preciso uma função simples para quase tudo, porque os fornecedores de navegadores implementavam recursos de forma diferente, e não apenas recursos de ponta, mas também recursos básicos, como addEventListener e attachEvent. Os tempos mudaram, mas ainda existem algumas funções que todo desenvolvedor deve…

  • 39 Shirts - Deixando a Mozilla

    Em 2001, eu tinha acabado de me formar em uma escola de ensino médio de uma cidade pequena e estava indo para uma faculdade de uma cidade pequena. Encontrei-me no pitoresco laboratório de informática, onde os computadores de baixa qualidade apresentavam dois navegadores: Internet Explorer e Mozilla. Foi nesse laboratório que me apaixonei…

  • Carregamento de página AJAX usando MooTools Fx.Explode
  • Vários planos de fundo com CSS

    Qualquer pessoa que esteja no setor de desenvolvimento da Web há mais de cinco anos sabe que há certos recursos que já deveriam existir há vários anos. Um desses recursos é o HTML5 placeholderUsamos shims JavaScript por uma década antes do surgimento do placeholder…