Um cara chamou uma das minhas submissões do Snipplr de "porcaria" porque eu usei em if ($_SERVER['REQUEST_METHOD'] == 'POST')
vez deif ($_POST)
Verificar o método de solicitação parece mais correto para mim, porque é isso que eu realmente quero fazer. Existe alguma diferença operacional entre os dois ou isso é apenas uma questão de clareza de código?
===
vez de==
aqui como0 == 'POST'
.$_SERVER['REQUEST_METHOD']
algum dia esse número seria0
? Tanto quanto eu sei, isso é impossível.Respostas:
Bem, eles não fazem a mesma coisa, realmente.
$_SERVER['REQUEST_METHOD']
contém o método de solicitação (surpresa).$_POST
contém quaisquer dados de postagem.É possível que uma solicitação POST não contenha dados POST.
Verifico o método de solicitação - na verdade, nunca pensei em testar a
$_POST
matriz. Verifico os campos de postagem obrigatórios. Portanto, uma solicitação de postagem vazia daria ao usuário muitas mensagens de erro - o que faz sentido para mim.fonte
if ($_SERVER['REQUEST_METHOD'] == 'POST')
é a maneira correta, você pode enviar uma solicitação de postagem sem nenhum dado de postagem.fonte
Eu costumava verificar
$_POST
até ter problemas com dados POST maiores e arquivos enviados. Existem diretivas de configuraçãopost_max_size
eupload_max_filesize
- se alguma delas for excedida, a$_POST
matriz não será preenchida.Portanto, o "caminho seguro" é verificar
$_SERVER['REQUEST_METHOD']
. Você ainda precisa usarisset()
todas as$_POST
variáveis, e isso não importa, se você verifica ou não$_SERVER['REQUEST_METHOD']
.fonte
Se seu aplicativo precisar reagir a pedido do tipo post, use este:
Se o seu aplicativo precisar reagir a qualquer dado recebido por meio da solicitação posterior, use o seguinte:
É específico da implementação, mas você vai usar os dois, + $ _FILES superglobal.
fonte
Ambos estão corretos. Pessoalmente, prefiro sua abordagem melhor pela sua verbosidade, mas é realmente uma preferência pessoal.
Disponível, executando se ($ _ POST) não gerasse um erro - a matriz $ _POST existe independentemente se a solicitação foi enviada com os cabeçalhos POST. Uma matriz vazia é convertida em false em uma verificação booleana.
fonte
Você pode enviar um formulário pressionando a tecla Enter (ou seja, sem clicar no botão Enviar) na maioria dos navegadores, mas isso não envia necessariamente o envio como uma variável - portanto, é possível enviar um formulário vazio, ou seja
$_POST
, ficará vazio, mas o formulário ainda será geraram uma solicitação de postagem http para a página php. Neste casoif ($_SERVER['REQUEST_METHOD'] == 'POST')
é melhor.fonte
$_POST
não estaria vazio: seria uma matriz com valores vazios.fonte
Desde que eu precise acessar meus scripts PHP com mais de um método, o que eu faço é:
fonte
Ele verifica se a página foi chamada através do POST (ao contrário de GET, HEAD, etc). Quando você digita um URL na barra de menus, a página é chamada por meio de GET. No entanto, quando você envia um formulário com o método = "post", a página de ação é chamada com POST.
fonte
É realmente um 6 de um, meia dúzia da outra situação.
O único argumento possível contra sua abordagem é $ _SERVER ['REQUEST_METHOD'] == 'POST' pode não ser preenchido em determinados servidores da Web / configuração, enquanto o array $ _POST sempre existirá no PHP4 / PHP5 (e se isso não acontecer ' t existe, você tem problemas maiores (- :)
fonte
Ambos funcionam da mesma maneira, mas
$_POST
devem ser usados, pois são mais limpos. Você pode adicionarisset()
a ele para verificar se ele existe.fonte
$_POST
sempre existirá, embora possa estar vazio (que é convertido em booleanofalse
). E o que você quer dizer com "limpador"?