141 votes

$_POST et $_SERVER [' REQUEST_METHOD '] == ' POST '

Un mec a appelé un de mes mémoires, Snipplr « merde » parce que j’ai utilisé au lieu de

Vérifier la méthode de la demande semble plus correct pour moi parce que c’est ce que je veux vraiment faire. Existe-t-il certaines différences opérationnelles entre les deux, ou est-ce juste un problème de clarté du code ?

181voto

gnud Points 26854

Eh bien, ils ne font la même chose, vraiment.

``contient la méthode de requête (surprise).

``contient les données post.

Il est possible pour une requête POST à ne contenir aucune donnée POST.

J’ai vérifier la méthode de requête - j’ai en fait jamais pensé tester le `` tableau. J’ai vérifier les champs de message requis, cependant. Si une demande post vide donnerait à l’utilisateur beaucoup de messages d’erreur - ce qui est logique pour moi.

47voto

stuartloxton Points 952

Si ($_SERVER [« REQUEST_METHOD »] == « POST ») est la manière correcte, vous pouvez envoyer une requête post sans aucune donnée post.

23voto

binaryLV Points 5380

Je sais que c'est une vieille question, mais voici un "nouveau" (et quelque peu différente de celle des autres) réponse ;)

J'ai utilisé pour vérifier les $_POST jusqu'à ce que j'avais de la difficulté avec les plus grands publier des données et des fichiers téléchargés. Il y a des directives de configuration post_max_size et upload_max_filesize - si l'un d'eux est dépassé, $_POST tableau n'est pas popullated. Ainsi, le "de manière sûre" est de vérifier la valeur de $_SERVER['REQUEST_METHOD']. Vous avez encore d'utiliser la fonction isset() sur tous les $_POST variable, et il n'a pas d'importance, si vous pouvez cocher ou ne pas cocher la variable $_SERVER['REQUEST_METHOD'].

15voto

DUzun Points 355

Si votre application a besoin de réagir à la demande de message de type, utilisez ceci :

Si votre application doit réagir sur toutes les données reçues via post demande, utilisez ceci :

Elle est mise en œuvre spécifiques, mais vous un va utiliser les deux, + $_FILES superglobale.

4voto

Eran Galperin Points 49594

Ils sont tous les deux corrects. Personnellement, je préfère votre approche mieux pour ses commentaires mais c’est vraiment à vos préférences personnelles.

Main, if($_POST) en cours d’exécution ne serait pas lever une erreur - tableau $_POST existe sans se soucier si la demande a été envoyée avec les en-têtes de message. Un tableau vide est casté sur false dans un contrôle booléen.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X