1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| <?php
// session_start(); // A mettre sur chaque page utilisant la session
if (!isset($_COOKIE["monCook"]))
{
// Cookie inexistant donc création du cookie et incrémentation du nbre de visiteurs
setcookie("monCook","OK",time()+600);
$fp = fopen("compteur.txt","r+");
$visiteurs=fgets($fp,10);
$visiteurs++;
fseek($fp,0);
fputs($fp,$visiteurs);
fclose($fp);
// On met à jour les hits de connexion par pays
include "php/adet1.php"; // Inclusion du fichier de connexion à la base de données
$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link)); // Connexion à MySql
// $base = mysql_select_db($base); // Sélection de la base // Utilité ?
if (!$base)
{echo 'impossible d\'ouvrir la base.';
}
else
{
// On commence par récupérer l'IP du visiteur
$dotted = $_SERVER['REMOTE_ADDR'];
//On transforme cet IP A.B.C.D en un nombre valant A * (256*256*256) + B * (256*256) + C * 256 + D
$dotted = preg_split( "/[.]+/", $dotted);
$ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]); // Nbre calculé sans les points et avec la formule
// On interroge la table:
$result = mysqli_query($link,"SELECT CODE FROM `HitsParPaysNew` WHERE `IP_FROM` <= $ip AND `IP_TO` >= $ip");
$rows = mysqli_num_rows($result);
if ($rows == 1)
{
$req = mysqli_query($link,"UPDATE `HitsParPaysNew` SET hits=hits+1 WHERE `IP_FROM` <= $ip AND `IP_TO` >= $ip");
if (!$req )
{
$message = 'Requête invalide : ' . mysqli_error() . "\n";
$message .= 'Requête complète : ' . $req ;
die($message);
}
}
// ----------------- On met aussi à jour les visiteurs connectés à l'instant t ---------------------------
// ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table. on compte le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
$retour = mysqli_query($link,'SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysqli_fetch_array($retour);
if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
// ----------------- On met à jour la table HitsParPaysNew ---------------------------
mysqli_query($link,'INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
mysqli_query($link,'UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}
// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.
// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysqli_query($link,'DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);
// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
$retour = mysqli_query($link,'SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysqli_fetch_array($retour);
}
}
else
{ $fp = fopen("compteur.txt","r+");
$visiteurs=fgets($fp,10);
}
//echo $visiteurs.' visiteurs depuis le 1er novembre 2002';
?> |
Partager