Non connecté. Connectez-vous ou devenez membre (gratuit).Recherche rapide :     
Aller à :  

Messages | Nouvelle branche de discussion | Répondre | Rechercher
Un live counter en php
Posté par joker le 20/08/2004 07:48:51
Souvent sur les sites, on voit un message du type : "5 personnes en lignes". Mais comment ca marche ?

C'est tres simple. Pour commencer, que faut-il ?
1)Un hebergeur qui prend en compte le php et une base mySQL
2)Un peu de jugeotte pour modifier ce script comme bon vous semble!
3)Bah c'est tout!!!


Maintenant, installation

1)Vous connectez sur votre server mysql
2)Creer la table suivante :
#Debut de la table
CREATE TABLE live (
id int(10) NOT NULL auto_increment,
ip varchar(15) NOT NULL default '',
date int(14) NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE KEY id (id),
KEY id_2 (id)
) TYPE=MyISAM;
#Fin de la table
3)Modifier les variables de connections dans le fichier "connect.php"


voici le code et des commentaires du script "connect.php"

<?
//Variables a modifier
$host = "localhost";
$user = "_votre_login";
$pass = "votre_pass";
$base = "votre_base";
//fin
include("mySQL-Config-Secret.PHP";
$db = @mysql_connect("$host", "$user", "$pass" OR DIE("Probleme de mySQL";
@mysql_select_db("$base",$db);

$duree=300;
//duree moyenne du temps resté sur une page en secondes

$limite = time() + $duree;
//duree a partir de laquelle un utilisateur est ignoré

$connect1 = mysql_query("DELETE FROM live WHERE ip='$REMOTE_ADDR' OR date<".time());
//on supprime les lignes avec la meme ip ou avec la date limite depasée

$connect2 = mysql_query("INSERT INTO live VALUES ('', '$REMOTE_ADDR', '$limite';";
//On inscrit l'utilisateur actuel

$result = mysql_query("SELECT * FROM live";
$row = MYSQL_NUM_ROWS($result);
//on compte le nombre de lignes dans la base = nombre de personne en ligne!!

//debut de la mise en page pour eviter les fautes du type : vous etes 1 personnes sur le site!!
if ($row==0){echo "Aucune personne n'est sur le site.";}//cas impossible en theorie
elseif ($row==1){echo "Vous etes seul(e) sur le site.";}//1 personne
elseif ($row>1){echo "Vous etes $row sur le site et aucun n'est membre.";}//plus
?>

Le mot de la fin

Voila, c'est aussi simple que ca. Maintenant, si vous fait un site en php, vous pourrez voir le nombre de personne sur votre site en temps reel!!!
Biensur, ce script peut permettre d'autres choses, comme des stats et autres!!!!
Une version de ce script ameliorée est visible sur
www.carafamily.fr.fm

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par joker le 20/08/2004 07:48:51
Je veux bien qu'on me mette des mauvaises notes si ca vous fait plaisir mais au moins, expliquez moi pourquoi dans les commentaire!!!!!!!!

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par - pierre - le 20/08/2004 07:48:51
C'est ton premier article ça se voit lol

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par colargol le 20/08/2004 07:48:51
cherche pas à comprendre pour avoir 1 article noté excellent fo écrire 1 truc qui parle de cul.
à savoir que la variable d'environnement $REMOTE_ADDR passe pas toujours bien sous linux : j'ai testé et en local ça me donne pas 127.0.0.1 mais 127. à vérifier.
sinon c'est pratique ce script même si le plus marrant en php c'est de programmer soi même le script

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par webmaster le 20/08/2004 07:48:51
fait un SELECT COUNT serait plus propre que ta chose qui fait un SELECT * (beurk)

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par guillaume.godart le 20/08/2004 07:48:51
un SELECT COUNT(id) ne serait il pas même encore plus léger ?

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par julgates le 20/08/2004 07:48:51
une petite version que je jugerai un peu mieux selon moi :
créer la table :

CREATE TABLE nbconnecte (
IP char(15) NOT NULL default '',
HeureLimite timestamp(14) NOT NULL,
PRIMARY KEY (IP)
)

et ceci a mettre après une connection sql bien sur

mysql_query("DELETE FROM nbconnecte WHERE HeureLimite < now()";
$req=mysql_query("SELECT * FROM nbconnecte WHERE IP='$REMOTE_ADDR' LIMIT 0,1";
$res = mysql_numrows($req);
if($res != 0) {
mysql_query("UPDATE nbconnecte SET HeureLimite=now()+300 WHERE IP='$REMOTE_ADDR' limit 1";
} else {
mysql_query("INSERT INTO nbconnecte (IP, HeureLimite) VALUES ('$REMOTE_ADDR', now()+300)";
}
$req = mysql_query("SELECT count FROM nbconnecte";
list($count) = mysql_fetch_row($req);
$online = "$count connecté";
if ($count>1) $online .= "s";

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par julgates le 20/08/2004 07:48:51
bien sur echo $online après

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par colargol le 20/08/2004 07:48:51
je l'aurais plutot fait avec des sessions et 1 id (évitez les bugs sous UNIX comme dit + bas)

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par fhl le 20/08/2004 07:48:51
cool meme le webmaster du site donne des modifs.
Mais je pense pas que ce soit integrable a une site nuked clan (domage car le module "qui est en ligne" donne pas ce qu'il est cencer faire)

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par julgates le 20/08/2004 07:48:51
regardez moi ce compteur de rêve :

$laps=300;
$repstats="../online";
$now=time();
$fichiero="$repstats/$REMOTE_ADDR.txt";
$fp= fopen("$fichiero","w";
fputs($fp,"";
fclose($fp);
$cpt=0;
$handle=opendir("$repstats";
whi le ($tmp = readdir($handle)) {
if($tmp!="." && $tmp!=".." {
if(filemtime("$repstats/$tmp"+$laps<$now) {
unlink("$repstats/$tmp";
} else {
$cpt++;
}
}
}
closedir($handle);
clearstatcache();

un simple dossier, un fichier par connecté, pas besoin de regarder si le fichier existe puiske il se créera tout seul le cas échéant et c'est sa dernière date de modif qui compte !
pas de sql rien
juste un dossier ou stocker les fichiers temporaires !

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par joker le 20/08/2004 07:48:51
possible pour ton compteur, c sur qu'il est pas mal mais avec le mien, sachant qu'on utilise un base de données, on peu en plus de mettre l'ip de la personn et de compter le nombre de connect, faire toute une serie de stats pour les visites du site (heure de pointe par exemple) et aussi entrer dans la table des infos sur la personne (exemple dans une rubrique de membres, pour savoir si la personne connect est membre ou pas!!)

Rapport d'abus     Modifier     Supprimer    
Re: Un live counter en php
Posté par adadas le 20/08/2004 07:48:51
si ya pas de BDD, on peut le faire avec un fichier .php
1. on y place une variable ($nb_connectés, par exemple) que l'on increment à chaques connexion sur la page, et que l'on décrémente à chaques sorties
2. on utilise le meme processus pour placer des IPs dans un tableau, si l'ip existe dans le tableau, on incremente po la variable

Rapport d'abus     Modifier     Supprimer    
La participation aux forums est réservée aux membres du site.
Devenir membre (30 secondes et gratuit)    Mot de passe perdu ?
Nom d'utilisateur :
Mot de passe :
  Devenir membre (30 secondes et gratuit)
Devenir membre (30 secondes et gratuit)    Mot de passe perdu ?
Recevoir la lettre d'information :
Connectés :
    0 membres et 395 visiteurs

tubededentifrice.com, ...    CNIL: 752143.     |]  ▲