Navigation
Enregistrements dans cette catégorie...
- Comment personnaliser les pages d'erreurs ?
- Comment consulter les statistiques de mon site ?
- Comment protéger l'accés à un répertoire ?
- Puis-je utiliser les variables globales en PHP (register_globals on/off) ?
- Comment configurer l'outil FormMail ?
- Comment configurer le formulaire de contact (FormMail) ?
- Quels droits dois-je configurer sur les fichiers/dossiers de l'hébergement ?
- Comment sauvegarder votre base de données
- Comment transférer les fichiers sur mon FTP avec FileZilla ?
- Comment utiliser la Mailing List ?
- Comment rendre une partie de mon site accessible uniquement en HTTPS ?
- Comment fonctionnent les alertes trafic ?
- Comment mettre en place une redirection URL directement sur mon hébergement ?
- Comment relier mon domaine a blogspot ou blogger ?
Nuage de tags
FAQs épinglées
Hébergement Web
Puis-je utiliser les variables globales en PHP (register_globals on/off) ?
Explications
Les variables (super-)globales sont des variables qui existent, en marge des scripts PHP, comme les tableaux $_GET, $_POST, $_COOKIE, $_SESSION... Ces variables contiennent des données externes aux scripts, mais importantes pour leur fonctionnement. En effet, elles servent à récupérer des informations, qui deviennent utilisables dans le code php.
L´option de configuration register_globals a longtemps été à "on", comme le demandent par exemple les sites osCommerce. Cependant, pour des raisons de sécurité évidentes, il est fortement conseillé, pour la sécurité des sites, de la maintenir à "off". Le fait que cette directive soit à "on" implique que les variables qui sont définies dans les tableaux précédemment cités, soient déclarées localement.
Exemple : une variable $_POST[´ma_variable´] contient des données. Avec register_globals=on, $ma_variable contient les mêmes données. Avec register_globals=off, $ma_variable n´est pas définie en début de script.
Le problème se pose pour des variables globales, issues de différents tableaux, mais portant le même nom de clef.
Exemple : si $_POST[´ma_variable´] et $_GET[´ma_variable´] contiennent des données différentes, avec register_globals=on, nous ne pouvons pas savoir ce que contiendra , puisqu´en théorie, elle contient les données de l´une et de l´autre variable globale. Concrètement, elle n´en contiendra qu´une, mais on ne peut savoir laquelle.
C´est pourquoi, il est fortement déconseillé d´utiliser les variables globales définies localement, mais de toujours appeler les données par le nom réel de la variable que l´on souhaite utiliser.
Exemple : si l´on souhaite récupérer le contenu de la variable ´ma_variable´ envoyée par méthode post depuis un formulaire, on utilisera $_POST[´ma_variable´] plutot que $ma_variable, car nous connaissons de manière exacte la provenance des données ainsi récupérées.
Si malgré tout vous souhaitez utiliser les variables globales, mais que la configuration du serveur ne vous permet de pas de le faire, vous pouvez malgré tout utiliser une boucle qui va collecter les données des variables globales et les redéfinir localement. Pour cela, placez cet exemple de code en haut de chacun de vos scripts. C´est exemple est fourni sans garantie de compatibilité avec vos scripts, et nous ne pourrons être tenus pour responsable des utilisations frauduleuses qu´il pourrait en résulter, conformément aux explications fournies précédemment.
| foreach($_POST as $cle => $valeur) { if(!isset($$key)) { $$key = $val; } } |
Cette boucle récupère tous les éléments de $_POST et recrée les variables portant le nom de la clé ($cle) avec la valeur $valeur, en s´assurant que la variable n´est pas déja définie.
Compléments d´informations sur les variables super-globales (www.php.net)
Créer un fichier php.ini dans le répertoire du script :
Sur nos serveurs, il vous est possible de surpasser les paramètres PHP par défaut en créant un fichier "php.ini". Le contenu pour la réglage des variables globales est le suivant :
php_flag register_globals off
Cet exemple va vous permettre de désactiver le paramètre register_globals.
Boutiques osCommerce :
Il existe un patch correctif pour le problème du register_globals à off, pour les version MS 2.2 Vous pourrez télécharger ce patch ici .
Nuage de tags: php variables register_globals php.ini
Questions - Réponses en relation :
- Qu'est ce qu'un nom de domaine ?
- Création d'une adresse mail (compte POP ou IMAP )
- Comment paramétrer mon logiciel de messagerie pour lire mon compte POP ou IMAP ?
- Comment construire un mot de passe ?
- Comment installer un répondeur Mail ou une notification d'absence ?
Dernière mise à jour : 2009-05-05 15:40
Auteur : Support Technique
Révision: 1.218
Vous ne pouvez pas commenter cet enregistrement