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 13/07/2006, 08h47   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Par défaut [Cookies] Des sessions immortelles

Bonjour à tous,

Je travail depuis chez moi au développement d'un petit site (j'utilise php 5).
Toute les pages ont en premier code une vérification de login dans la session.
Je viens de me rendre compte ce matin qu'une session était resté active puisque j'ai pu accéder à toutes les pages.
Depuis la dernière identification ,il s'est passé plus de 24h et j'avais éteint l'ordi....
....les sessions ne meurent donc plus toutes seules meme aprés 24h...
Je viens de vérifier et je n'ai pas session.lifetime ds php.ini.

Quelqu'un aurait-il une idée sur les raisons pour laquelle mes sessions sont immortels ? et une solution éventuellment pour remédier à celà ?

Merci de vos réponses.
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 09h02   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Attilius
Des sessions immortelles
Il ne peut en rester qu'une

Plutôt que d'envisager des "sessions immortelles", est-ce que tu es sûr que ce n'est pas le code de ta page de login qui rouvre la session automatiquement ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 10h38   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Bonjour Eusebius,

voici le code de la page de connexion

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    if ((isset($_POST['pseudo']) && !empty($_POST['pseudo'])) && (isset($_POST['password']) && !empty($_POST['password']))) {
 
 
		// Paramètres persos
$host = "localhost"; // voir hébergeur
$user = "root"; // vide ou "root" en local
$pass = ""; // vide en local
$bdd = "rootbase"; // nom de la BD
// connexion
@mysql_connect($host,$user,$pass)
   or die("Impossible de se connecter");
@mysql_select_db("$bdd")
   or die("Impossible de se connecter");
 
         // on teste si une entrée de la base contient ce couple login / pass
        $pseudo = addslashes($_POST['pseudo']);
		$passw = addslashes($_POST['password']);
		$sql = "SELECT id,email FROM tmembres WHERE pseudo = '$pseudo' AND password = '$passw'";
 
		//$sql = 'SELECT count(*) FROM tmembres WHERE pseudo="'.addslashes($_POST['pseudo']).'" AND password="'.addslashes($_POST['password'])).'"';
		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
        $nb = mysql_num_rows($req);
 
        if ($nb == 1) {
            $data = mysql_fetch_array($req);
 
            session_start();
            $_SESSION['pseudo'] = $_POST['pseudo'];
            // on enregistre en plus l'id du membre dans une variable de session
            $_SESSION['id'] = $data['id'];
            $_SESSION['email'] = $data['email'];
 
            mysql_free_result($req);
            mysql_close();
 
		    header('Location: membres.php');
            exit();
        }
        // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
        elseif ($nb == 0) {
            $erreur = 'Compte non reconnu.';
        }
        // sinon, alors la, il y a un gros problème :)
        else {
            $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
        }
		mysql_free_result($req);
        mysql_close();
 
    }
    else {
        $erreur = 'Au moins un des champs est vide.';
    }
}
?>
<html>
<head>
<title>Accueil</title>
</head>
 
<body>
Pour avoir accès à tous les services de job-services.fr vous devez vous inscrire<br /><br />
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Pseudo : <input type="text" name="pseudo" value="<?php if (isset($_POST['pseudo'])) echo stripslashes(htmlentities(trim($_POST['pseudo']))); ?>"><br />
Mot de passe : <input type="password" name="password" value="<?php if (isset($_POST['password'])) echo stripslashes(htmlentities(trim($_POST['password']))); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a><br />
<a href="recherche.php">Faire une recherche</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
...avec du recul il me semble que cette erreur n'existait pas il y a quelque jours....
Entre temps j'ai installé un script de gestion de news (phpmynewsletter).

Peut-etre le probleme vient de la....?
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 13h39   #4
Membre éprouvé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2003
Messages : 910
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2003
Messages : 910
Points : 407
Points : 407
Le doit être fait avant tout autre ligne de code ... donc ça doit être la première.

La doc.
__________________
Quand on n'a pas d'tête, on a ...
ghohm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 14h19   #5
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Merci pour ta réponse et pour le lien sur la doc,

Ca m'a permis de comprendre d'où venait mes problèmes:

Pbl: les sessions n'étaient pas supprimés malgré session.gc_maxlifetime tres bas
Rép: gc fait du ménage aléatoirement dans les fichiers de sessions donc c'est normal que je retrouve toujours ces fichiers ds mon répertoire.

Pbl: Après avoir vidé les cookies, je n'etais plus reconnu conne logué
Rép: Un cookie était donc créé automatiquement et chaque fois que je me reconnecté au site ,il réactivait la session

Résolution du problème: Comme je n'utilise pas les cookies (coté client) il m'a suffit de modifier php.ini --> session.use_cookies = 0

...et le tour est joué

Ceci est ma compréhension du problème.Si je suis inéxacte (ou meme carrément à coté d la plaque) n'hésitez pas à me corriger ( )...ca servira à d'autres.

Merci pour vos réponses
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2006, 14h26   #6
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
N'oublie pas de cliquer sur "Résolu"
Eusebius 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 10h57.


 
 
 
 
Partenaires

Hébergement Web