cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
31 août 2006 à 09:56
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
1 sept. 2006 à 11:01
Bonjour à tous !
J'ai un petit problème de portée de variable :
Dans un fichier common.php, je déclare ma variable en globale :
global $MaVariable;
Dans une fonction de ce même fichier common.php :
function toto() {
global MaVariable;
MaVariable = "toto";
}
Dans un fichier index.php :
include_once("common.php");
toto();
echo MaVariable; //m'affiche bien la valeur toto.
Ensuite, j'enlève le echo MaVariable; et je met une redirection header("Location: 'toto.php'");
et là, dans toto.php, si je fais :
include_once("common.php")
echo MaVariable;
Il n'affiche rien :( On dirait qu'il a perdu la valeur de la variable dans la redirection !
Alors comment faire pour conserver la valeur de ma variable dans la redirection ? (si possible sans passer par une variable de session).
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 août 2006 à 10:27
hello Dark,
tu dois rappeler ta fonction toto () dans toto.php, puisque c'est elle qui conditionne la mise en "globals" de ta variable toto.
Dans index.php, tu lances toto (), donc ta variable existe effectivement.
Mais avec le header, tu changes de page, les variables ne peuvent pas être globales sur différentes pages (comme pour des fonctions, des classes, etc). Donc, il faut relancer toto.
Du coup...pourquoi définir une fonction toto ?
common.php :
$sMaVar = 'toto';
index.php:
require_once 'common.php';
echo $sMaVar; // affiche toto
// on commente la ligne précédente et on met :
header ('Location: toto.php');
toto.php:
require_once 'common.php';
echo $sMaVar; // affiche toto
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 31 août 2006 à 16:04
Bon tant pis, je vais passer par une variable de session alors, c'est bête cà quand même que les variables ne sont pas stockées d'une page à une autre !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 août 2006 à 16:43
Ben c'est le principe du web ;-)
C'est pour ça qu'on a les cookies, les sessions, ou/et les requêtes HTTP.
De ttes façons, si c'est une variable globale à tout le site, MAIS susceptible d'être modifiée durant une même session (par session, j'entends : session de navigation par un utilisateur, sans quitter ton site) : oui, il faut utiliser les sessions (cette fois, je parle des sessions php ;-) ). C'est le plus simple.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 31 août 2006 à 16:55
Bah là c'est juste en fait pour stocker un état de page : modification/suppression ou ajout. Donc c'est pas vraiment relatif à une session, mais plutôt à un petit groupe de page.
Et moi qui pensais qu'avec le php, tout (ou presque) était permis contrairement aux langages applicatifs !
Vous n’avez pas trouvé la réponse que vous recherchez ?
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 sept. 2006 à 09:31
Salut!
Tout est permis:
- dans ta première page, tu crée un fichier .xml (au nom du sid)
- tu le récupère dans le deuxième
L'avantage de cette méthode, c'est que tu viens de gagner 500pts CS pour avoir fait plaisir à Malalam!! ( désolé, j'ai pas pû m'empêcher, c'est le matin, :$ )
@++
R@f
www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 sept. 2006 à 10:10
Heu... c'était pas sérieux!
Je comprends pas pk ça semble si lourd de passer par des variables de session?
@++
R@f
www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 1 sept. 2006 à 10:29
Bah venant de la prog de logiciel, j'ai un peu de mal avec la portée des variables en PHP, et surtout, je comprends pas trop pourquoi il faut passer par des variables de session pour enregistrer une valeur d'une page à une autre sachant qu'on en aura plus besoin après => on enregistre la variable, on met sa valeur, on change de page, on lit la variable, on la détruit. Ca serait plus simple de n'avoir qu'une simple variable globale à un module et qui accessible uniquement dans le module.
Enfin bon, apparement, le monde de la prog web est bien différent du monde de la prog de logiciels ! Il faut juste changer d'état d'esprit. ;)
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 1 sept. 2006 à 10:37
Yep!
Mais bon, si c'était comme tu dis, les scripts prendraient bcp de place en mémoire: les vars de tous les modules seraient gardés auto en mémoire dans l'éventualité qu'on les ré-utilise...
@++
R@f
www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 1 sept. 2006 à 11:01
Ce que tu décris existe déjà : ce sont les variables de session, justement. Tu l'initialises...tu changes de page...tu la lis...tu la détruis. Et en effet, Coockiesch a raison : ce serait très lourd pour le serveur de fonctionner différemment.
De toutes façons, ça n'est pas inhérent à php mais au fonctionnement du web. Aucun langage ne permettra ce genre de choses entre deux pages sur un serveur.