variable global en PHP [EXPERT]

  • Auteur de la discussion Auteur de la discussion blman
  • Date de début Date de début
WRInaute accro
Hello,

j'ai un doute donc je vous demande confirmation.

Code:
<?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 ( https://www.webrankinfo.com/forum/t/gestion-commerciale-en-php-mysql.45874/ avec Moktoipas) et ce type de variable m'est très utile.
 
WRInaute passionné
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.
 
WRInaute accro
- 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
 
WRInaute accro
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 !
 
WRInaute passionné
+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) ?
 
WRInaute impliqué
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 !
 
WRInaute impliqué
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
 
WRInaute accro
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
 
WRInaute impliqué
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 ).
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut