269 Shares 8702 views

variable globale PHP dans la fonction. Faire une variable globale en PHP

Pour créer un site complet, qui possède une vaste fonctionnalité que vous devez savoir beaucoup. Mais ce qui peut le rendre vraiment unique – il est PHP. La variable globale dans le langage de programmation n'est pas utilisé très souvent, mais parfois de savoir comment cela fonctionne, il est parfois nécessaire. C'est l'étude de ce qu'elle est et comment il fonctionne, nous allons le faire dans cet article.

portée

Alors, appelez le contexte dans lequel la variable et déterminée. Dans la plupart des cas, ils ont une seule portée. Lorsque les variables globales PHP chargées à partir d'autres fichiers, il peut être inclus (y compris) et nécessaire (nécessite).

Par défaut, ils sont limités à la portée locale. Et comment rendre les fichiers vues variables dans ses limites, ce qui pourrait plus et utiliser? A cette fin, et il est prévu dans les variables globales PHP.

Le mot-clé « globale »

Et voici comment déclarer une variable globale à PHP? Pour atteindre cet objectif nous aidera le mot « global ». Il est nécessaire de placer en face de la variable que vous souhaitez effectuer une globale (narimer, global «La variable»).

Après la mise en œuvre d'une telle indication, les données seront en mesure de travailler avec tous les fichiers. Si quelque part il y a des références à cette variable, le programme sera toujours attention à la version internationale.

Pourquoi une telle langue étrange? Le fait que dans le même temps il peut y avoir des versions locales. Mais ils seront disponibles exclusivement pour les fichiers où annoncés. Et pour tout le reste servira des variables globales classe PHP. Par conséquent, vous devez être prudent. Et qu'il n'y avait pas de doute, voici un exemple de ce qu'ils ressemblent: une approche globale.

Parce que si un fichier aura accès à un certain nombre de variables, il les fera en conflit. Mais nous ne pouvons pas dire avec certitude – variable locale ou globale est lu ou ne tout à fait. Donc, si elle est d'enregistrer dans une fonction, il devrait poser aucun problème. Mais l'utilisation d'une variable pour ses frontières est problématique. Par conséquent, la structure de la rédaction du code nécessaire pour suivre de près et assurez-vous que nulle part est là, même une condition préalable à ladite conflit a surgi.

Un autre mode de réalisation de l'enregistrement

Est-il possible en PHP pour créer une variable globale d'une autre manière? Oui, même pas un. Tout d'abord, considérons le GLOBALS $. Ceci est un tableau associatif. La clé de – est le nom. Comme la valeur du contenu agit comme une variable globale. Il convient de noter que le tableau après l'annonce existe dans toute la portée. Cela donne des raisons de croire qu'il superglobale. Il semble donc: $ GLOBALS [ 'variable'].

/ Superglobales pré-définies

Dans toutes les langues de programmation il y a des noms qui sont affrétés pour certaines de ses fonctions. Par conséquent, pour créer des variables globales PHP du même nom ne fonctionnera pas.

Ce langage de programmation a ses propres caractéristiques. Donc, il est important que les variables prédéfinies ici n'installez pas « super », qui est, ils ne sont pas disponibles dans tous les lieux. Comment puis-je résoudre ce problème? Pour les variables prédéfinies était disponible à un local, il doit être déclaré comme suit :. Mondial «variable » Il semble être le même que précédemment dit, non? Il est vrai, mais pas tout à fait. Regardons déjà « combat » un exemple:

  • HTTP_POST_VARS globale $;
  • echo $ HTTP_POST_VARS [ 'nom'].

Vous vous sentez la différence entre eux? Notez que dans les variables globales PHP ne doit pas nécessairement être utilisé dans la fonction. Il peut même être placé dans un fichier qui est inclus dans ce.

Liens et sécurité

Comme vous pouvez le voir, en PHP créer une variable globale est pas un problème. Mais est-il des particuliers liens relatifs? Oui, il peut y avoir un comportement inattendu lors de l'utilisation globale. Mais avant cela, un peu trame de fond.

Dans la version 4.2.0 de la directive par register_globals par défaut passe de l'état sur désactivé. Pour la plupart des utilisateurs, ce n'est pas très important, mais en vain. Après tout, il affecte directement la sécurité du produit développé. Si vous avez besoin de faire de la variable globale, directive-PHP sur ce paramètre n'est pas directement affectée. Cependant, l'utilisation incorrecte peut déjà créer la sécurité des précédents.

Donc, si register_globals est activé, avant l'exécution du code écrit initialisé les différentes variables qui sont nécessaires, par exemple pour envoyer de formulaires HTML. Par conséquent, il a été décidé de l'éteindre.

Pourquoi l'état de cette directive dans la variable globale php doit beaucoup? Le fait est que lorsque l'état des développeurs ne sont pas toujours avec certitude pourrait se répondre à la question de savoir où il vient. D'une part, il est plus facile d'écrire du code. Mais de l'autre – il est un risque de sécurité. Par conséquent, pour éviter les erreurs, ainsi que les données de mélange et de la directive a été désactivée.

Maintenant, regardons pas / code de sécurité, ainsi que la façon de détecter les cas où l'annonce de la variable PHP globale est accompagnée par des tentatives de falsification des données. Ceci est nécessaire afin de créer non seulement belle, mais aussi travailler de façon constante des sites qui ne craque pas la première personne disponible.

code malveillant

Fixons cette variable est vrai pour ceux qui ont été autorisés:

si (authenticate_user ()) {
$ Autorisez = true;
}

si ($ authorize de) {
inclure "/highly/sensitive/data.php";
}

Dans cet état, la variable peut être réglée automatiquement. Considérant que les données peuvent simplement être remplacés, et la source de leur origine ne sont pas réglées, alors tout le monde peut passer un tel test et faire semblant d'être quelqu'un d'autre. Si vous le souhaitez, l'attaquant (ou tout simplement curieux, mais inexpérimentés) peuvent être altérées, notre logique.

Si nous changeons la valeur de la directive, ce code fonctionne correctement, que nous avions besoin. Mais l'initialisation des variables est non seulement un bon ton dans la programmation, mais nous donne aussi une certaine garantie de la stabilité du script.

Version fiable du code

vous pouvez désactiver ou travailler directives ou prescrire un code plus complexe pour atteindre cet objectif. Par exemple, comme ceci:

if (isset ($ _ SESSION [ 'username'])) {

echo "Bonjour {$ _ SESSION [ 'username']} ";

} Else {

echo "Bonjour qu'invité
";
echo "Bienvenue!";

}

Faire une substitution dans ce cas, il sera difficile. Mais encore – possible. Pour ce faire, vous devez veiller à ce que les outils d'intervention rapide ont été fournis. Si vous souhaitez inclure des variables globales en PHP, vous pouvez utiliser les outils suivants: si nous savons ce que la plage est la valeur obtenue, il est possible d'enregistrer un script pour vérifier cela avec un match. Bien sûr, il ne garantit pas une protection complète contre les valeurs de substitution. Mais ce choix est trop compliquer considérablement.

Trouve les tentatives Masquerade

Voyons comment vous comprenez écrit plus tôt. En PHP variables globales dans la fonction qui sera donnée ci-dessous, vous aurez besoin de vous déclarer. On peut dire que cela est une sorte de devoirs sur l'assimilation du sujet de la leçon. Voici le code:

<? Php
if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

mail ( "[email protected]", "Attention, le script a été enregistré tentative de vol avec effraction et la falsification des données", $ _SERVER [ 'REMOTE_ADDR']);
echo « Il y avait une sécurité brisée ou tenter de le faire notifié à l'administrateur. »;
sortie;

} Else {
}
?>

Maintenant explication celle-ci. En partie C_COOKIE nous vient d'une source fiable. Pour satisfaire pleinement en fonction du résultat attendu, nous vérifions sa valeur et informer l'administrateur en cas de problème. Si elle ne vient pas, aucune action et n'a pas besoin de faire. Vous devez comprendre que la désactivation simplement register_globals directive ne fait pas votre code est sécurisé. Par conséquent, toute variable qui reçoit un script de l'utilisateur, il faut vérifier la valeur attendue.

conclusion

Ici, en général, et tout ce que vous devez savoir sur les variables globales pour les utiliser avec succès et en toute sécurité dans leur travail. Bien sûr, dire qu'il ya une garantie complète que personne n'utilisera les ne peuvent pas – les attaquants améliorent constamment leurs méthodes et compétences. Il est donc souhaitable de limiter l'utilisation maximale des variables globales dans le code. Heureusement, la structure et les caractéristiques de conception de ce langage de programmation peut atteindre cet objectif. Bonne chance!