Connectés (utilisation de mysql)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 220 fois - Téléchargée 27 fois

Contenu du snippet

Ce code sert à afficher la liste des connectés sur le site.

On stoque l'ip du visiteur, son pseudo (s'il est logé) et sa date de dernière visite

Source / Exemple :


/*
Création de la table MySQL
CREATE TABLE `connectes` (
  `ip` varchar(20) NOT NULL default '',
  `derniere` int(9) unsigned NOT NULL default '0',
  `pseudo` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`ip`)
) TYPE=MyISAM;

  • /
// fonction a appeler au début de vos pages function connectes() { $temps = 5; if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS)) mysql_select_db(BDD_BDD); else return; // ip du client $ip = $_SERVER['REMOTE_ADDR']; // pseudo $pseudo = empty($_SESSION['nom']) ? '' : $_SESSION['nom']; // time actuel $time = time(); // on recherche l'utilsateur $sql_query = "SELECT * FROM connectes where ip='$ip'"; $result = mysql_query($sql_query); if(!$result) return; // si l'utilisateur n'est pas deja dans la table if(mysql_num_rows($result) == 0) { $sql_query = "INSERT INTO connectes VALUES ('$ip', '$time', '$pseudo')"; $result = mysql_query($sql_query); if(!$result) return; } // mise-à-jour else { $sql_query = "UPDATE connectes SET derniere='$time', pseudo='$pseudo' WHERE ip='$ip'"; $result = mysql_query($sql_query); if(!$result) return; } // temps d'incativité $time -= $temps * 60; // on supprime ceux qui n'ont pas été connectés depuis assez longtemps $sql_query = "DELETE LOW_PRIORITY FROM connectes WHERE derniere <= $time"; $result = mysql_query($sql_query); mysql_close(); } // Affichage des connectés, à mettre ou vous voulez ;-) $stop = 0; if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS)) mysql_select_db(BDD_BDD); else $stop = 1; if(!$stop) { $sql_query = "SELECT pseudo FROM connectes WHERE pseudo <> ''"; $result = mysql_query($sql_query); if(!$result) $stop = 1; else { echo '<font color="#0000FF">Connectés:</font><br>'; while($connecte = mysql_fetch_array($result)) echo $connecte[0] . '<br>'; } } if($stop == 0) { $sql_query = "SELECT count(*) FROM connectes WHERE pseudo = ''"; $result = mysql_query($sql_query); if($result) { $visiteurs = mysql_fetch_array($result); echo '<br><font color="#0000FF">Visiteurs:</font><br>' . $visiteurs[0]; } } mysql_close();

Conclusion :


-----------------------------
Voici ce qu'il faut changer:
-----------------------------
Dans la fonction connectes:
- $temps = 5; // nombre de minute d'inactivité avant de supprimer un membre de la liste des connectes
- if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS))
mysql_select_db(BDD_BDD); // informations de connection à mysql
- Pour le pseudo du visiteur, j'utilise une variable de session nommée nom, vous pouvez changer la ligne suivante:
$pseudo = empty($_SESSION['nom']) ? '' : $_SESSION['nom'];

Script d'affichage:
if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS))
mysql_select_db(BDD_BDD);

Voilà, j'attends vos commentaires

A voir également

Ajouter un commentaire

Commentaires

Wars007
Messages postés
28
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
15 novembre 2004
-
Il y a une erreur il ne faut pas mettre la function connectes() car sinon sa enregsitre pas dans la table sql
coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3 -
Salut!
J'ai pas trop compeis, c'est quoi le problème?

@++

R@f
Wars007
Messages postés
28
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
15 novembre 2004
-
jarrive pas a le faire fonctionez sa enregistre rien dans la table sql
coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3 -
Salut!
Je viens de faire un test, concluant, avec et sans valeur à $_SESSION['nom']...

Voici la version avec, oublie pas les infos de connection mysql
<?php
session_start();
$_SESSION['nom'] = 'raf';

// fonction a appeler au début  de vos pages
function connectes()
{
    $temps = 5;
    
    if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS))
mysql_select_db(BDD_BDD);
    else
        return;
        
    // ip du client
    $ip = $_SERVER['REMOTE_ADDR'];
    
    // pseudo
    $pseudo = empty($_SESSION['nom']) ? '' : $_SESSION['nom'];
    
    // time actuel
    $time = time();

    // on recherche l'utilsateur
    $sql_query = "SELECT * FROM connectes where ip='$ip'";
    $result = mysql_query($sql_query);
    
    if(!$result)
        return;
    
    // si l'utilisateur n'est pas deja dans la table
    if(mysql_num_rows($result) == 0)
    {
        $sql_query = "INSERT INTO connectes VALUES ('$ip', '$time', '$pseudo')";
        $result = mysql_query($sql_query);
        
        if(!$result)
            return;
    }
    // mise-à-jour
    else
    {
        $sql_query = "UPDATE connectes SET derniere='$time', pseudo='$pseudo' WHERE ip='$ip'";
        
        $result = mysql_query($sql_query);
        
        if(!$result)
            return;
    }
    
    // temps d'incativité
    $time -= $temps * 60;
    
    // on supprime ceux qui n'ont pas été connectés depuis assez longtemps
    $sql_query = "DELETE LOW_PRIORITY FROM connectes WHERE derniere <= $time";
    $result = mysql_query($sql_query);
    
    mysql_close();
}

connectes();


// Affichage des connectés, à mettre ou vous voulez ;-)
$stop = 0;
            
if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS))
mysql_select_db(BDD_BDD);
else
  $stop = 1;
                        
if(!$stop)
{
    $sql_query = "SELECT pseudo FROM connectes WHERE pseudo <> ''";
    $result = mysql_query($sql_query);
                        
    if(!$result)
        $stop = 1;
    else
    {
        echo 'Connectés:
';
                            
        while($connecte = mysql_fetch_array($result))
            echo $connecte[0] . '
';
    }   
}
                    
if($stop == 0)
{
    $sql_query "SELECT count(*) FROM connectes WHERE pseudo ''";
    $result = mysql_query($sql_query);
                        
    if($result)
    {
        $visiteurs = mysql_fetch_array($result);
                            
        echo '
Visiteurs:
' . $visiteurs[0];
    }
}
                    
mysql_close();
?>


Et il m'affichait bien:
Connectés:
raf

Visiteurs:
0

@++

R@f
Wars007
Messages postés
28
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
15 novembre 2004
-
jarrive pas a faire fonctionez

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.