Débutant en variables Session

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 : Débutant en variables Session

par AB » 07 avr. 2009, 02:10


Si j'ai bien compris, ça veut dire que je dois nommer différement les deux toto de mon exemple, la variable simple et la variable Session.

J'ai aussi bien retenu de modifier mes autres session_start() en les mettant conditionnels.

Merci encore de votre aide.

Francois
Le plus simple dans ce cas est d'affecter tes variables comme ça il n'y aura pas d'ambiguïté
$toto = isset($_SESSION['toto'])? $_SESSION['toto'] : 'une valeur par défaut';
Le plus simple dans l'absolu serait que tu puisse modifier la configuration du serveur pour mettre register global à off. Dans un fichier .htaccess situé à la racine du site, tu peux essayer de mettre

Code : Tout sélectionner

php_flag register_globals off
Fais la vérification rapidement car si le serveur ne l'accepte pas il peut mettre le site en rade (dans ce cas il suffit de supprimer le fichier)

par francoisch » 06 avr. 2009, 17:45

Merci de vos réponses qui m'éclairent.

Je vais digérer tout ça.

Merci encore.

Francois
--------------------------------------------------------------------
Vérification phpinfo faite, REGISTER_GLOBALS est à ON.

Si j'ai bien compris, ça veut dire que je dois nommer différement les deux toto de mon exemple, la variable simple et la variable Session.

J'ai aussi bien retenu de modifier mes autres session_start() en les mettant conditionnels.

Merci encore de votre aide.

Francois

par AB » 05 avr. 2009, 20:07

Remarques :
Quand tu fais des include/require, fais attention car tu ne peux pas déclarer session_start() plus d'une fois. Si tu inclues des pages qui ont besoin de session_start() (si elles sont utilisées par ailleurs par exemple) dans une page où tu as déjà déclaré une session le plus simple est d'écrire
if (!session_id()) session_start();

Pour info, j'ai un bug erratique avec l'utilisation de session_regenerate_id(TRUE); à utiliser avec prudence donc.

par Lirio » 05 avr. 2009, 14:17

Si l'option REGISTER_GLOBALS est à off (ce qui devrait toujours être le cas :p), les variables $toto et $_SESSION[toto'] sont bien indépendante.
Dans le cas contraire, il y a une réference : modifier l'un modifie l'autre.
Le pire étant que cette remarque est valable pour tous les superglobaux, pas seulement pour $_SESSION. :shock:

par albat » 05 avr. 2009, 12:28

Comment est initialisé le paramètre REGISTER_GLOBALS ?

par francoisch » 05 avr. 2009, 12:19

bonjour et merci de ta réponse.

Oui, je me suis mal exprimé, il s'agit bien de plusieurs pages, pas toutes affichables.

Sujet lié: j'ai eu une curieuse erreur qui m'a amené à supprimer un session_start() d'un page.

J'avais des paires de variables comme, par exemple:
- $_SESSION['toto']
- $toto

Une page, où $toto était déclarée, appelait une autre page par include; la variable $_SESSION['toto'] avait été déclarée par ailleurs.

Le session_start() avait un impact (je l'ai enlevé, ça marche) sur la valeur de la variable $toto dont la valeur n'était pas correcte dans la page appellée.

Question: y a t il un inconvénient à utiliser, par exemple, toto à la fois dans $toto et $_SESSION['toto']?

Pour moi, ce sont deux variables bien distinctes.

Je me trompe?

Francois

par albat » 05 avr. 2009, 11:28

Qu'appelles-tu un module ?

Si c'est une page, tu peux te simplifier la vie en plaçant un session_start() en tête de chacune.

Débutant en variables Session

par francoisch » 05 avr. 2009, 10:56

Bonjour

Je commence à tester du code avec des variables Session, avec quelques difficultés.

J’ai compris qu’il faut placer en premier un ordre session_start().

J’aimerai poser une question simple :
• Je met un seul ordre session_start() dans le premier module et je peux ensuite déclarer des variables Session dans d’autres modules qui seront appelées par le premier ?
• Je met un ordre session_start() dans chaque module où je déclare des variables Session ?

J’ai cherché ma réponse dans des forums sans succès.

Merci par avance de votre réponse et de votre indulgence.

Francois