le 11/04/2006 à 00:13
Lefounard
Salut,
Bon voila un script qui comptabilise le nombre de membre et d'internaute en ligne :
Le script n'est pas personnel, car j'ai repris le comment faire de laglobule.
Je voudrais vos avis, car c'est peut-etre maladroit !
Voici la table mysql live !
voici le fichier a inclure dans les pages du site pour comptabiliser les connecter.
Je considere que mes membre ont une variable de session id stockant leur id, et j'attribut a 'nimporte quel internaute membre ou pas une variable de sessions id_connexion
Voila le code pour afficher (total des internautes DONT membres)
Resultats :
Il y a actuellement 1 internaute(s) surfant sur ce site.
Membres connecté(s) :Vince , (1 membre(s)).
rand(1,99999999); la probabilité que deux internaute se retrouve avec une meme valeur est quasi nulle ! j'ai mis un champs int 8 dans la bdd, ca suffit non ?! Peut-etre une meilleur idée pour un identifiant de connexion ?
Je tiens a remercier, celui qui a inventer le php, laglobule, bzh et sebastian pour m'avoir aider !
Voila, bon je voudrais vos avis et conseils sur des trucs que je n'ai pas pensé et qui peuvent etre source de bugs ?! sinon comment l'optimiser !
MErci de vos conseils,
Ciao,
Bon voila un script qui comptabilise le nombre de membre et d'internaute en ligne :
Le script n'est pas personnel, car j'ai repris le comment faire de laglobule.
Je voudrais vos avis, car c'est peut-etre maladroit !
Voici la table mysql live !
CREATE TABLE `site_nb_online` (
`id_connexion` int(8) NOT NULL auto_increment,
`time` bigint(16) NOT NULL default '0',
`id_membre` int(8) NOT NULL default '0',
PRIMARY KEY (`id_connexion`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=77094034 ;
voici le fichier a inclure dans les pages du site pour comptabiliser les connecter.
<?php
$tps_max_connex = 180;
$temps_actuel = date("U");
if(!isset($_SESSION['id_connexion'])) {
$_SESSION['id_connexion'] = rand(1,99999999);
$sql = 'INSERT INTO site_nb_online VALUES("'.$_SESSION['id_connexion']. '", "'.$temps_actuel.'",';
if(!isset($_SESSION['pseudo'])) $sql.='"0")';
else $sql.='"'.$_SESSION['id'].'")';
$req = mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());
}
else {
$sql = 'UPDATE site_nb_online SET time = "'.$temps_actuel.'" WHERE id_connexion= "'.$_SESSION['id_connexion'].'"';
$req = mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());
}
$heure_max = $temps_actuel - $tps_max_connex;
$sql2 = 'DELETE FROM site_nb_online where time < "'.$heure_max.'"';
$req2 = mysql_query($sql2) or die ('Erreur SQL !'.$sql2.''.mysql_error());
?>
Je considere que mes membre ont une variable de session id stockant leur id, et j'attribut a 'nimporte quel internaute membre ou pas une variable de sessions id_connexion
Voila le code pour afficher (total des internautes DONT membres)
<?php
session_start();
//votre connexion mysql
$sql = 'SELECT count(*) FROM site_nb_online';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
echo 'Il y a actuellement ' , $data[0] , ' internaute(s) surfant sur ce site.';
$sql = 'SELECT id_membre FROM site_nb_online WHERE id_membre!="0"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$i=0;
echo 'Membres connecté(s) :';
while ($data2 = mysql_fetch_array($req))
{
echo whoishe($data2['id_membre']).' , ';
$i++;
}
echo '('.$i.' membre(s)).';
mysql_free_result($req);?>
Resultats :
Il y a actuellement 1 internaute(s) surfant sur ce site.
Membres connecté(s) :Vince , (1 membre(s)).
rand(1,99999999); la probabilité que deux internaute se retrouve avec une meme valeur est quasi nulle ! j'ai mis un champs int 8 dans la bdd, ca suffit non ?! Peut-etre une meilleur idée pour un identifiant de connexion ?
Je tiens a remercier, celui qui a inventer le php, laglobule, bzh et sebastian pour m'avoir aider !
Voila, bon je voudrais vos avis et conseils sur des trucs que je n'ai pas pensé et qui peuvent etre source de bugs ?! sinon comment l'optimiser !
MErci de vos conseils,
Ciao,