Bonjour,
J'essai de faire un script de statistique de membre en ligne et de visiteur en ligne... pour les membres j'ai ceci:
<?php
if ( $d = opendir("/home/0/0/monsite.com/www/sessions")) {
$count = 0;
$session_timeout = 60;
while ( false !== ( $file = readdir( $d ) ) ) {
if ( $file != '.' && $file != '..' ) {
if ( time()- fileatime("/home/0/0/monsite.com/www/sessions" . '/' . $file) < $session_timeout ) {
$count++;
}
}
}
}
echo $count;
?>
Ok il fonctionne!
Pour les visiteurs c'est stocké dans la BDD comme ceci:
<?php
require ('config.php');
mysql_connect("$host", "$user", "$pass");
mysql_select_db("$bdd");
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteur_en_ligne WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);
if ($donnees['nbre_entrees'] == 0)
{
mysql_query('INSERT INTO visiteur_en_ligne VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else
{
mysql_query('UPDATE visiteur_en_ligne SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}
$timestamp_1min = time() - 60;
mysql_query('DELETE FROM visiteur_en_ligne WHERE timestamp < ' . $timestamp_1min);
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteur_en_ligne');
$donnees = mysql_fetch_array($retour);
$total = $donnees['nbre_entrees'];
mysql_close();
require ('includes/statistiques/utilisateur_en_ligne.php');
$visiteur = $total - $count;
echo $visiteur;
?>
A noter que si je fais un echo de $total le nombre de visiteur est correct.
Mais en faisant la soustraction j'ai comme résultat "01" et lorsque j'ouvre une session j'ai "10" je comprend pas =/