Page 1 sur 3
sessions avancées
Posté : 09 nov. 2009, 16:51
par toony.m
Bonjour à tous,
Je suis face à un petit problème que je n'arrive pas à résoudre.
Une page "recherche.php" execute un script de recherche suivant différents critères et les stocke dans des sessions.
Ex:
$_SESSION['nom']=$_POST['nom'];
$_SESSION['prenom']=$_POST['prenom'];
Etc...
Mon problème est, que lorsque j'ouvre "recherche.php" dans plusieurs onglets les paramètres s'ecrasent les uns les autres.
Comment individualiser les sessions ?
Re: sessions avancées
Posté : 09 nov. 2009, 17:07
par Victor BRITO
Regarde du côté d'
isset ().
Re: sessions avancées
Posté : 09 nov. 2009, 17:14
par toony.m
oui je connais isset(), mais je n'ai peut etre pas été assez clair parceque je ne vois pas trop le lien avec isset() et mon problème.
Pour revenir à l'exemple précédent, ma page de recherche donne des résultats (evidemment).Un clic dessus affiche dans la meme fenetre plus de details de ce "résultat". Et un bouton retour est censé me ramener à la page de recherche avec tous les critères pré-remplis.
Mais si il y a plusieurs pages, cela crée des complications. Ex si l'on ouvre 2 pages en parallele :
1ere page de recherche
clic sur un resultat
affichage des details
______________________2eme page de recherche
______________________clic sur un resultat
______________________affichage des details
retour à la recherche
PB : les criteres de la 2eme recherche sont chargés dans la 1ere page...
Des qu'une nouvelle fenetre s'ouvre, en fait, peut-on focer la creation de nouvelle session coté serveur ?
Re: sessions avancées
Posté : 09 nov. 2009, 18:55
par Victor BRITO
Si je parle d'isset (), c'est dans l'optique de tester si une variable de session est déjà définie pour un index donné.
if (!isset ($_SESSION['nom'])) $_SESSION['nom'] = $_POST['nom'];
if (!isset ($_SESSION['prenom'])) $_SESSION['prenom'] = $_POST['prenom'];
Re: sessions avancées
Posté : 09 nov. 2009, 23:53
par Aureusms
Je penserais à contourner par l'utilisation d'isset(), d'une autre variable et d'un format tableau. Je n'emplois volontairement pas les fonctions ternaires pour être plus clair :
<?php
//le formulaire vient d'être posté
if (!isset($_SESSION["identifiant"]))
{
$_SESSION["identifiant"] = 0;
$identifiant = $_SESSION["identifiant"];
$_SESSION["nom"][$identifiant] = addslahshes($_POST["nom"];
$_SESSION["prenom"][$identifiant] = addslahshes($_POST["nom"];
}
else
{
$identifiant = $_SESSION["identifiant"];
if (isset($_SESSION["nom"][$identifiant] && $_POST["nom"] != $_SESSION["nom"][$identifiant])
{
$_SESSION["identifiant"]++;
$identifiant = $_SESSION["identifiant"];
$_SESSION["nom"][$identifiant] = addslahshes($_POST["nom"];
$_SESSION["prenom"][$identifiant] = addslahshes($_POST["nom"];
}
else
{
$_SESSION["nom"][$identifiant] = addslahshes($_POST["nom"];
$_SESSION["prenom"][$identifiant] = addslahshes($_POST["nom"];
}
}
?>
Un truc du genre pourrais fonctionner ...
Re: sessions avancées
Posté : 10 nov. 2009, 12:59
par toony.m
Super l'idée!
je l'ai adapté et ça marche nickel!
MERCI !
Re: sessions avancées
Posté : 10 nov. 2009, 14:59
par Truc
Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton
en haut à droite de la réponse qui te semble la plus pertinente.
Re: sessions avancées
Posté : 10 nov. 2009, 17:49
par toony.m
Et ba non, mon sujet n'est pas résolu finalement...
Je suis bloqué à cause d'une réaction bizarre des sessions en tableau.
Si j'insère des valeurs comme ceci:
$aleatoire=rand(2, 1234542); // 1562 par ex.
$_SESSION['nom'][$aleatoire]=$_POST['nom'];
$_SESSION['prenom'][$aleatoire]=$_POST['prenom'];
et que j'apelle plusieurs fois la page, impossible d'avoir une valeur en faisant :
echo $_SESSION['nom'][1562];
C'est vide...

Re: sessions avancées
Posté : 10 nov. 2009, 17:50
par Yosh
As-tu mis le session_start en haut de ta page?
Re: sessions avancées
Posté : 10 nov. 2009, 17:51
par toony.m
Oui il y est bien.
Je me suis demandé si cela n'etait pas du à nombre aléatoire trop grand qui dépasserait les limites du tableau...
mais ça le fait pour chaque nombre, grand comme petit.
Re: sessions avancées
Posté : 10 nov. 2009, 21:12
par fab
Surtout, d'ou tu sors 1562 ?
Re: sessions avancées
Posté : 10 nov. 2009, 22:23
par Aureusms
Si tu mets :
<?php
session_start ()
$aleatoire=rand(2, 1234542); // 1562 par ex.
$_SESSION['nom'][$aleatoire]=$_POST['nom'];
$_SESSION['prenom'][$aleatoire]=$_POST['prenom'];
?>
et tu appelles plusieurs fois la page : tu génères $aléatoire à chaque fois non ?
Re: sessions avancées
Posté : 13 nov. 2009, 14:05
par christele
Bonjour,
je passais par là, et
je vous lit avec étonnement puisque la base des sessions est
une session par visiteur (micro) alors j'espéres au moins que vous étes OK sur le fait que si je vais sur un site
dans trois onglets avec vos méthodes
$_SESSION["nom"][1] sera le même dans les trois onglets
$_SESSION["nom"][2] sera un autre nom mais le même dans les trois onglets
vous faites ce que vous voulez mais deux session par micro c'est
Le cookies unique de session du micro en est la cause.
Re: sessions avancées
Posté : 13 nov. 2009, 14:47
par Aureusms
Oui je sais : le but c'est de le contourner ce fameux cookies. Quitte à passer par l'URL.
Le but de jeu est de créer une super SESSION organisée en tableau numérique ou chaque utilisateur virtuel de la session serait identifié par un numéro.
Alors on est d'accord : 1 PC = 1 SESSION (plus ou moins) mais ta session, tu peux en faire ce que tu veux....
Re: sessions avancées
Posté : 13 nov. 2009, 18:52
par christele
Oui je sais : le but c'est de le contourner ce fameux cookies. Quitte à passer par l'URL.
Le but de jeu est de créer une super SESSION organisée en tableau numérique ou chaque utilisateur virtuel de la session serait identifié par un numéro.
Alors on est d'accord : 1 PC = 1 SESSION (plus ou moins) mais ta session, tu peux en faire ce que tu veux....
Oui un cas d'école en fait puisqu'aller voir son site sous plusieurs onglets il faut le vouloir
