Connectés (utilisation de mysql)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 263 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

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Normalement, c'est .inc.php: connect.inc.php pour éviter les pbs...

@++

R@f
Messages postés
1
Date d'inscription
dimanche 29 mai 2005
Statut
Membre
Dernière intervention
21 juin 2005

euh...
tout le monde peu voir le fichier connect.inc donc les infos...
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Les variables définies en dehors de fonctions ne sont pas accessibles par défaut...

Il faut commencer par les passer en global. Au début de la fonction, rajoute:
global $shost,$suser,$spass, $sbase;

@++

R@f
Messages postés
28
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
17 mai 2006

---connect.php----
<?php
$shost = 'localhost';
$suser = 'root';
$spass = '';
$sbase = 'test';
?>

---connecter.php----

<?php
session_start();
$_SESSION['nom'] = 'raf';
include("connect.php");

// fonction a appeler au début de vos pages
function connectes()
{
$temps = 5;

if(mysql_connect($shost,$suser,$spass))
mysql_select_db($sbase, $connect);
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($shost,$suser,$spass))
mysql_select_db($sbase, $connect);
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();
?>

j'ai erreur ligne 11 et 69
if(mysql_connect($shost,$suser,$spass))


Warning: mysql_connect(): Access denied for user: 'ODBC@localhost' (Using password: NO) in .\connecter.php on line 11

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in .\connecter.php on line 69


pk sa marche po?
Messages postés
296
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
11 septembre 2004

Pour vérifier le programme, insérez un

echo "Voici ou c'est rendu.";

avant chaque

return

.
Afficher les 20 commentaires

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.