cs_Tartuffe
Messages postés39Date d'inscriptionjeudi 27 mai 2004StatutMembreDernière intervention18 février 2008
-
2 févr. 2006 à 16:05
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
3 févr. 2006 à 07:17
Salut tous... Je suis le neuneu de service (mais, bon à ma décharge,
tout ce que j'ai trouvé sur le web en matière de session n'est pas explicite, loin de là !).
Je croyais (à tord) que mes sessions marchaient correctement...
Ce que je fait :
Page '1' :
<?
session_start();
....
Page 'n' :
<?
session_id();
session_start()
...
mise en session de différente variable
...
Ce qui se produit :
Lorsque je teste en solitaire sur le site, c'est bon, mais lorsqu'il y
a plusieurs personnes connectées, les variables de session
$_SESSION['truc'] prennent une fois la valeur du connecté A, une fois
celle du conecté B, etc.
Ce que j'ai donc modifié :
Je vaudrais éviter d'utiliser les cookies, donc, en fouillant sur le
web, je trouve que le 'session.use_trans_sid' est à 'Off' sur mon
serveur. Donc il me semble qu'il faut utiliser mon 'session.save_path'.
J'ai donc créé à la racine ledit 'session.save_path' avec les droit correspondant...
Mais on me dit aussi qu'il me faut un 'header("Location:" . "$adresse . "?" . SID);'
Alors là je dis : mais c'est koi se bord... ?
Bref la question est longue mais simple :
Je veux bien mettre des tonnes de truc dans mon URL, mais koi PRECISEMMENT ?
Comment je récupère l'info mise en URL et comment je m'assure qu'elle
me rappellera sur le serveur la bonne session, et pas une autre ?
A quoi sert le répertoire 'session.save_path' ?
Quelle est la forme "générique" de mon header de la page 'n' après mon session_start(), quelque chose comme ca ?
<?
session_start();
header("Location:"."path de la page 'n' ou de la page '1'."?".SID);
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 2 févr. 2006 à 16:18
Hello, en rapide :
- tu n'as rien à mettre dans l'url.
- les sessions sont sous contrôle utilisateur! J'entends par là que chaque utilisateur a SA session.
Imaginons:
user A et user B sur ton site en même temps.
Tu stockes leur nom en session :
page 1
<?php
session_start ();
$_SESSION['nom'] = nom_user // on imagine que tu le récupères d'un formulaire).
?>
page 2:
<?php
session_start ();
echo $_SESSION['nom']; // pour le user A, va afficher 'A', et pour le user B, va afficher 'B'.
?>
Pourquoi ? Parce que la session est un cookie côté serveur. Il est stocké dans un répertoire dédié, sur ton serveur (où, ça dépend de ta configuration). C'est un fichier texte, avec pour nom, le SID (l'id de la session courante si tu veux...or, tu peux avoir plein de sessions courantes, autant que tu as d'utilisateurs sur ton site, en fait).
Pour simplifier, dans le fichier :
a45btf488ere1sf5s46ef7e5fe55d
tu as 'nom' => 'A'
et dans le fichier
rt446a5ef76é511faa32df1za355
tu as 'nom' => 'B'
TU n'as rien à mettre dans l'url car c'est transparent pour toi. La session est passée (l'id de session en fait) de page en page automatiquement, si tu as bien pris grade de commencer TOUTES tes pages avec session_start (); (le mieux est encore de l'inclure via un fichier commun).
cs_Tartuffe
Messages postés39Date d'inscriptionjeudi 27 mai 2004StatutMembreDernière intervention18 février 20083 2 févr. 2006 à 22:01
Et bien me revoilou....
Pour l'instant pas de "décloisonnement" entre valeur de variable de
différente session ce qui m'ait arrivé une fois, mais j'ai un doute
terrible sur leur fonctionnement .. Voici l'exemple:
<?
session_id();
session_start();
if (!isset($_SESSION[id])){
echo "y'a bien longtemps qu'on ne vous a pas vu !
";
echo " Time_out de session activé...
";
echo
"Do it again
Sam !";
exit;
}
// jusqu'à là, tout va bien et le test précédent marche dès les 180 secondes réglementaires avant TIMEOUT
Et bien j'ai tout en couleur "$couleur_moi" et tous les LIB sont Ma trogne.
Hors ce n'est pas possible puisque l'init de $_SESSION[id]="ID_P,
résultat de requete selon LOG/PASS" et que fatalement dans ma boucle de
test "if($id==$_SESSION[id])" il n'y en a qu'un pour lequel le test est
vrai...
C'est la gestion de mes sessions, où c'est moi.
_____________________________
Pris d'un doute tout d'un coup... Le problème ne viendrait pas de ca :
- ma variable de test est $id
- l'affectation d'un variable de session s'effectue sans le $.
- Hors le test est fait entre $id et [id]. Donc il y aurait affectation à la volée, et fatalement tous serait identique ?
Petit rappel sur les sessions : "...l'affectation de variable s'effectue sans le caractère $".
Vous la voyez maintenant l'erreur...
La contraine c'est de s'assurer, qu'en aucun cas une variable de
session n'aura le même nom qu'une autre variable. Sinon, c'est le
chaos.
J'en déduis qu'il faut impérativement se faire une méthode de
nommage des variables de session différente de la méthode de nommage
des variables 'classiques'.
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 2 févr. 2006 à 16:16
Salut neuneu ! (c'est amical, pis c'est toi qui le dit...)
Avant de te lancer dans les délires du "j'te-passe-le-ID-dans-l'URL"... Il faut savoir que si tu test les connexions multiples à partir du même couple (ordi, navigateur)...
Forcément ça va coinçer !!!!!!!!!!!!!!!!!!!!!!!
Je dis ça parceque tu annonce d'entrée ton ignorance en PHP et Session !
cs_Tartuffe
Messages postés39Date d'inscriptionjeudi 27 mai 2004StatutMembreDernière intervention18 février 20083 2 févr. 2006 à 16:42
Well, je teste de suite avec mon 'session_path_xxx' sans rien rajouter en URL...
PS : pour J_G...
D'où "Je dis ça parceque tu annonce d'entrée ton ignorance en PHP et Session !"
En php, non, et en session, je la découvre, nuance [: - ))