This page has been robot translated, sorry for typos if any. Original content here.
Statistiques sur le site. Nous écrivons le script de compteur de visite.
Introduction
Certainement beaucoup d'entre vous visitant divers sites, faites attention aux compteurs qui sont sur les sites. Les statistiques nous montrent combien de personnes ont visité la ressource, combien de pages ont été expédiées, combien de personnes se trouvent sur le site en ce moment et ainsi de suite. Tout cela est un outil très utile, car car cela permet de connaître le propriétaire du site, la pertinence et l'évaluation de sa ressource. Plus la ressource est intéressante et utile, plus elle a de visites.
À l'heure actuelle, il existe un grand nombre de services qui nous offrent de nombreux outils pour la collecte de statistiques et de données, ainsi que leur analyse. Tous sont très professionnels dans l'exécution de leurs tâches, mais tout a commencé avec un compteur auto-écrit que vous pouvez rencontrer maintenant.
Si vous voulez comprendre comment les utilisateurs sont enregistrés, j'ai préparé une leçon dans laquelle je vais écrire un compteur pour les visites sur site, expliquer comment installer le compteur sur le site et utiliser les données à mes propres fins.
Détails
Afin de nous écrire un simple compteur, nous devrons apprendre quelques nouvelles fonctions.
* Travailler avec des fichiers (créer / lire / écrire); * Travailler avec des sessions; * Travailler avec des fonctions pour créer des images; * Connecter le compteur;
Nous allons considérer trois options:
* Hits du compteur de texte; * Compteur de texte des visiteurs; * Compteur graphique des visiteurs;
Le commencement
Créez un dossier dans le dossier www, le compteur de dossiers. Ce sera l'endroit pour stocker les statistiques et le fichier de script. Ensuite, je vais vous donner plusieurs options pour les compteurs.
Option 1
Pour utiliser le compteur, nous devons créer une page html, dans laquelle nous allons construire le script. Que ce soit une page simple qui contient des informations.
Sauvegardez cette page dans le dossier www et passez à la programmation du compteur.
counter.php
Pour enregistrer les données reçues, nous devons l'écrire quelque part, que ce soit un simple fichier texte nommé stat.txt.
‹?php $url = "counter/stat.txt";
La variable $ url est assignée à l'adresse du fichier. C'est le seul élément de configuration dans lequel nous définissons les données requises, puis le script se compose des expressions logiques else else et des fonctions de gestion de fichiers
Cet extrait de code est chargé de vérifier la présence du fichier, j'ai écrit tout le cours des actions logiques dans les commentaires.
if(!file_exists($url)) { //Проверка на существование файла. //Если файла не существует, $count = 0; $handle = fopen($url,"a");//создаем его, fwrite($handle,$count);// и записываем нулевое значение fclose($handle);//Закрываем файл }
Ensuite, nous décrivons la condition lorsque le fichier est créé.
else { //Если файл существует, то работаем с ним $handle = fopen($url,"a+"); //Открываем его $count = fread($handle,filesize($url)); //Читаем данные и присваеваем их переменной $count fclose($handle); //Закрываем $count++;//Добавляем одно посещение к полученному выше $handle = fopen($url,"w"); // Открываем файл, и урезаем его до нулевой длины fwrite($handle,$count); //Записываем переменную $count fclose($handle); //Закрываем }
Dans ce fragment le script du compteur de visite est décrit, regardez attentivement, dans le premier fragment, nous ouvrons le fichier afin de l'ouvrir et de connaître le nombre de visites. Ensuite, nous augmentons la valeur de 1 unité ($ count ++;) et écrivons cette valeur dans notre fichier.
À la fin du fichier, nous imprimons des statistiques en utilisant l'instruction echo
echo "количество просмотров: $count ";
Nous avons considéré le type de compteur le plus simple, mais croyez-moi, parfois c'est plus difficile et pas obligatoire, par exemple, nous devons connaître le nombre de lectures de pages (articles, annonces) à l'intérieur du site. Cela indique généralement le matériel le plus intéressant pour les visiteurs du site. En outre, pour que ce compteur fonctionne, ouvrez notre fichier index.php et ajoutez une ligne à l'étiquette
* Installation facile * Ne nécessite pas de base de données
[-] Contre de ce compteur:
* Se terminer facilement avec un simple rafraîchissement de la page (F5). * Si plusieurs personnes se tournent vers le script en même temps, une erreur se produira. le fichier est ouvert et utilisé par quelqu'un d'autre, vous devez donc ajouter le script. * Si le fichier de données est supprimé, vous perdrez les statistiques accumulées
Option 2
Le compteur est seulement pour les visiteurs. Qu'est-ce que cela signifie? Visiteurs - c'est le nombre d'utilisateurs qui ont visité votre ressource, par exemple pour un jour, et même si une personne met à jour la page, la valeur des visites ne sera pas ajoutée.
Pour créer un tel compteur, nous devons apprendre à travailler avec des sessions. Quel est le point? Si une personne visite votre site pour la première fois, une session est créée, qui fonctionne jusqu'à ce que la personne ferme le navigateur, c'est-à-dire lors des rechargements de page suivants (F5) ou des passages sur le site, nous vérifierons si la session a été créée. Si la session existe, l'utilisateur ne sera pas pris en compte.
Cette option est légèrement améliorée par rapport à la première option.
Faites attention au début du fichier, la fonction session_start () initialise la session.
counter.php
Dans ce fragment, en comparaison avec le premier, nous laissons tout inchangé
<? php
$ url = "counter / stat.txt";
if (! file_exists ($ url)) {
// Si le fichier n'existe pas, créez-le et écrivez une valeur nulle
$ count = 0;
$ handle = fopen ($ url, "a");
fwrite ($ handle, $ count);
fclose ($ handle);
}
Ici aussi, il suffit de lire le fichier et d'obtenir le nombre de visites.
autre {
// Si le fichier existe, nous travaillons avec
$ handle = fopen ($ url, "a +"); // Ouvre le
$ count = fread ($ handle, taille du fichier ($ url)); // Lit les données et les assigne à la variable $ count
fclose ($ handle);
Nous créons une condition si la session est absente, cela signifie que la personne visite la page pour la première fois, donc nous assignons $ _SESSION ['count'] à une valeur vérifiée au début de la condition, puis ajoutons $ 1 à la variable $ count et l'écrivons à fichier, et pour le début nous verrouillons l'accès, nous faisons un enregistrement et nous ouvrons l'accès.Ceci est nécessaire pour qu'au moment de la référence de plusieurs visiteurs au script il n'y avait pas d'erreurs.
if (! isset ($ _ SESSION ['count'])) {// S'il n'y a pas de session
$ _SESSION ['count'] = 1; // Crée le
$ count ++; // Ajouter un à la variable
$ handle = fopen ($ url, "w");
if (flock ($ handle, LOCK_EX)) {
fwrite ($ handle, $ count); // l'écris dans un fichier
flock ($ handle, LOCK_UN); // déverrouille le fichier
} else {
écho "Répéter plus tard";
}
fclose ($ handle);
}
}
// Affiche le nombre de vues.
echo "Vues: $ count";
?>
Maintenant, j'explique pourquoi lorsque vous appuyez sur F5, vous n'ajoutez pas de visite, puisque lorsque nous créons une session, en vérifiant if (! Isset ($ _ SESSION ['count']) l'expression retournera FALSE, donc rien ne sera ajouté et écrit .
[+] Plus:
* Installation facile * Ne nécessite pas de base de données * Ne pas monter l'actualisation de la page * Lorsque plusieurs personnes accèdent au script en même temps, il n'y a pas d'erreur.
[-] Contre de ce compteur:
* Si le fichier de données est supprimé, vous perdrez les statistiques accumulées
Bonus
Dans cette version, nous allons regarder un script qui va construire une image graphique qui affichera le nombre de visiteurs. Pour cela nous avons besoin d'un substrat pour notre compteur, il devrait s'agir d'une image au format jpeg, vous pouvez le prendre pour le tester.
Ensuite, nous devons finaliser la deuxième option, et ajouter un autre fichier qui sera responsable de la construction de l'image.
counter.php - Voici un ensemble de fonctions pour travailler avec des images
<? php
// Substrat pour le compteur
$ im = ImageCreateFromJpeg ("bg.jpg");
// Couleur du texte
$ black = imagecolorallocate ($ im, 255,255,255);
// Dessiner le texte
imagestring ($ im, 1,8,4, $ _ GET ['s'], $ noir);
En-tête ("Content-type: image / jpeg");
// Image de sortie
ImageJpeg ($ im);
// Détruit l'image pour que la mémoire ne soit pas bouchée
imagedestroy ($ im);
?>
Toutes ces trois options seront sûrement utiles à l'avenir.
[+] Plus:
* Installation facile * Ne nécessite pas de base de données * Ne pas monter l'actualisation de la page * Lorsque plusieurs personnes accèdent au script en même temps, il n'y a pas d'erreur. * Belle apparence personnalisable.
[-] Contre de ce compteur:
* Si le fichier avec les données stat.txt est supprimé, vous perdrez les statistiques accumulées
Conclusion
Toutes les options décrites peuvent être facilement appliquées dans la pratique, afin de sortir le compteur, il suffit de mettre le code <? Php @include (counter.php);?> au bon endroit
UPGRADE Counter - Compteurs graphiques hits et visites.
Détails
Pour modifier le compteur, nous devons maîtriser:
* Travailler avec la fonction setcookie () et le superglobal $ _COOKIE; * Tableaux en PHP; * Fonctions de construction d'image en PHP; * Travailler avec des fichiers et des bases de données MySQL.
Option 1. Compteur sur les fichiers
Le compteur entier sera composé de plusieurs fichiers:
* index.php - la page où le compteur est appelé * counter.php - script avec des opérations logiques et des fonctions de lecture / écriture de données * img.php - script de création d'image * stat.txt - fichier contenant des statistiques
index.php
Un fichier standard contenant le code html, et reliant le script du compteur
Aussi dans ce fichier tout en haut de la page, avant les tags et vous devez définir le cookie (cookies).
Le premier attribut de la fonction est le nom du cookie, le second attribut est la valeur attribuée à ce nom, c'est-à-dire Si vous exécutez echo $ _COOKIE ['freshcoder'], le navigateur affiche le nombre de mots Le troisième attribut définit le temps de fonctionnement du cookie, c'est-à-dire Si une personne arrive à 10 heures, nous devons placer un cookie pendant 14 heures. Le temps d'action est spécifié en secondes.
Ce script a subi quelques changements. En tant que protection contre la triche, la condition de vérification de la présence de cookies côté utilisateur est utilisée.
Par exemple, une personne est venue sur le site à 10 heures du matin, nous devons ajouter une visite et laisser des cookies dans le navigateur de cette personne, qui sera valide jusqu'à 0.00 heures de la journée en cours.
La logique du script est simple, s'il n'y a pas de cookies pour l'utilisateur, nous enroulons le compteur par un et écrivons la valeur dans un fichier, sinon nous ajoutons un hit.
<? php
$ url = "counter / stat.txt";
if (! file_exists ($ url)) {
// Si le fichier n'existe pas, créez-le et écrivez une valeur nulle
$ count = "0 :: 0";
$ handle = fopen ($ url, "a");
fwrite ($ handle, $ count);
fclose ($ handle);
}
autre {
// Si le fichier existe, nous travaillons avec
$ data = fichier ($ url); // Ouvre-le
liste ($ user, $ hit) = explode ("::", $ data [0]); // Divise le tableau en variables
if (! $ _ COOKIE ['freshcoder']) {$ utilisateur ++; $ hit ++;}
else {$ hit ++;}
$ handle = fopen ($ url, "w"); // Ouvre le fichier
$ count = $ utilisateur. "::". $ hit; // Forme la chaîne
if (flock ($ handle, LOCK_EX)) {// Verrouille le fichier
fwrite ($ handle, $ count); // l'écris dans un fichier
flock ($ handle, LOCK_UN); // déverrouille le fichier
} else {
écho "Répéter plus tard";
}
fclose ($ handle);
}
// Affiche le nombre de vues.
echo '<img src = "img.php? u ='. $ utilisateur. '& h ='. $ hit. '" alt = "stat" largeur = "80" hauteur = "30" border = "0" /> ';
?>
img.php
Ce script a subi des changements importants. Parce que function imagestring (), lors de la construction de la légende pour l'origine utilise le coin supérieur gauche, puis avec le temps que la longueur de la chaîne de chiffres augmente, nous aurons un problème - certains d'entre eux seront vylazit pour l'image. Pour ce faire, nous écrivons des conditions simples qui obtiennent les données, les comparons et appellent la fonction imagestring () avec les coordonnées modifiées.
Toujours dans le script, nous ajoutons la deuxième ligne pour construire l'inscription. Ce script reçoit des données en utilisant le paramètre GET, donc
nous allons extraire les données de la superglobale $ _GET.
img.php? u = '. $ user.' & h = '. $ hit.' "
dans cette ligne, nous avons mis $ _GET ['u'] à $ user, et $ _GET ['h'] to $ hit . C'est un moyen très simple de donner des paramètres à un script. Mais cette méthode n'est pas recommandée pour transmettre un mot de passe ou des données importantes.
<? php
// Substrat pour le compteur
$ im = ImageCreateFromGif ("bg.gif"); </ p>
// Couleur du texte
$ black = imagecolorallocate ($ im, 255,255,255);
// Dessine le nombre de visiteurs
if ($ _ GET ['u']> = 1 ET $ _GET ['u'] <10) {
imagestring ($ im, 2,69,14, $ _ GET ['u'], $ noir);
}
if ($ _ GET ['u']> = 10 ET $ _GET ['u'] <100) {
imagestring ($ im, 2,64,14, $ _ GET ['u'], $ noir);
}
if ($ _ GET ['u']> = 100 ET $ _GET ['u'] <1000) {
imagestring ($ im, 2,59,14, $ _ GET ['u'], $ noir);
}
if ($ _ GET ['u']> = 1000 ET $ _GET ['u'] <10000) {
imagestring ($ im, 2,54,14, $ _ GET ['u'], $ noir);
}
if ($ _ GET ['u']> = 10000 ET $ _GET ['u'] <100000) {
imagestring ($ im, 2,49,14, $ _ GET ['u'], $ noir);
}
// Dessine le nombre de hits
if ($ _ GET ['h']> = 1 ET $ _GET ['h'] <10) {
imagestring ($ im, 2,69,3, $ _ GET ['h'], $ noir);
}
if ($ _ GET ['h']> = 10 ET $ _GET ['h'] <100) {
imagestring ($ im, 2,64,3, $ _ GET ['h'], $ noir);
}
if ($ _ GET ['h']> = 100 ET $ _GET ['h'] <1000) {
imagestring ($ im, 2,59,3, $ _ GET ['h'], $ noir);
}
if ($ _ GET ['h']> = 1000 ET $ _GET ['h'] <10000) {
imagestring ($ im, 2,54,3, $ _ GET ['h'], $ noir);
}
if ($ _ GET ['h']> = 10000 ET $ _GET ['h'] <100000) {
imagestring ($ im, 2,49,3, $ _ GET ['h'], $ noir);
}
En-tête ("Content-type: image / gif");
ImageGif ($ im);
imagedestroy ($ im);
?>
Voici le compteur pour comptabiliser les transitions de pages et indiquer le nombre réel de visiteurs.
Option 2. Compteur sur MySQL
D'abord, vous devez créer une table dans laquelle nous allons stocker toutes les données. Si vous testez sur un serveur local, la requête sera la suivante:
Lorsque vous travaillez avec une base de données, seul le fichier counter.php sera modifié
counter.php
Dans cet exemple, tout est beaucoup plus simple. La première étape consiste à se connecter à la base de données.
<? php
// Connectez-vous à la base de données.
$ db = @ mysql_connect ("localhost", "root", "pass") ou die ("erreur de connexion");
@mysql_select_db ("test", $ db) ou die ("Impossible de sélectionner une base de données");
$ q = mysql_query ("SELECT * FROM counter");
$ r = mysql_fetch_array ($ q);
if (! $ _ COOKIE ['freshcoder'])
{
$ r ['hosts'] ++; $ r ['hits'] ++; // S'il n'y a pas de cookie, ajoutez de la valeur
}
else {$ r ['hits'] ++; } // S'il y a des cookies, il suffit d'ajouter des hits
mysql_query ("UPDATE counter SET hôtes =". $ r ['hosts']. "', hits ='". $ r ['hits']. "'");
echo '<img src = "img.php? u ='. $ r ['hosts']. '& h ='. $ r ['hits']." "alt =" stat "largeur =" 80 "hauteur = "30" border = "0" /> ';
?>
En utilisant la fonction mysql_fetch_array, nous obtenons un tableau $ r dont les clés sont les champs de la table du compteur. La variable $ r ['hosts'] est visiteurs, et $ r ['hits'] sont des hits. Comme avec les fichiers, nous utilisons les conditions et le cookie check, s'ils n'existent pas, alors la variable $ r ['hosts'] est incrémentée de un, si nous existons, nous augmentons la variable $ r ['hits'].
Ensuite, une requête met à jour l'enregistrement et insère les valeurs. Après cela, nous affichons le script d'image.
img.php
Nous partons sans changements.
<? php
// Substrat pour le compteur
$ im = ImageCreateFromGif ("bg.gif"); </ p>
// Couleur du texte
$ black = imagecolorallocate ($ im, 255,255,255);
// Dessine le nombre de visiteurs
if ($ _ GET ['u']> = 1 ET $ _GET ['u'] <10) {
imagestring ($ im, 2,69,14, $ _ GET ['u'], $ noir);
}
if ($ _ GET ['u']> = 10 ET $ _GET ['u'] <100) {
imagestring ($ im, 2,64,14, $ _ GET ['u'], $ noir);
}
if ($ _ GET ['u']> = 100 ET $ _GET ['u'] <1000) {
imagestring ($ im, 2,59,14, $ _ GET ['u'], $ noir);
}
if ($ _ GET ['u']> = 1000 ET $ _GET ['u'] <10000) {
imagestring ($ im, 2,54,14, $ _ GET ['u'], $ noir);
}
if ($ _ GET ['u']> = 10000 ET $ _GET ['u'] <100000) {
imagestring ($ im, 2,49,14, $ _ GET ['u'], $ noir);
}
// Dessine le nombre de hits
if ($ _ GET ['h']> = 1 ET $ _GET ['h'] <10) {
imagestring ($ im, 2,69,3, $ _ GET ['h'], $ noir);
}
if ($ _ GET ['h']> = 10 ET $ _GET ['h'] <100) {
imagestring ($ im, 2,64,3, $ _ GET ['h'], $ noir);
}
if ($ _ GET ['h']> = 100 ET $ _GET ['h'] <1000) {
imagestring ($ im, 2,59,3, $ _ GET ['h'], $ noir);
}
if ($ _ GET ['h']> = 1000 ET $ _GET ['h'] <10000) {
imagestring ($ im, 2,54,3, $ _ GET ['h'], $ noir);
}
if ($ _ GET ['h']> = 10000 ET $ _GET ['h'] <100000) {
imagestring ($ im, 2,49,3, $ _ GET ['h'], $ noir);
}
En-tête ("Content-type: image / gif");
ImageGif ($ im);
imagedestroy ($ im);
?>
Lorsque vous commentez, rappelez-vous que le contenu et le ton de votre message peuvent blesser les sentiments des personnes réelles, montrer du respect et de la tolérance à vos interlocuteurs même si vous ne partagez pas leur opinion, votre comportement dans les conditions de la liberté d'expression. non seulement virtuel, mais aussi le monde réel.Tous les commentaires sont cachés de l'index, le spam est contrôlé.
Maintenant tout le monde peut publier des articles Essayez-le d'abord!
Ecrire un article
J'ai aimé ça? Abonnez-vous aux nouvelles RSS , être le premier à recevoir des informations à propos de tous les événements importants du pays et du monde. Vous pouvez également soutenir shram.kiev.ua, cliquez sur:
Commentaires
Lorsque vous commentez, rappelez-vous que le contenu et le ton de votre message peuvent blesser les sentiments des personnes réelles, montrer du respect et de la tolérance à vos interlocuteurs même si vous ne partagez pas leur opinion, votre comportement dans les conditions de la liberté d'expression. non seulement virtuel, mais aussi le monde réel. Tous les commentaires sont cachés de l'index, le spam est contrôlé.