Philosophie $_GET, $_POST,$_COOKIES et prise de chou (hibou, pou..)
5 réponses
xpatval
Bonjour,
On le sait, depuis la mise à off par défaut de register_globals, les
variables doivent être, si ne n'était déjà fait, importées soit par $_GET ou
$_POST ($HTTP_GET_VARS, $HTTP_POST_VARS). Pour cela, 3 options existent (du
moins, à ma connaissance):
- Celle décrite ci-dessus
- import_request_variables()
- extract()
Ayant testé les 3 options, pour maj de mes scripts, je m'aperçois que pour
éviter toute embrouille d'écrasement de la méthode d'importation, la
meilleure option était l'extract. Dans mon cas, certains scripts utilisent
des formulaires par la méthode POST, mais certains liens d'autres scripts
peuvent appeler les premiers (<a href="toto.php?parm=ouille">), donc, GET
par défaut.
Donc, ecrasement de la méthode, et plantage.
Mais alors, pourquoi vouloir utiliser $_GET, ou $_POST, si l'extract() fait
la même chose, en plus simple, car 2 lignes suffisent ?
Je me dis que j'ai loupé quelque chose, là...Non ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
John Gallet
Bonsoir,
On le sait, depuis la mise à off par défaut de register_globals, les variables doivent être, si ne n'était déjà fait, importées
Oui mais non. Nous sommes bien d'accord que register_globals à Off est une mauvaise réponse à une bonne question, ou plus précisement n'est pas la meilleure des réponse qu'on aurait pu apporter (il suffisait de remonter le niveau standard de warning sur les variables non définies). Mais ce mécanisme évite quand même à beaucoup "d'étourdis" de faire des bêtises.
Mais bon si tu y tiens vraiment attention : http://fr2.php.net/manual/en/function.extract.php :
Do not use extract on untrusted data, like user-input ($_GET, ...). If you do it, for example if you want to run old code that relies on register_globals temporarily, make sure you use one of the non-overwriting extract_type values like EXTR_SKIP, and be aware that you should now extract $_SERVER, $_SESSION, $_COOKIE, $_POST and $_GET in that order.
Alors que http://fr2.php.net/manual/en/function.import-request-variables.php est plutôt faite pour ça :
Imports GET/POST/Cookie variables into the global scope. It is useful if you disabled register_globals, but would like to see some variables in the global scope.
Mais alors, pourquoi vouloir utiliser $_GET, ou $_POST, si l'extract() fait la même chose, en plus simple, car 2 lignes suffisent ? Je me dis que j'ai loupé quelque chose, là...Non ?
Utilise $_REQUEST[ ] dans une fonction de filtrage qui sera ton point d'accès unique aux données venat de l'extérieur (et donc en lesquelles on ne peut avoir aucune confiance) et te pose pas d'autres questions ;-)
a++ JG
Bonsoir,
On le sait, depuis la mise à off par défaut de register_globals, les
variables doivent être, si ne n'était déjà fait, importées
Oui mais non. Nous sommes bien d'accord que register_globals à Off est une
mauvaise réponse à une bonne question, ou plus précisement n'est pas la
meilleure des réponse qu'on aurait pu apporter (il suffisait de remonter le
niveau standard de warning sur les variables non définies). Mais ce
mécanisme évite quand même à beaucoup "d'étourdis" de faire des bêtises.
Mais bon si tu y tiens vraiment attention :
http://fr2.php.net/manual/en/function.extract.php :
Do not use extract on untrusted data, like user-input ($_GET, ...). If you
do it, for example if you want to run old code that relies on
register_globals temporarily, make sure you use one of the non-overwriting
extract_type values like EXTR_SKIP, and be aware that you should now extract
$_SERVER, $_SESSION, $_COOKIE, $_POST and $_GET in that order.
Alors que http://fr2.php.net/manual/en/function.import-request-variables.php
est plutôt faite pour ça :
Imports GET/POST/Cookie variables into the global scope. It is useful if you
disabled register_globals, but would like to see some variables in the
global scope.
Mais alors, pourquoi vouloir utiliser $_GET, ou $_POST, si l'extract() fait
la même chose, en plus simple, car 2 lignes suffisent ?
Je me dis que j'ai loupé quelque chose, là...Non ?
Utilise $_REQUEST[ ] dans une fonction de filtrage qui sera ton point
d'accès unique aux données venat de l'extérieur (et donc en lesquelles on ne
peut avoir aucune confiance) et te pose pas d'autres questions ;-)
On le sait, depuis la mise à off par défaut de register_globals, les variables doivent être, si ne n'était déjà fait, importées
Oui mais non. Nous sommes bien d'accord que register_globals à Off est une mauvaise réponse à une bonne question, ou plus précisement n'est pas la meilleure des réponse qu'on aurait pu apporter (il suffisait de remonter le niveau standard de warning sur les variables non définies). Mais ce mécanisme évite quand même à beaucoup "d'étourdis" de faire des bêtises.
Mais bon si tu y tiens vraiment attention : http://fr2.php.net/manual/en/function.extract.php :
Do not use extract on untrusted data, like user-input ($_GET, ...). If you do it, for example if you want to run old code that relies on register_globals temporarily, make sure you use one of the non-overwriting extract_type values like EXTR_SKIP, and be aware that you should now extract $_SERVER, $_SESSION, $_COOKIE, $_POST and $_GET in that order.
Alors que http://fr2.php.net/manual/en/function.import-request-variables.php est plutôt faite pour ça :
Imports GET/POST/Cookie variables into the global scope. It is useful if you disabled register_globals, but would like to see some variables in the global scope.
Mais alors, pourquoi vouloir utiliser $_GET, ou $_POST, si l'extract() fait la même chose, en plus simple, car 2 lignes suffisent ? Je me dis que j'ai loupé quelque chose, là...Non ?
Utilise $_REQUEST[ ] dans une fonction de filtrage qui sera ton point d'accès unique aux données venat de l'extérieur (et donc en lesquelles on ne peut avoir aucune confiance) et te pose pas d'autres questions ;-)
a++ JG
loufoque
Message d'origine de xpatval :
- Celle décrite ci-dessus [Utiliser $_GET ou $_POST] - import_request_variables() - extract()
Ayant testé les 3 options, pour maj de mes scripts, je m'aperçois que pour éviter toute embrouille d'écrasement de la méthode d'importation, la meilleure option était l'extract.
La troisième méthode est la pire. La seule méthode correcte consiste à utiliser directement les tableaux $_GET et $_POST
Message d'origine de xpatval :
- Celle décrite ci-dessus [Utiliser $_GET ou $_POST]
- import_request_variables()
- extract()
Ayant testé les 3 options, pour maj de mes scripts, je m'aperçois que pour
éviter toute embrouille d'écrasement de la méthode d'importation, la
meilleure option était l'extract.
La troisième méthode est la pire.
La seule méthode correcte consiste à utiliser directement les tableaux
$_GET et $_POST
- Celle décrite ci-dessus [Utiliser $_GET ou $_POST] - import_request_variables() - extract()
Ayant testé les 3 options, pour maj de mes scripts, je m'aperçois que pour éviter toute embrouille d'écrasement de la méthode d'importation, la meilleure option était l'extract.
La troisième méthode est la pire. La seule méthode correcte consiste à utiliser directement les tableaux $_GET et $_POST
Nicklas
Le Fri, 05 Mar 2004 15:59:01 +0000, xpatval a écrit :
Bonjour,
On le sait, depuis la mise à off par défaut de register_globals, les variables doivent être, si ne n'était déjà fait, importées soit par $_GET ou $_POST ($HTTP_GET_VARS, $HTTP_POST_VARS). Pour cela, 3 options existent (du moins, à ma connaissance):
- Celle décrite ci-dessus - import_request_variables() - extract()
Tu as plusieurs tableaux disponibles $_GET, $_POST, $_REQUEST et même $GLOBALS
Je te propose une petite librairie que j'ai développé pour être indépendant du fonctionnement de PHP. Si PHP change sa gestion, je n'aurai qu'à modifier ma librairie.
Regarde la librairie 6 : http://www.progweb.com/modules/cours/consult.php?own=4&numR
Elle te permettra de faire : $request = new Secure(); $request->setMode(GET | POST); // Pour prendre aussi bien GET/POST puis à ta guise : // Pour un nombre... $num = $request->Number('nom_de_la_variable', [valeur par défaut]); // Récupérer la variable sans traitement $num = $request->Get('nom_de_la_variable'); // Un mail : $mail = $request->Mail('nom_du_champ_de_formulaire');
Si tu veux traiter les sessions, tu fais : $request->setMode(SESSION); $user = $request->Get('nom...');
etc...
Je compte mettre d'autres filtres... (en cours de développement)
-- Nicklas ProgWeb - Développer son site Internet http://www.progweb.com
Le Fri, 05 Mar 2004 15:59:01 +0000, xpatval a écrit :
Bonjour,
On le sait, depuis la mise à off par défaut de register_globals, les
variables doivent être, si ne n'était déjà fait, importées soit par $_GET ou
$_POST ($HTTP_GET_VARS, $HTTP_POST_VARS). Pour cela, 3 options existent (du
moins, à ma connaissance):
- Celle décrite ci-dessus
- import_request_variables()
- extract()
Tu as plusieurs tableaux disponibles $_GET, $_POST, $_REQUEST
et même $GLOBALS
Je te propose une petite librairie que j'ai développé
pour être indépendant du fonctionnement de PHP. Si PHP
change sa gestion, je n'aurai qu'à modifier ma librairie.
Regarde la librairie 6 :
http://www.progweb.com/modules/cours/consult.php?own=4&numR
Elle te permettra de faire :
$request = new Secure();
$request->setMode(GET | POST); // Pour prendre aussi bien GET/POST
puis à ta guise :
// Pour un nombre...
$num = $request->Number('nom_de_la_variable', [valeur par défaut]);
// Récupérer la variable sans traitement
$num = $request->Get('nom_de_la_variable');
// Un mail :
$mail = $request->Mail('nom_du_champ_de_formulaire');
Si tu veux traiter les sessions, tu fais :
$request->setMode(SESSION);
$user = $request->Get('nom...');
etc...
Je compte mettre d'autres filtres... (en cours de développement)
--
Nicklas
ProgWeb - Développer son site Internet
http://www.progweb.com
Le Fri, 05 Mar 2004 15:59:01 +0000, xpatval a écrit :
Bonjour,
On le sait, depuis la mise à off par défaut de register_globals, les variables doivent être, si ne n'était déjà fait, importées soit par $_GET ou $_POST ($HTTP_GET_VARS, $HTTP_POST_VARS). Pour cela, 3 options existent (du moins, à ma connaissance):
- Celle décrite ci-dessus - import_request_variables() - extract()
Tu as plusieurs tableaux disponibles $_GET, $_POST, $_REQUEST et même $GLOBALS
Je te propose une petite librairie que j'ai développé pour être indépendant du fonctionnement de PHP. Si PHP change sa gestion, je n'aurai qu'à modifier ma librairie.
Regarde la librairie 6 : http://www.progweb.com/modules/cours/consult.php?own=4&numR
Elle te permettra de faire : $request = new Secure(); $request->setMode(GET | POST); // Pour prendre aussi bien GET/POST puis à ta guise : // Pour un nombre... $num = $request->Number('nom_de_la_variable', [valeur par défaut]); // Récupérer la variable sans traitement $num = $request->Get('nom_de_la_variable'); // Un mail : $mail = $request->Mail('nom_du_champ_de_formulaire');
Si tu veux traiter les sessions, tu fais : $request->setMode(SESSION); $user = $request->Get('nom...');
etc...
Je compte mettre d'autres filtres... (en cours de développement)
-- Nicklas ProgWeb - Développer son site Internet http://www.progweb.com
destroyedlolo
loufoque wrote:
La troisième méthode est la pire. La seule méthode correcte consiste à utiliser directement les tableaux $_GET et $_POST
La meilleur facon est $_REQUEST car tu t'affranchie totalement de la methode utisee (GET our POST).
Lolo (de passage)
-- Amiga, UNIX Le tout avec pleins de fautes d'orthographe ... Sharp, NetBSD http://go.to/destroyedlolo Apache, PHP http://destroyedlolo.homeunix.org:8080/ Vacances, Voyages 100 % dictionnary free - 1 mispelling by word
loufoque wrote:
La troisième méthode est la pire.
La seule méthode correcte consiste à utiliser directement les tableaux
$_GET et $_POST
La meilleur facon est $_REQUEST car tu t'affranchie totalement de la
methode utisee (GET our POST).
Lolo (de passage)
--
Amiga, UNIX Le tout avec pleins de fautes d'orthographe ...
Sharp, NetBSD http://go.to/destroyedlolo
Apache, PHP http://destroyedlolo.homeunix.org:8080/
Vacances, Voyages 100 % dictionnary free - 1 mispelling by word
La troisième méthode est la pire. La seule méthode correcte consiste à utiliser directement les tableaux $_GET et $_POST
La meilleur facon est $_REQUEST car tu t'affranchie totalement de la methode utisee (GET our POST).
Lolo (de passage)
-- Amiga, UNIX Le tout avec pleins de fautes d'orthographe ... Sharp, NetBSD http://go.to/destroyedlolo Apache, PHP http://destroyedlolo.homeunix.org:8080/ Vacances, Voyages 100 % dictionnary free - 1 mispelling by word
loufoque
Message d'origine de destroyedlolo :
La meilleur facon est $_REQUEST car tu t'affranchie totalement de la methode utisee (GET our POST).
Ben normalement on est pas censés mélanger les deux méthodes...
Message d'origine de destroyedlolo :
La meilleur facon est $_REQUEST car tu t'affranchie totalement de la
methode utisee (GET our POST).
Ben normalement on est pas censés mélanger les deux méthodes...