Sur le script de Fredo42, pour ajouter un séparateur de millier, j'ai remplacé:
[== PHP ==]
echo $nb_visiteurs." visiteurs dont".'<br/>';
echo $nb_aujourdhui." aujourd'hui et".'<br/>';
echo $visiteuractuel." maintenant.".'<br/>';
echo $nb_requetes." pages affichées.";
par
[== PHP ==]
echo number_format($nb_visiteurs, 0, ',', ' ')." visiteurs dont:".'<br />';
echo $nb_aujourdhui." aujourd'hui,".'<br />';
echo $visiteuractuel." maintenant.".'<br />';
echo number_format($nb_requetes, 0, ',', ' ')." pages affichées.".'';
1000000 pages affichées.
devient
1 000 000 pages affichées.
Cordialement.
]]>Merci au technicien SAV. Problème corrigé et fonctionnel.
Par contre, c'est vrai que si le mois commence un mercredi ou un jeudi, le nombre de visites semaine est supérieur au nombre de visites mensuelles. Ca fait un peu bizarre.
Y'a-t-il une solution ?
Enfin l'essentiel est que ça fonctionne.
C'est peut-être bizarre, mais c'est normal. Une semaine commence toujours un lundi, et un mois commence toujours le 1er!!
C'est uniquement le nombre de visiteurs pour la 1ère semaine du mois qui sera supérieur aux visites mensuelles puisque le compteur de la semaine est remis à 0 le lundi.
Ta réflexion m'a donné une petite idée pour améliorer le script, il y aura donc une V2, mais faut d'abord que je termine mon script de news et celui du livre d'or!!
Sur l'autre site, j'ai des indication concernant les exams de mes étudiants, donc le compteur monte pas mal ces temps-ci. Il est peut-être plus fiable pour ton étude de la fonctionnalité du compteur.
]]><?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);
}
$argument_visitestotal = 'visitestotal';
$argument_visitessemaine = 'visitessemaine';
$argument_visitesmois = 'visitesmois';
$argument_visitesan = 'visitesan';
$ip = $_SERVER['REMOTE_ADDR'];
$time = date('YmdHis');
/*
* 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_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
unset($donnees[$cle]);
}
}
/*
* 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.
*/
if( !$donnees[$ip] ) {
$donnees[$argument_visitestotal]++;
if((substr($time,0,4)) == (substr($valeur,0,4)) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitesan]++;
} else { $donnees[$argument_visitesan]=1;}
if((substr($time,4,2)) == (substr($valeur,4,2)) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitesmois]++;
} else { $donnees[$argument_visitesmois]=1;}
if(date('W',mktime ((substr($time,8,2)),(substr($time,10,2)),(substr($time,12,2)),(substr($time,4,2)),(substr($time,6,2)),(substr($time,0,4)))) == (date('W',mktime ((substr($valeur,8,2)),(substr($valeur,10,2)),(substr($valeur,12,2)),(substr($valeur,4,2)),(substr($valeur,6,2)),(substr($valeur,0,4))))) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitessemaine]++;
} else { $donnees[$argument_visitessemaine]=1;}
$donnees[$ip] = $time;
}
/*
* Si l'ip est déjà enregistrée,
* on met à jour la date et l'heure.
*/
else {
$donnees[$ip] = $time;
}
/*
* On effectue un petit report de variable
* pour une utilisation ultérieur plus aisée.
*/
$nb_visiteurstotal = $donnees[$argument_visitestotal];
$nb_visiteursan = $donnees[$argument_visitesan];
$nb_visiteursmois = $donnees[$argument_visitesmois];
$nb_visiteurssemaine = $donnees[$argument_visitessemaine];
$nb_aujourdhui = count($donnees)-4;
/*
* 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 "Actuellement en ligne : ".$visiteuractuel.'<br/>'; //à supprimer si pas besoin du nombre de connecté */
echo '<table>'."\n";
echo '<tr>';
echo '<td width="115px">Aujourd\'hui :</td>';
echo '<td width="60px" align="right">'.$nb_aujourdhui.'</td>';
echo '</tr>'."\n";
echo '<tr>';
echo '<td width="115px">Cette semaine :</td>';
echo '<td width="60px" align="right">'.$nb_visiteurssemaine.'</td>';
echo '</tr>'."\n";
echo '<tr>';
echo '<td width="115px">Ce mois :</td>';
echo '<td width="60px" align="right">'.$nb_visiteursmois.'</td>';
echo '</tr>'."\n";
echo '<tr>';
echo '<td width="115px">Cette année :</td>';
echo '<td width="60px" align="right">'.$nb_visiteursmois.'</td>';
echo '</tr>'."\n";
echo '<tr>';
echo '<td width="115px">Total des visites :</td>';
echo '<td width="60px" align="right">'.$nb_visiteurstotal.'</td>';
echo '</tr>'."\n";
echo '</table>'."\n";
?>
fais un copier/coller du code, je vais regarder
]]>aucune modification aucune maj. Absolument rien.
Il est vrai que je constate que le nombre à la semaine est supérieur au nombre de visites au mois.
Que faire ?
]]>Edit: Idem sur http://satanas.templates.free.fr/
]]>date('W', mktime(0, 0, 0, substr($valeur,4,2), substr($valeur,6,2), substr($valeur,0,4)))
(et oui, le relou est de retour ... ;p)
]]>bon, j'ai mis à jour : on va voir comment tout cet ensemble se comporte.
Je te tiens au courant.
Bonne journée à toi
]]><?php
/*
* Si le fichier où l'on stock,
* les données n'existe pas encore
* on le crée.
*/
$fichier = '.htcompteurtest';
if( !file_exists($fichier) ) {
$fp = fopen($fichier, "w");
fwrite($fp, serialize(array()));
fclose($fp);
}
$argument_visitestotal = 'visitestotal';
$argument_visitessemaine = 'visitessemaine';
$argument_visitesmois = 'visitesmois';
$argument_visitesan = 'visitesan';
$ip = $_SERVER['REMOTE_ADDR'];
$time = date('YmdHis');
/*
* 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_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
unset($donnees[$cle]);
}
}
/*
* 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.
*/
if( !$donnees[$ip] ) {
$donnees[$argument_visitestotal]++;
if((substr($time,0,4)) == (substr($valeur,0,4)) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitesan]++;
} else { $donnees[$argument_visitesan]=1;}
if((substr($time,4,2)) == (substr($valeur,4,2)) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitesmois]++;
} else { $donnees[$argument_visitesmois]=1;}
if(date('W',mktime ((substr($time,8,2)),(substr($time,10,2)),(substr($time,12,2)),(substr($time,4,2)),(substr($time,6,2)),(substr($time,0,4)))) == (date('W',mktime ((substr($valeur,8,2)),(substr($valeur,10,2)),(substr($valeur,12,2)),(substr($valeur,4,2)),(substr($valeur,6,2)),(substr($valeur,0,4))))) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitessemaine]++;
} else { $donnees[$argument_visitessemaine]=1;}
$donnees[$ip] = $time;
}
/*
* Si l'ip est déjà enregistrée,
* on met à jour la date et l'heure.
*/
else {
$donnees[$ip] = $time;
}
/*
* On effectue un petit report de variable
* pour une utilisation ultérieur plus aisée.
*/
$nb_visiteurstotal = $donnees[$argument_visitestotal];
$nb_visiteursan = $donnees[$argument_visitesan];
$nb_visiteursmois = $donnees[$argument_visitesmois];
$nb_visiteurssemaine = $donnees[$argument_visitessemaine];
$nb_aujourdhui = count($donnees)-4;
/*
* 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 "visites totales: ".$nb_visiteurstotal.'<br/>';
echo "cette année: ".$nb_visiteursan.'<br>';
echo "ce mois: ".$nb_visiteursmois.'<br>';
echo "cette semaine: ".$nb_visiteurssemaine.'<br>';
echo "aujourd'hui: ".$nb_aujourdhui.'<br/>';
?>
Ben Fredo, grand respect et très admiratif de ton travail.
Un grand merci à toi. Maintenant, on passe à la phase de test grandeur nature. A voir comment ça va fonctionner.
Enfin, en attendant c'est en ligne et je vous invite à passer simplement pour faire monter le compteur : Mon petit zite qui a du chien comme dirait davyk !
Et concernant le format de la date, ceci n'a pas d'incidences sur le compteur. L'essentiel est que çà fonctionne. Je ne compte pas récupérer la date dans le bloc "Visites". Je l'ai déjà en entête du site.
Bonne soirée à vous tous et passez de bonnes fêtes.
]]>