variable globale remise nulle

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : variable globale remise nulle

Re: variable globale remise nulle

par TAB » 03 oct. 2009, 05:54

quand tu exécutes YGlobc.php, la variable $z n'est initialisée à aucun moment [..]
N'est-elle pas (variable globale) initialisée to 'Hi!' par YGloc, avant qu'il lance YGlobc?

Re: variable globale remise nulle

par Dr@ke » 26 sept. 2009, 21:03

C'est déconseillé d'utiliser des variables globales.
- Pour des raisons de sécurité.
- Mais surtout, à mon avis, pour des raisons de performances puis aussi pour éviter des possibles bugs...

Il est bien mieux, toujours à mon avis, d'utiliser de simples variables définies dans un fichier que l'on appelle grâce à la fonction include() ou require()...

Comment?
Exemple:
<php
$z = 'toto';
?>
Ensuite il suffit d'inclure ce fichier seulement dans les fichiers qui ont besoin de cette variable...

[EDIT]
Sinon, tout dépend de ton besoin... Donc suivant les situations: Utiliser les solutions citées par FuZZyLine plus haut...

Re: variable globale remise nulle

par FuZZyLine » 26 sept. 2009, 20:59

Salut,
[...]
Comment donner à $z, dans YGlob, une valeur que YGlobc pourra utiliser?
J'ai essayé d'utiliser $GLOBALS['z'], mais sans succès.
Merci!
Par un envoi via $_GET (http://www.ton_site/index.php?z=123),
Par un $_POST (en utilisant un formulaire)
Ou en utilisant les $_SESSION

@+ bon code ;)

PS: En utilisant un fichier (mais... je doute que ca te soit utile)

Re: variable globale remise nulle

par TAB » 26 sept. 2009, 20:36


En PHP, chaque script est indépendant, donc quand tu exécutes YGlobc.php, la variable $z n'est initialisé à aucun moment il est donc normal que tu retrouves NULL.

Par ailleurs, ton script YGloCo.php ne sert strictement à rien.
Bonjour! Et merci pour la réponse.

J'essayais d'appliquer le conseil donné par Victor BRITO dans
'passer un paramètre à une autre page':
'autre solution plus facile, tu crées un troisième fichier PHP où tu déclares ta variable $GLOBALS, fichier que tu inclus dans tes deux pages (via include () ou require ()).'

YGloCo.php est mon 'troisième fichier', censé établir $z comme variable globale partagée par YGlob et YGlobc. Malheureusement, ce script 'ne sert strictement à rien'.

Comment utiliser les variables globales? Comment donner à $z, dans YGlob, une valeur que YGlobc pourra utiliser? J'ai essayé d'utiliser $GLOBALS['z'], mais sans succès.

Merci!

Re: variable globale remise nulle

par FuZZyLine » 25 sept. 2009, 08:48

Salut,
Pourquoi $z est-il devenu nul?
$z n'est pas devenu NULL, il n'existe pas. D'un côté tu restes sur la même page par ton include
(Variable assignée) et de l'autre tu sort de cette page (Donc variable inéxistante).

Si tu forces le parsing de manière strict tu auras confirmation de la chose:
error_reporting(E_ALL | E_STRICT);
> Notice: Undefined variable: z in C:\TON_PATH\TON_FICHIER.php on line xxx

@+ bon code ;)

PS: Scripter en "strict" devrait être une habitude eh eh eh ;)

EDIT: @rthur: Je sais tu m'as grillé... lol

Re: variable globale remise nulle

par @rthur » 25 sept. 2009, 08:44

Bonjour,
(en général c'est mieux de démarrer un nouveau sujet comme cela)

En PHP, chaque script est indépendant, donc quand tu exécutes YGlobc.php, la variable $z n'est initialisé à aucun moment il est donc normal que tu retrouves NULL.

Par ailleurs, ton script YGloCo.php ne sert strictement à rien.

variable globale remise nulle

par TAB » 25 sept. 2009, 04:50

YGloCo.php:
 <?PHP $z ?>
YGloc.php:
<html><head><title>TstGlobal</title></head><body>
<?PHP include 'YGloCo.php'; $z='Hi!'; var_dump($z); echo '$z=',$z ?>
<a href="YGlobc.php"><p>Click</p></a>
</body></html>
YGlobc.php:
<html><head><title>TstGlobal</title></head><body>
<?PHP include'YGloCo.php'; var_dump($z); echo 'Sz=',$z?>
</body></html>
lancer YGloc.php:

string(3) "Hi!" $z=Hi!
Click

cliquer Click, pour lancer YGlobc.php:

NULL Sz=

Pourquoi $z est-il devenu nul?