variable global en PHP [EXPERT]


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

variable global en PHP [EXPERT]

Message le Ven Juil 07, 2006 11:15

Hello,

j'ai un doute donc je vous demande confirmation.

Code: Tout sélectionner
<?php
$a = 1;

function test() {
   global $a;
echo $a; /* portée globale */
}
test(); //écrit 1 puisque $a est défini en global dans la fonction test()
?>



La définition de variable "global" au sein d'une fonction :
- ne pose aucun problème de sécurité ?
- fonctionnera chez tous les hébergeurs ?

Si vous pouviez me le confirmer, ça serait bien sympa parce qu'on est en train de développer une très grosse application ( http://www.webrankinfo.com/forums/viewtopic_45874.htm avec Moktoipas) et ce type de variable m'est très utile.


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Juil 07, 2006 11:52

Rien à voir : mais en gros tu programme un ERP?
Y'a des solutions open source déjà pour ça.

Pour tes variables je pense que ça marche chez n'importe qui; mais si tu es sur un dédié de toute façon tu peux tout configurer comme tu veux.

Niveau sécu c'est un peu comme toute variables de ton script, il vaut mieux empécher tout ce qui est injection de code. Après ça reste une variable comme une autre mais accessible en dehors de la portée habituele.


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Ven Juil 07, 2006 12:09

- ne pose aucun problème de sécurité ?
non, tant que tu programme correctement derriere (en utilisant bien les $_GET, $_POST, ...)

- fonctionnera chez tous les hébergeurs ?
oui


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Message le Ven Juil 07, 2006 13:08

D'accord, merci à vous 2 de m'otez ce doute.

Je serais hébergé en interne pour le moment mais on pourrait imaginer à l'avenir que cette application soit partagée entre plusieurs sociétés (un magasin, un stock ou un centre d'expédition internet, ...). Donc si ça fonctionne en standard chez tous les hébergeurs, ça me rassure.

Côté sécurité, merci aussi. Evidemment, mes variables qui sont utilisées en global dans mes fonctions, sont initialisées en début de script. Il n'y a donc pas moyen de faire de l'injection.

Merci encore !


mr_go
WRInaute passionné
WRInaute passionné
 
Messages: 1945
Inscription: 21 Sep 2005

Message le Ven Juil 07, 2006 13:23

+1.

J'en rajoute une petite couche, est ce que cette solution est plus sécuriée qu'un define("VARIABLE_A",1) (pour peu que VARIABLE_A ne subisse aucun traitement en aval bien évidemment) ?


mowmow
WRInaute impliqué
WRInaute impliqué
 
Messages: 975
Inscription: 3 Nov 2004

Message le Ven Juil 07, 2006 21:32

Je vois pas comment on pourrait exploiter un global dans une fonction ! Ca permet simplement à la fonction d'avoir accès à la variable ! rien de plus !

shrom
WRInaute impliqué
WRInaute impliqué
 
Messages: 865
Inscription: 5 Juil 2004

Message le Ven Juil 07, 2006 22:50

La question n'est pas de savoir si les variables globales ont des problèmes de sécurité, la question est ai-je besoin d'utiliser des variables globales ?

Je connais très peu de cas ou il y a obligation de les utiliser.

1) on peut passer des arguments aux fonctions, c'est pas pour rien
2 ) il est très difficile de tracer les fonctions qui modifient les variables globales puisque celle-ci n'apparait pas dans la signature de la fonction
3) ca donne du code très peu lisible


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Sam Juil 08, 2006 6:54

si les variabls globales existent, c est bien pour les utiliser ^^ par exemple j'ai le prefixe de mes tables en varaible globale, je ne vais pas m amuser à la passer an argument de chaque fonction. par principe, mes variables globales ne sont jamais modifiées

shrom
WRInaute impliqué
WRInaute impliqué
 
Messages: 865
Inscription: 5 Juil 2004

Message le Sam Juil 08, 2006 12:10

par principe, mes variables globales ne sont jamais modifiées


LOL.

On appelle cela des constantes.

Maintenant, si tu veux faire un code illisible, très dur à maintenir et à déboguer, libre à toi.


PS: ce n'est pas parce que ça existe que c'est forcément bien. Cf tout un tas d'imbécilités qui ont été introduites dans PHP pour des raisons aussi obscures les unes que les autres et dont les dev ont du mal à se séparer ( enfin ils ont décidé de faire du ménage en PHP6 ).


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités