Un type a qualifié l'une de mes soumissions Snipplr de "merde" parce que j'ai utilisé à la if ($_SERVER['REQUEST_METHOD'] == 'POST')
place deif ($_POST)
Vérifier la méthode de requête me semble plus correct car c'est ce que je veux vraiment faire. Y a-t-il une différence opérationnelle entre les deux ou s'agit-il simplement d'un problème de clarté du code?
===
place de==
ici comme0 == 'POST'
.$_SERVER['REQUEST_METHOD']
le nombre serait-il jamais0
? Autant que je sache, c'est impossible.Réponses:
Eh bien, ils ne font pas la même chose, vraiment.
$_SERVER['REQUEST_METHOD']
contient la méthode de requête (surprise).$_POST
contient toutes les données de publication.Il est possible qu'une requête POST ne contienne aucune donnée POST.
Je vérifie la méthode de requête - je n'ai en fait jamais pensé à tester le
$_POST
tableau. Je vérifie cependant les champs de publication requis. Donc, une demande de publication vide donnerait à l'utilisateur beaucoup de messages d'erreur - ce qui a du sens pour moi.la source
if ($_SERVER['REQUEST_METHOD'] == 'POST')
est le bon moyen, vous pouvez envoyer une demande de publication sans aucune donnée de publication.la source
J'avais l'habitude de vérifier
$_POST
jusqu'à ce que j'aie des problèmes avec des données POST plus volumineuses et des fichiers téléchargés. Il existe des directives de configurationpost_max_size
etupload_max_filesize
- si l'une d'entre elles est dépassée, le$_POST
tableau n'est pas rempli.Le "moyen sûr" est donc de vérifier
$_SERVER['REQUEST_METHOD']
. Cependant, vous devez toujours utiliserisset()
sur chaque$_POST
variable, et cela n'a pas d'importance, que vous vérifiiez ou non$_SERVER['REQUEST_METHOD']
.la source
Si votre application doit réagir à la demande de type post, utilisez ceci:
Si votre application doit réagir à des données reçues via une demande de courrier, utilisez ceci:
C'est spécifique à l'implémentation, mais vous allez utiliser les deux, + $ _FILES superglobal.
la source
Ils ont tous les deux raison. Personnellement, je préfère votre approche pour sa verbosité, mais c'est vraiment une question de préférence personnelle.
Hors main, exécuter if ($ _ POST) ne lèverait pas d'erreur - le tableau $ _POST existe, que la requête ait été envoyée avec les en-têtes POST. Un tableau vide est converti en faux dans une vérification booléenne.
la source
Vous pouvez soumettre un formulaire en appuyant sur la touche Entrée (c'est-à-dire sans cliquer sur le bouton Soumettre) dans la plupart des navigateurs, mais cela n'envoie pas nécessairement soumettre comme une variable - il est donc possible de soumettre un formulaire vide, c'est
$_POST
-à- dire qu'il sera vide mais le formulaire sera toujours ont généré une demande de publication http sur la page php. Dans ce cas,if ($_SERVER['REQUEST_METHOD'] == 'POST')
c'est mieux.la source
$_POST
ne serait pas vide: ce serait un tableau avec des valeurs vides.la source
Tant que je peux avoir besoin d'accéder à mes scripts PHP avec plus d'une méthode, ce que je fais est en fait:
la source
Il vérifie si la page a été appelée via POST (par opposition à GET, HEAD, etc.). Lorsque vous tapez une URL dans la barre de menus, la page est appelée via GET. Cependant, lorsque vous soumettez un formulaire avec method = "post", la page d'action est appelée avec POST.
la source
C'est vraiment un 6 sur un, une demi-douzaine de l'autre situation.
Le seul argument possible contre votre approche est $ _SERVER ['REQUEST_METHOD'] == 'POST' peut ne pas être renseigné sur certains serveurs Web / configuration, alors que le tableau $ _POST existera toujours dans PHP4 / PHP5 (et si ce n'est pas le cas ' t existent, vous avez de plus gros problèmes (- :)
la source
Ils fonctionnent tous les deux de la même manière, mais
$_POST
doivent être utilisés car ils sont plus propres. Vous pouvez y ajouterisset()
pour vérifier qu'il existe.la source
$_POST
existera toujours, bien qu'il puisse être vide (qui est converti en booléenfalse
). Et qu'entendez-vous par «plus propre»?