10
votes

Pourquoi voudriez-vous fusionner $ _GET et $ _Post en PHP?

Je viens de voir ce code tout en étudiant le code de source WordPress (PHP), vous pouvez voir qu'ils sont férogrés / Tournez toutes les valeurs d'origine et de publication en 1 matrice de demande.

Maintenant, comme je le sais, $ _GET et $ _Post sont déjà disponibles en appelant $ _Request sans à l'aide de la fonction Array_Merge (), donc des idées pourquoi elles feraient cela? < Pré> xxx


0 commentaires

4 Réponses :


2
votes

Ceci est donc si vous avez une variable d'obtention et une variable de poste avec le même nom, elle choisira la variable de poteau sur l'en obtenir une.

Aussi, vous ne voulez pas ne pas vouloir les cookies de la variable $ _Request.


2 commentaires

En fait, il choisira le $ _Post sur la $ _GET. Array_Merge Manuel: php.net/manual/fr/funcunction.array-merge .php


"[...] Il choisira la variable Obtenir la variable sur la poste". Ce n'est pas vrai; C'est l'inverse. Les valeurs de ces dernières tableaux avec les clés correspondantes remplacent les anciennes valeurs. Voir php.net/array_merge



1
votes

Je ne sais pas spécifiquement pourquoi cela a été fait où vous l'avez vu, mais je l'ai vu précédemment lorsque un traitement a été effectué sur les valeurs d'un tableau ou d'une autre et que vous souhaitez fusionner ces changements dans $ _Request de sorte que quiconque utilise $ _Request obtiendra les changements même s'ils ont été effectués aux variables $ _Post ou $ _BET.

Ceci apparaît dans des situations telles que WordPress, car les développeurs de plugins pourraient utiliser l'une de ces variables pour accéder aux données et le noyau WordPress devra s'assurer qu'ils obtiennent tous les mêmes données.

Pourquoi ne voudriez-vous pas le faire à $ _Request directement? Parce que $ _Request contient une tonne d'informations supplémentaires que $ _Post et $ _GET n'ont pas. Vous ne voudrez peut-être pas appliquer votre traitement à tous ces bits supplémentaires.


0 commentaires

6
votes

$ _ demande contient le contenu de $ _ obtenir , $ _ post et _ biscuit par défaut. Peut-être qu'ils veulent exclure les variables de cookies, car elles ne sont généralement pas utilisées à cet effet.


2 commentaires

Ya, peut-être pour des raisons de sécurité, ils veulent éliminer les cookies de $ _Request, être en mesure d'utiliser Get et Poster ensemble. +1 pour les grands esprits en train de penser.


Oui, il s'agit d'un vecteur d'attaque XSS commun, car le JavaScript malveillant peut définir des cookies Vars sans que l'utilisateur notant, et la commande GPC par défaut de PHP signifie que ces valeurs de cookie remplaceront les types d'utilisateurs dans le formulaire.



20
votes

C'est parce que la demande _ _ _ par défaut est une fusion de $ _ obtenez , $ _ post et _ cookie . En outre, l'ordre dans lequel les variables de ces super -globaux sont fusionnées dans _ demande dépend du paramètre INI variables_order et à partir de PHP 5.3.0 peut également être influencé par < Code> request_order . Je suppose donc que le développeur voulait s'assurer que $ _ demande est composé uniquement de $ _ obtenir et $ _ = / code>, fusionné dans cette commande particulière, S'il n'avait pas accès aux paramètres INI (sur un hôte partagé par exemple). Vous voyez, variables_order et request_order n'est pas configurable sur une base de script.

htth


0 commentaires