Session pour les neuneus !

Résolu
Signaler
Messages postés
39
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
18 février 2008
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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);

...




HELLLPPPPPPPPPP !!!!!!!!!


PekLandais, dans la merde là...

6 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
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).
Messages postés
39
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
18 février 2008
3
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

// divers blabla

// requete select de tout les ID présent en BdD

$id=$info_j['ID_P'];

if($id==$_SESSION[id]){

imagesetpixel($imagecible,$x_pix,$y_pix,$couleur_moi);

$lib="Ma trogne";

}

else{

imagesetpixel($imagecible,$x_pix,$y_pix,$couleur_eux);

$lib="leur trogne";

}

//et encore...

?>



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 ?

_____________________________


PekLandais
Messages postés
39
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
18 février 2008
3
Oki ! Oki !





C'est simple les sessions...


Si ca ne marche pas c'est de la faute du serveur, mais pas de vous.




session_start();
et puis voilà !


Sur chaque page et hop, prisunic....


Pas de
session_id();
qui traine, ni de
 Header(LOCATION:blabla); 
suite à un lien de type
<a href="path?variable=session_id()">lien</a>; 



Rien de rien !


Rien de tout cela, sauf dans les cas tordus où c'est nécessaire.


Même pas besoin de cookies, pour vous dire !




session_start();
, point-barre !!!!!!







CEPENDANT, il y a une contrainte, et une grosse...


____________________________________

$id=$info_j['ID_P'];

if($id==$_SESSION[id]){

imagesetpixel($imagecible,$x_pix,$y_pix,$couleur_moi);

$lib="Ma trogne";

}

else{

imagesetpixel($imagecible,$x_pix,$y_pix,$couleur_eux);

$lib="leur trogne";

}

____________________________________



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'.


Et il faut s'y tenir !

PekLandais
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hmmm...ou d'avoir les register_globals à Off.
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
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 !

Serait-ce une explication de to Pb ?

A+
Messages postés
39
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
18 février 2008
3
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 [: - ))


PekLandais