exec('CREATE DATABASE IF NOT EXISTS ' . $db_name . ';'); unset($Db); // connexion $Db = new PDO('mysql:host=localhost;dbname=ordipolo;charset=utf8', 'root', 'qsdfgh'); // create tables $Db->query('CREATE TABLE IF NOT EXISTS visites (id INT PRIMARY KEY AUTO_INCREMENT, ip VARCHAR(30), hote VARCHAR(255), user_agent TEXT, date DATE, nb_pages INT);'); //$Db->query('CREATE TABLE IF NOT EXISTS compteur (visiteurs INT, bots INT);'); $Db->query('CREATE TABLE IF NOT EXISTS compteur (visiteurs INT);'); // initialiser table compteur avec des 0 si la table est vide if(!$Db->query('SELECT * FROM compteur')->fetch()) { $Db->query('INSERT INTO `compteur` VALUES (0);'); } } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } // variables $ip = $_SERVER['REMOTE_ADDR']; // IP $hote = gethostbyaddr($ip); // nom d'hôte si possible date_default_timezone_set ('Europe/Paris'); // configure le décalage horaire sur Europe/Paris $user = $_SERVER['HTTP_USER_AGENT']; // infos sur le client (navigateur, OS), attention aux menteurs $user = mb_strtolower($user); // minuscules pour strpos() $date = date('Y-m-d'); // date formatée // script recherchant le pays // la commande whois nécessite le paquet whois (debian) ou bind-tools (archlinux) // on récupère la ligne (ou les lignes) indiquant le pays avec grep (-i sert à ignorer la casse) $country = strtolower(shell_exec("whois " . $ip . " | grep -i country | cut -d: -f2 | sed -e ' s/\ //g'")); function incrementerTableCompteur($Db, $field) { $nombre = $Db->query('SELECT ' . $field . ' FROM compteur')->fetch(); if(!$nombre){$nombre = [0];} // tableau d'une seule case $nombre[0] += 1; $requete = $Db->prepare('UPDATE compteur SET ' . $field . ' = :nombre'); $requete->execute(array('nombre' => $nombre[0])); } // MAJ de la base if(isset($_SESSION['id_visiteur'])) // pages suivantes { // lecture (tester si l'entrée qui l'id transmis existe toujours) // écriture $requete = $Db->prepare("UPDATE visites SET nb_pages = nb_pages + 1 WHERE id = :id"); $requete->execute(array( ':id' => $_SESSION['id_visiteur'])); } else // première page visitée dans la session { $requete = $Db->prepare(" INSERT INTO visites (ip, hote, user_agent, date, nb_pages) VALUES (:ip, :hote, :user_agent, :date, 1)"); // si la visite est déjà enregistrée, ajoute +1 au nombre de pages $requete->execute(array( ':ip' => $ip, ':hote' => $hote, ':user_agent' => $user, ':date' => $date)); $_SESSION['id_visiteur'] = $Db->lastInsertId(); // compte visiteurs + 1 incrementerTableCompteur($Db, 'visiteurs'); } echo "visite enregistrée!"; // retour console debug ?>