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
|
<?PHP
session_start();
setcookie(time() + 24*3600, null, null, false, true);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text.html; charset=utf-8">
<title>Compteur de visites</title>
</head>
<body>
<?PHP
try
{
$_SERVER["REMOTE_ADDR"]; // Je récupère l'adresse IP du visiteur
$ip = $_SERVER["REMOTE_ADDR"]; // J'assigne l'adresse IP à une variable
echo 'Votre adresse IP est : ' . $ip . '.<br />';
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=institut', 'root', 'root', $pdo_options); // Je me connecte à la BDD
$req = $bdd->query('SELECT * FROM ip_visiteur'); // Je récupère les enregistrements de la BDD
while ($donnees = $req->fetch()) // Je lis les données de la table
{
if ($_SESSION['visite'] != 1) // Si aucune session n'est active
{
if ($ip == $donnees['adre_ip']) // Si l'IP du visiteur est déjà présente dans la BDD
{
if ($donnees['date_visite'] >= time() - 24*3600) // Si elle date de plus de 24h
{
$req = $bdd->exec('UPDATE compteur SET nbre_visites = nbre_visites + 1'); // J'incrémente le nombre de visites dans la BDD
$req = $bdd->exec('UPDATE ip_visiteur SET date_visite = CURDATE()'); // Je mets à jour la date de sa dernière visite
$_SESSION['visite'] = 1; // J'indique qu'une session est active
}
}
else // Si l'adresse IP n'est pas dans la BDD
{
$req = $bdd->prepare('INSERT INTO ip_visiteur(adre_ip, date_visite) VALUES(:adre_ip, CURDATE())'); // Je l'ajoute à la BDD
$req->execute(array('adre_ip' => $ip));
$_SESSION['visite'] = 1;
}
}
}
$recup = $bdd->query('SELECT nbre_visites FROM compteur'); // Je récupère le nombre de visites
while ($donnees = $recup->fetch())
{
echo 'Nombre de visites : ' . $donnees['nbre_visites'] . '.<br />'; // Et je l'affiche
if($donnees['nbre_visites'] == 500) // Si le nombre de visite atteint 500
{
echo("Vous êtes le 500<sup>e</sup> visiteur. Contactez-nous pour obtenir votre lot.<br />"); // Le visiteur gagne un lot
}
}
}
catch(Exception $e)
{
die('Erreur : ' . $e->getMessage()); // S'il y a une erreur
}
?>
</body>
</html> |
Partager