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 14/09/2006, 10h40   #1
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Par défaut Détruire et recréer une session

Salut voici le code simplifié de mon problème :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?php
 
session_start();
$order = new Order(session_id());
$order->sqlSelect(); // récupération d'infos dans une BDD
if(isset($_POST['send']))	{
	// Envoi de la commande par mail
	$order->send();
	session_regenerate_id();
	exit();
}
 
?>
En fait je crée un objet commande avec l'identifiant de session, puis je récupère des infos dans une BDD en fonction de cet identifiant. Le but est de recréer une nouvelle session quand le mail de la commande est envoyé. Ainsi une nouvelle commande est générée avec un nouvel id et l'utilisateur ne peut pas envoyer plusieurs fois l'ancienne commande en rafraichissant la page. Ce code fonctionne très bien en local, l'id de session change bien au rechargement de la page mais il ne fonctionne pas sur mon serveur. D'où ces 2 petites questions

- quelqu'un aurait-il une idée du paramètre de config qui peut jouer là-dessus ?
- quelqu'un connait-il un autre moyen de recréer une session (donc avec un nouveau SID) ?

Je précise que la fonction session_regenerate_id() existe bien sur mon serveur (4.4.2)
Merci d'avance pour votre aide et a+
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2006, 10h56   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Et un appel de session_destroy() puis session_start() ? D'après un test récent que j'ai pu effectué, il recrée une nouvelle session après avoir détuire la précédente.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2006, 11h04   #3
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Salut,
il recrée une session mais avec le même id ^^.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2006, 15h34   #4
Membre habitué
 
Avatar de kodokan
 
Lycéen
Inscription : avril 2006
Messages : 128
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : avril 2006
Messages : 128
Points : 114
Points : 114
Salut

Et en faisant ceci :
Code :
1
2
3
4
<?php 
unset($_SESSION);
session_destroy();
?>
regarde ici tu trouvera peut-etre ce que tu cherche
kodokan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 13h33   #5
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Salut,
toujours le même problème, il ne détruit pas la session.
Je potasse la doc ^^
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 13h48   #6
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Bon finalement j'ai réussi à recréer une session en faisant comme ceci.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
session_start();
if(isset($_SESSION['destroy']))	{
	session_destroy();
	session_start();
	session_regenerate_id();
}
$order = new Order(session_id());
$order->sqlSelect(); // récupération d'infos dans une BDD
if(isset($_POST['send']))	{
	// Envoi de la commande par mail
	$order->send();
	$_SESSION['destroy'] = true;
	exit();
}
?>
Cette fois-ci cela fonctionne sur les 2 serveurs. Je suis obligé de mettre session_regenerate_id() sinon il ne détruit pas la session.
Je laisse à non résolu, si quelqu'un a une idée du paramètre de conf qui peut joué là-dessus cela m'intéresse.
Bye et merci pour votre aide ^^
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2006, 10h02   #7
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Si tu veux simplement que l'id de session change tu fait juste le session_regenerate_id()

Je ne vois pas trop l'intéret de supprimer la session pour la recéer 1seconde plus tard.

session_regenerate_id() ne supprime en rien la session.

Au cas ou si ca peux t'aider un peu : http://a-pellegrini.developpez.com/t...hp/session-db/
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2006, 14h28   #8
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Je veux aussi supprimer les variables de session ^^

[edit] Merci pour le lien. C'est d'ailleurs la méthode que j'utilise. [/edit]
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2006, 15h04   #9
Membre habitué
 
Avatar de kodokan
 
Lycéen
Inscription : avril 2006
Messages : 128
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : avril 2006
Messages : 128
Points : 114
Points : 114
pour supprimer tes variables de session tu fait
Code :
1
2
3
4
5
unset($_SESSION);
 
ou 
 
$_SESSION = array();
kodokan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 14h20   #10
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Oui, en effet je purrais aussi faire comme ca ^^
Merci pour vos réponses.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 13h47   #11
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Citation:
Envoyé par kodokan
pour supprimer tes variables de session tu fait
Code :
1
2
3
4
5
unset($_SESSION);
 
ou 
 
$_SESSION = array();
Surtout pas unset($_SESSION); car ta super globale $_SESSION serait détruite... par contre $_SESSION = array(); oui... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h00.


 
 
 
 
Partenaires

Hébergement Web