Le nb visiteur par l'addresse ip n'increment pas

Résolu/Fermé
Meriem - Modifié le 19 avril 2018 à 12:22
 Meriem - 19 avril 2018 à 15:04
Salam

je veux programmé le nombre de visiteur par une addresse ip j'ai trouvé ça dans le net


<?php

/*
* Si le fichier où l'on stock,
* les données n'existe pas encore
* on le crée.
*/
$fichier = '.htcompteur';
if( !file_exists($fichier) ) {
$fp = fopen($fichier, "w");
fwrite($fp, serialize(array()));
fclose($fp);
}

/*
* Définition de variables
* nécessaire au compteur :
* - deux termes constants,
* - l'ip du visiteur,
* - la date et l'heure.
*/
$argument_visites = 'visites';
$argument_requêtes = 'requêtes';
 if (isset($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } // IP derrière un proxy 
 elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } // Sinon : IP normale
  else { $ip = $_SERVER['REMOTE_ADDR']; }  // Afficher l'adresse IP echo 'Adresse IP réelle du visiteur : ' .get_ip(); 

$time = date('YmdGis');

/*
* Récupération des données du
* compteur précédemment stockées.
*/
$lignes = file($fichier);
$donnees = unserialize($lignes[0]);

/*
* Pour chaque clés du tableau de données
* qui ne soit pas attribuée aux visite et aux requêtes
* si la valeur correspond à une date antérieur
* au même jour, on supprime l'ip du visiteur.
*/
foreach( $donnees as $cle => $valeur )
{
if( substr($valeur, 0, 8) != substr($time, 0, 8) &&
$cle != $argument_visites &&
$cle != $argument_requêtes ) {
unset($donnees[$cle]);
}
}
/*
* On incrémente ( ajoute +1 ) la valeur
* du nombre de requêtes.
* Si l'ip n'est pas encore enregistrée,
* on incrémente la valeur du nombre de visites
* et on ajoute l'ip dans le tableau accompagné
* de la date et de l'heure de l'exécution.
*/
$donnees[$argument_requêtes]++;
if( !$donnees[$ip] ) {
$donnees[$argument_visites]++;
$donnees[$ip] = $time;
}

/*
* On effectue un petit report de variable
* pour une utilisation ultérieur plus aisée.
*/
$nb_visiteurs = $donnees[$argument_visites];
$nb_aujourdhui = count($donnees)-2;
$nb_requêtes = $donnees[$argument_requêtes];

/*
* On stock le tableau dans le fichier de données
* en écrasant sa valeur précédente.
*/
$fp = fopen($fichier,"w");
fwrite($fp, serialize($donnees));
fclose($fp);

/*
* On affiche les résultats du compteur.
*/
echo $nb_visiteurs." visiteurs dont ";
echo $nb_aujourdhui." aujourd'hui, ";
echo $nb_requêtes." pages affichées ";

?>

et le fichier.htcompteur
a:3:{s:8:"requêtes";i:13;s:7:"visites";i:1;s:9:"127.0.0.1";s:13:"2018041885448";}
mais ça ne fonctionne pas le 1 n'incremente pas en ligne j'ai esseyer par 2 @ip défférente mais aucun résultat
A voir également:

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
19 avril 2018 à 13:43
Bonjour,

Première chose ... retire les accents sur le nom de tes variables
$argument_requêtes

devrait être
$argument_requetes


Ensuite, applique ceci : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

0
Merci je copie le code suivant début du fichier php error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
et donner cet error Notice: Undefined index: 198.195.49.192 in nbv.php on line 21 Warning: fopen(.htcompteur): failed to open stream: Permission denied in ... comment régler ce problème
0
Merci beaucoup j'ai résolu mon probème par le autoriser chmod 777 du .htcompteur
0