IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Cookies] Des sessions immortelles


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 85
    Points : 77
    Points
    77
    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.

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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 ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Bonjour Eusebius,

    voici le code de la page de connexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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....?

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Le doit être fait avant tout autre ligne de code ... donc ça doit être la première.

    La doc.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    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

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    N'oublie pas de cliquer sur "Résolu"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/03/2007, 15h46
  2. [Cookies] Acceptation des cookies de session
    Par webrider dans le forum Langage
    Réponses: 4
    Dernier message: 14/12/2006, 14h22
  3. Réponses: 3
    Dernier message: 19/10/2006, 11h45
  4. [Cookies] interaction des sessions sous asp et php
    Par boss_gama dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2006, 10h26
  5. Réponses: 26
    Dernier message: 25/11/2005, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo