2010-07-04 18 views
0

Je suis débutant en PHP et je lis en manuel que $_REQUEST est un tableau associatif constitué de cookies, de get et de post-arrays. Je veux savoir ce qui est prioritaire dans le tableau des requêtes.

Say, supposons que j'ai une user variable $_POST ainsi que $_COOKIE, et si je l'utilise $_REQUEST['user'] écho alors qui imprimerait. Je l'ai essayé et je reçois la valeur définie dans $_POST. Si je veux imprimer la valeur de $_COOKIE que devrais-je utiliser? Je sais $_COOKIE est là, mais en utilisant toujours $_REQUEST si je veux l'imprimer, alors comment dois-je le faire?

Merci à l'avance :)

Répondre

4

A partir du manuel PHP sur $_REQUEST (php.net):

Note: Les variables $ _REQUEST sont fournies au script via l'EEG, POST, et les mécanismes d'entrée BISCUIT et pourrait donc être modifié par l'utilisateur distant et ne peut pas être approuvé.La présence et l'ordre des variables listées dans ce tableau est défini selon la directive PHP variables_order configuration .

En fait PHP utilise la valeur de configuration request_order, mais retombe sur variables_order si elle est vide.

Une valeur possible pour l'ordre des requêtes ou des variables peut ressembler à ceci: "GPC". Cela signifie que toutes les variables Get sont d'abord associées, puis les variables Post- et après que les cookies sont associées. La commande est de gauche à droite, les valeurs déjà définies sont remplacées. À l'exception des valeurs GET, POST et cookie, PHP peut également associer des variables d'environnement ("E") et de serveur ("S").

Vous trouverez les entrées manuelles correspondantes pour la configuration PHP here.

1

de la page man _REQUEST $:

Les variables $ _REQUEST sont fournies au script via l'GET, POST, et les mécanismes d'entrée de COOKIE et pourraient donc être modifiés par l'utilisateur distant et ne peut pas être approuvé. La présence et l'ordre des variables listées dans ce tableau sont définis en fonction de la directive PHP variables_order configuration.

+0

également, voir request_order –

1

Voir:

variable order on official docs

Remarque que vous devriez toujours éviter d'utiliser $_REQUEST pour des raisons de sécurité, utilisez plutôt des tableaux réels par exemple $_GET, $_POST et $_COOKIE

0

Vous devriez vraiment pas utiliser _REQUEST $, vous devriez plutôt être les GLOBALS individuels

echo $_POST['user']; 
echo $_COOKIE['user']; 
echo $_GET['user']; 

Cela va ajouter une couche de sécurité supplémentaire à votre application

3

http://www.php.net/manual/en/ini.core.php#ini.request-order

Cette directive décrit l'ordre dans lequel PHP enregistre les variables GET, POST et Cookie dans le tableau $ _REQUEST. L'inscription se fait de gauche à droite, les nouvelles valeurs remplacent les anciennes valeurs.

Si cette directive n'est pas définie, variables_order est utilisé pour le contenu de $ _REQUEST.

Notez que les fichiers php.ini de distribution par défaut ne contiennent pas le 'C' pour les cookies, en raison de problèmes de sécurité.

1

Faites simplement un print_r($_REQUEST) et vous verrez, que c'est un tableau associatif qui ne peut avoir qu'une valeur par clé. Donc, si vous utilisez la même clé sur POST, GET et COOKIE, il n'y aura qu'une seule valeur dans le tableau et vous ne pourrez donc pas extraire les autres valeurs du tableau $ _REQUEST. Dans ce cas, vous devez utiliser le $ _COOKIE super global.