Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2007, 02h04   #1
Invité de passage
 
Inscription : février 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 4
Points : 0
Points : 0
Par défaut [Cookies] Destruction puis reconstruction de session

bonsoir,

je cherche à détruire une session (associée à un cookie auto) et à la recréer dans la foulée (la même page)
je la détruit si bien qu'il m'est impossible de recréer quoi que ce soit (dans la mm page ou mm une page différente)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
session_start();
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name());
	unset($_COOKIE[session_name()]);
}
$_SESSION = array();
session_destroy();
session_start();
session_regenerate_id();
session_name(session_id());
$_SESSION['user']=array();
$_SESSION['user']['truc']= "machin";
setcookie(session_name(), session_name());
 
echo " apres cookie: ".$_COOKIE[session_name()];
j'aimerais dégager la session existante et le cookie associé sur la bécane client
et recréer une nouvelle sesssion avec son nouveau cookie (ou obtenir des id totalement différentes pour la 2e session et son cookie)

avec ce code , je dégage bien la session mais non seulement, le code recréant la session n'est pas fonctionnel mais en accédant à d'autres pages où j'ai des tests d'existance et de création si non existance de la session, la session n'est jamais créée (les echo donnent des valeurs vides "")
l'echo de fin de code ci dessus est vide lui aussi

comment arriver à réaliser ce que je souhaite faire ?
je vous remercie d'avance de votre aide
pseudo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 20h25   #2
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
as tu essayé en regénérant la session avec session_regenerate_id() ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start();
 
$old_sessionid = session_id();
 
session_regenerate_id();
 
$new_sessionid = session_id();
 
echo "Ancienne session: $old_sessionid<br />";
echo "Nouvelle session: $new_sessionid<br />";
 
print_r($_SESSION);
?>
L'exemple de code ci-dessus est tiré du manuel de PHP.

@++
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 22h25   #3
Invité de passage
 
Inscription : février 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 4
Points : 0
Points : 0
j'avais dejà un session_regenerate_id(); ci dessus mais j'ai simplifié le code :

Code :
1
2
3
4
5
6
 
session_start();
session_regenerate_id(true);
session_name(session_id());
$_SESSION['user']=array();
$_SESSION['user']['truc']= "machin";
c'est pas mieux (je garde la session et ses valeurs malgré la destruction des anciennes valeurs et la mise à 0 du tablo user, impossible d'obtenir un nouvel id)

dois je regarder qqchose dans le phpinfo qui ferait que ces sessions soient engluantes ?
pseudo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 23h31   #4
Invité de passage
 
Inscription : février 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 4
Points : 0
Points : 0
je deviens chèvre

que je fasse :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
session_start();
$old_sessionid = session_id();
if (isset($_COOKIE[session_name()])) {
	setcookie(session_name());
	unset($_COOKIE[session_name()]);
}
$_SESSION = array();
session_regenerate_id(true);
session_name(session_id());
$_SESSION['user']=array();
$_SESSION['user']['truc']= "machin";
setcookie(session_name(), session_id());
ou
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
session_start();
$old_sessionid = session_id();
if (isset($_COOKIE[session_name()])) {
	setcookie(session_name());
	unset($_COOKIE[session_name()]);
}
$_SESSION = array();
session_regenerate_id(true);
session_name(session_id());
$_SESSION['user']=array();
$_SESSION['user']['truc']= "machin";
ça donne :
Ancienne session: b2818e934857bdb26f8ec2fe9dde6e0c
Nouvelle session: 32ca9680634d50b859cc3eeb860f2262

sauf que lorsque je change de page la session redevient l'ancienne session

comment faire ?
pseudo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 22h33   #5
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
Je me suis livré au test suivant :

index.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    session_start();
    $old_sessionid = session_id();
       session_regenerate_id();
    $new_sessionid = session_id();
    echo "<html><head></head><body>";
    echo "Ancienne session: $old_sessionid<br />";
    echo "Nouvelle session: $new_sessionid<br />";
?>
<br>
<a href="page2.php">page2.php</a>
</body>
</html>
page2.php
Code :
1
2
3
4
5
6
7
8
9
10
<?php
    session_start();
    $sessionid = session_id();
    echo "<html><head></head><body>";
    echo "Session en cours sur la page 2 : $sessionid<br />";
?>
<br>
<a href="index.php">index.php</a>
</body>
</html>
je mets tout ça sur le serveur !
et ça fonctionne trés bien !
tu peux tester ici

Le problème vient donc d'ailleurs .... Et pas de la regeneration de la session.
(envoi moi un MP quand tu sera passé par là, pour que j'enlève le test du serveur.)

@++
pascal
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2007, 19h38   #6
Invité de passage
 
Inscription : février 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 4
Points : 0
Points : 0
merci Pascal,
en effet ça fonctionne très bien sur ton serveur
est ce que cela pourrais etre du à un hébergeur ? (ovh pour pas le citer ??)
je n'avais pas du tout ce pb en local

dans l'urgence, j'ai contourné le probleme n'ayant pas pas réussi à le résoudre... :C
pseudo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2007, 03h03   #7
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
Mauvaise réponse, car le test cité plus haut est hébergé chez OVH ...

verification ici

@++
__________________
"Soyez les changements que vous aimeriez voir dans le monde" Mahatma Gandhi
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h43.


 
 
 
 
Partenaires

Hébergement Web