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

PHP & Base de données Discussion :

Liste des membres connectés


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 20
    Points
    20
    Par défaut Liste des membres connectés
    Bonjour,j'aimerais que dès qu'un membre ce connecte, sa change la valeur "connecter" qui est de 0 en general devienne 1.
    Et que dès qu'il n'est plus connecter sa redevienne 0.
    Et que si au bout d'un certain temps sa met aussi 0 car s'il part sans ce deloguer sa le marquera encore connecter.

    (Ma table s'appelle : membres; et dans ceci il y à un champ : connecter)

    Je c'est pas comment proceder, si vous pouvez m'aider, merci

    Voici mon code de connection:
    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
    <?php
    //Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent.
    if (isset($_POST['connexion']) && $_SESSION['logged'] === false)
    {
            //Vérification des autres variables.
            if (isset($_POST['pseudo'],$_POST['mot_passe']) && !empty($_POST['pseudo']) && !empty($_POST['mot_passe']))
            {
                    //Vérification du pseudo.
                    $pseudo = htmlspecialchars($_POST['pseudo']);
                    $mot_passe = htmlspecialchars($_POST['mot_passe']);
                    $connecter = htmlspecialchars($_POST['connecter']);
     
                    //Requête comptant le nombre de pseudos $_POST['pseudo']
                    $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");
     
                    //Si le pseudo existe.
                    if (mysql_result($sql,0,'nb_pseudo') == 1)
                    {
                            //Vérification du mot de passe
                            //Information sur le compte du membre.
                            $sql_infos = mysql_query("SELECT id, mot_passe, confirmation FROM membres WHERE pseudo='".$pseudo."'");
                            $donnees = mysql_fetch_array($sql_infos);
     
                            //Hashage du mot de passe.
                            $mot_passe_hash = md5($mot_passe);
     
                            //Comparaison du mot de passe.
                            if ($mot_passe_hash == $donnees['mot_passe'])
                            {
                                    //On vérifie que le compte est confirmé.
                                    //Si $donnees['confirmation'] vaut 1.
                                    if ($donnees['confirmation'] == 1)
                                    {
                                            if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on')
                                            {
                                                //Temps d'expiration des cookies (1 an).
                                                $expire = time() + 3600 * 24 * 365;
     
                                                setcookie('pseudo', $pseudo, $expire);
                                                setcookie('mot_passe', $mot_passe_hash, $expire);
                                            }
     
                                            //Tout est bon, on connecte le membre.
                                            $_SESSION['logged'] = true;
     
                                            //Création de 2 variables de session, contenant des informations sur le membre.
                                            $_SESSION['id'] = $donnees['id']; //Id du membre.
                                            $_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
     
                                            //Redirection vers la page membre.
                                            header("location: membres.php");
                                    }
                                    else
                                            echo 'Erreur : le compte n\'est pas confirmé !';
                            }
                            else
                                    echo 'Erreur : le mot de passe est incorrect !';
                    }
                    else
                            echo 'Erreur : le pseudo n\'existe pas !';
            }
            else
                    echo 'Erreur : veuillez remplir tous les champs !';
    }
    ?>
    Je c'est qu'il faut mettre un UPDATE etc mais je c'ets pas du tout ou le palcer, merci d'avance

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Il faut qu'à chaque consultation de page, tu stockes le timestamp dans ta bdd, et que tu vérifies que le champ Connecte est bien à 1.
    Quand le membre se déconnecte proprement, tu passes le champ à 0.
    Tu peux régulièrement nettoyer la table des membres qui sont soit-disant connectés mais qui n'ont pas affiché de page depuis x min (5 min généralement).

    Maintenant, ma question : pourquoi avoir un champ 'Connecté' ? Si c'est pour un compteur, cela n'a aucun intérêt. Le seul champ 'date_derniere_page_consultee' suffit (tu fais une requête qui renvoie le nombre de lignes dont la date est inférieure à 5 min), à condition de le passer à null en cas de déconnexion manuelle.
    Si c'est pour une question de sécurité, il vaut surement mieux utiliser les sessions.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    c'est pour afficher la listes des membres connecté et non un compteur ^^

    Aussi, ok il faut mettre ceci pour detecter s'il est connecter ou non, mais je ne voit pas du tout le code à mettre...
    Avez vous un exemple ou une solution à me proposer svp?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Fais une recherche sur ce forum. Il y a des dizaines de threads qui parlent de ce sujet.

Discussions similaires

  1. débutant - adsi-liste des users connectés
    Par Invité dans le forum VBScript
    Réponses: 1
    Dernier message: 20/06/2006, 11h48
  2. explication des membres connectés.
    Par Maxoo dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 25/04/2006, 12h49
  3. liste des users connectés à une base acces
    Par progima dans le forum Access
    Réponses: 2
    Dernier message: 07/11/2005, 16h45

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