SlideShare uma empresa Scribd logo
1 de 5
Baixar para ler offline
Exercice 2 : compteur de visites (I)
On souhaite comptabilisé le nombre de chargement d’une page (la page
d’accueil par exemple). On va procéder de la façon suivante : le compteur
numérique sera stocké dans un fichier, à la première ligne. Ce fichier
contiendra seulement un nombre, celui des visites.

Phase 1 : incrémenter la valeur dans le fichier
Ce fichier va s’appeler compteur.cpt.
Principe de l’algorithme : si le fichier n’existe pas encore (file_exists), alors on
le crée et on l’ouvre en écriture (fopen w) et on initialise le compteur à zéro en
écrivant la chaîne ‘0’ en première ligne (fputs) et on le referme (fclose).
Ensuite, ouverture du fichier en lecture plus écriture (fopen r+), lecture du
nombre (fgets), incrémentation d’une unité du nombre (++), positionnement du
pointeur courant du fichier en première ligne (fseek 0) et réécriture du nombre
(fputs) puis fermeture (fclose).
Cet algorithme (écrit dans la diapo suivante) est écrit directement dans le code
source de la page d’accueil.




Le CyberZoïde Qui Frétille       http://cyberzoide.developpez.com               122/154
Exercice 2 : compteur de visites (II)
Algorithme :
$fichier = "compteur.cpt";                  // affectation du nom de fichier
if( ! file_exists($fichier)) {              // test d’existence
           // initialisation du fichier si n’existe pas encore
           $fp = fopen($fichier,"w");// ouverture en écriture
           fputs($fp,"0");                  // écriture
           fclose($fp);                     // fermeture
}
$fp = fopen($fichier,"r+");                 // ouverture
$hits = fgets($fp,10);                      // lecture
$hits++;                                    // incrémentation
fseek($fp,0);                               // positionnement
fputs($fp,$hits);                           // écriture
fclose($fp);                                // lecture




Le CyberZoïde Qui Frétille          http://cyberzoide.developpez.com           123/154
Exercice 2 : compteur de visites (III)
Phase 2 : généralisation aux autres
pages                                           <?
                                                function Mon_Compteur($page) {
Comme les internautes peuvent atterrir
sur des pages internes à votre site sans          $fichier = $page.".cpt";
passer par l’accueil, il peut être                if(!file_exists($fichier)) {
intéressant de pouvoir comptabilité des                    $fp = fopen($fichier,"w");
visites des autres pages. Cela                             fputs($fp,"0");
permettra aussi de comparer la                             fclose($fp);
popularité relative de vos différentes            }
rubriques.                                        $fp = fopen($fichier,"r+");
Créons donc une fonction que l’on                 $hits = fgets($fp,10);
placera dans un fichier à part par                $hits++;
exemple compteur.php et que l’on                  fseek($fp,0);
appellera par inclusion comme ceci :
                                                  fputs($fp,$hits);
<?php include("compteur.php");                    fclose($fp);
Mon_Compteur("ma_page") ?>                      }
Remplacez "ma_page" par un                      ?>
identifiant unique pour chaque page.


Le CyberZoïde Qui Frétille     http://cyberzoide.developpez.com                   124/154
Exercice 2 : compteur de visites (IV)
Phase 3 : protection contre la redondance
Comme un visiteur peut charger plusieurs fois la même page au cours d’une
même visite, ce mode de décompte n’est pas assez précis et va surestimé le
nombre réel de visiteurs. Il faut donc garder en mémoire le fait qu’un visiteur
est déjà passé par la page et incrémenter le compteur seulement si ce n’est
pas le cas. On va donc créer une variable de session : un tableau contenant la
liste des pages visitées.
Principe du nouvel algorithme : on teste l’existence de la variable de session
$PAGES_LIST, si elle n’existe pas on la crée, on y ajoute la page en cours et
on appelle la fonction Mon_Compteur. Si elle existe, on teste la présence de
la page en cours dans ce tableau, si elle n’y est pas alors on l’y met et on
appelle Mon_Compteur.
L’appel est légèrement différent :
<?php
$page = "ma_page";                    // définition du nom de la page
include("compteur.php");              // chargement de l’algorithme
?>


Le CyberZoïde Qui Frétille     http://cyberzoide.developpez.com             125/154
Exercice 2 : compteur de visites (V)
Voici le code à rajouter dans le fichier compteur.php :
session_start();                // démarrage de la session
if( ! isset($PAGES_LIST)) { // test de l’existence de la variable de session
           $PAGES_LIST = array($page);         // création de la variable
           session_register($PAGES_LIST); // ajout de la page en cours
           Mon_compteur($page);                // incrémentation du compteur
} else {
           if( ! in_array($page, $PAGES_LIST)) {         // test de redondance
                     $PAGES_LIST[ ] = $page;             /* ajout dans la variable
de session pour éviter la redondance */
                     Mon_compteur($page); // incrémentation du compteur
           }
}




Le CyberZoïde Qui Frétille       http://cyberzoide.developpez.com              126/154

Mais conteúdo relacionado

Mais procurados

cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...ENSET, Université Hassan II Casablanca
 
Développement Web - Module 1 - Introduction
Développement Web - Module 1 - IntroductionDéveloppement Web - Module 1 - Introduction
Développement Web - Module 1 - IntroductionMohammed Amine Mostefai
 
Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et streamFranck SIMON
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...ENSET, Université Hassan II Casablanca
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueLilia Sfaxi
 
Systèmes d'Exploitation - chp5-gestion fichiers
Systèmes d'Exploitation - chp5-gestion fichiersSystèmes d'Exploitation - chp5-gestion fichiers
Systèmes d'Exploitation - chp5-gestion fichiersLilia Sfaxi
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETLLilia Sfaxi
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : SparkLilia Sfaxi
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siNarûtö Bàl'Sèm
 
Développement d'un forum de discussion
Développement d'un forum de discussionDéveloppement d'un forum de discussion
Développement d'un forum de discussionYoussef NIDABRAHIM
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI Mansouri Khalifa
 

Mais procurados (20)

cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
 
Développement Web - Module 1 - Introduction
Développement Web - Module 1 - IntroductionDéveloppement Web - Module 1 - Introduction
Développement Web - Module 1 - Introduction
 
Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et stream
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Projet reseaux
Projet reseaux Projet reseaux
Projet reseaux
 
Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disque
 
Systèmes d'Exploitation - chp5-gestion fichiers
Systèmes d'Exploitation - chp5-gestion fichiersSystèmes d'Exploitation - chp5-gestion fichiers
Systèmes d'Exploitation - chp5-gestion fichiers
 
Nour C2I
Nour C2INour C2I
Nour C2I
 
Semantic UI Introduction
Semantic UI IntroductionSemantic UI Introduction
Semantic UI Introduction
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Tp n 4 linux
Tp n 4 linuxTp n 4 linux
Tp n 4 linux
 
Tp1 wp etud
Tp1 wp etudTp1 wp etud
Tp1 wp etud
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 si
 
Développement d'un forum de discussion
Développement d'un forum de discussionDéveloppement d'un forum de discussion
Développement d'un forum de discussion
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
Tp word n° 1
Tp word n° 1Tp word n° 1
Tp word n° 1
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI
 

Destaque

3 examen et corrige francais 2013 1 am t1
3 examen et corrige francais 2013 1 am t13 examen et corrige francais 2013 1 am t1
3 examen et corrige francais 2013 1 am t1Ahmed Mesellem
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zinebZineb ELGARRAI
 
Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)Saïd Radhouani
 
Test de français
Test de françaisTest de français
Test de françaisfrancaisweb
 
Test de français international
Test de français internationalTest de français international
Test de français internationalMar Crespo
 
Exercice sur les classes en Java
Exercice sur les classes en JavaExercice sur les classes en Java
Exercice sur les classes en JavaWiki Info Systeme
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
S1 eco i - microéconomie i exercices td 2011-2012
S1   eco i - microéconomie i exercices td 2011-2012S1   eco i - microéconomie i exercices td 2011-2012
S1 eco i - microéconomie i exercices td 2011-2012Abdeslam ELMOUDEN
 

Destaque (15)

لنتعلم إسلامنا
لنتعلم إسلامنالنتعلم إسلامنا
لنتعلم إسلامنا
 
Dubois quentin
Dubois quentinDubois quentin
Dubois quentin
 
technologie web
technologie webtechnologie web
technologie web
 
3 examen et corrige francais 2013 1 am t1
3 examen et corrige francais 2013 1 am t13 examen et corrige francais 2013 1 am t1
3 examen et corrige francais 2013 1 am t1
 
UKO-JAVA1001-slides
UKO-JAVA1001-slidesUKO-JAVA1001-slides
UKO-JAVA1001-slides
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zineb
 
Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)
 
Cours primitives
Cours primitivesCours primitives
Cours primitives
 
Test de français
Test de françaisTest de français
Test de français
 
Test de français international
Test de français internationalTest de français international
Test de français international
 
Exercice sur les classes en Java
Exercice sur les classes en JavaExercice sur les classes en Java
Exercice sur les classes en Java
 
Serie de TD 3 POO
Serie de TD 3 POOSerie de TD 3 POO
Serie de TD 3 POO
 
Cours php
Cours phpCours php
Cours php
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
S1 eco i - microéconomie i exercices td 2011-2012
S1   eco i - microéconomie i exercices td 2011-2012S1   eco i - microéconomie i exercices td 2011-2012
S1 eco i - microéconomie i exercices td 2011-2012
 

Semelhante a Compteur de visites

Atelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressAtelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressIZZA Samir
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afupJulien Vinber
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Pots de Miel, Honeypot informatique - Sécurité informatique
Pots de Miel, Honeypot informatique - Sécurité informatiquePots de Miel, Honeypot informatique - Sécurité informatique
Pots de Miel, Honeypot informatique - Sécurité informatique🏁 Pierre-Henry Soria 💡
 
Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfYasushiTsubakik
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP EL JAOUARI Ahmed
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Engineor
 
Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Mickael Perraud
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryneuros
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3Eddy RICHARD
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP NextSQLI
 
Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4🏁 Pierre-Henry Soria 💡
 
Programmation web cours php -- sahmi academy
Programmation web   cours php -- sahmi academyProgrammation web   cours php -- sahmi academy
Programmation web cours php -- sahmi academySoufiane SAHMI
 
présentation Faille include
présentation Faille include présentation Faille include
présentation Faille include sahar dridi
 

Semelhante a Compteur de visites (20)

Atelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressAtelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPress
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afup
 
Php1
Php1Php1
Php1
 
Php4 Mysql
Php4 MysqlPhp4 Mysql
Php4 Mysql
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Playing With PHP 5.3
Playing With PHP 5.3Playing With PHP 5.3
Playing With PHP 5.3
 
Chap2
Chap2Chap2
Chap2
 
Pots de Miel, Honeypot informatique - Sécurité informatique
Pots de Miel, Honeypot informatique - Sécurité informatiquePots de Miel, Honeypot informatique - Sécurité informatique
Pots de Miel, Honeypot informatique - Sécurité informatique
 
Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
 
Php cours
Php coursPhp cours
Php cours
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !
 
Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jquery
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP Next
 
Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4
 
Programmation web cours php -- sahmi academy
Programmation web   cours php -- sahmi academyProgrammation web   cours php -- sahmi academy
Programmation web cours php -- sahmi academy
 
présentation Faille include
présentation Faille include présentation Faille include
présentation Faille include
 

Compteur de visites

  • 1. Exercice 2 : compteur de visites (I) On souhaite comptabilisé le nombre de chargement d’une page (la page d’accueil par exemple). On va procéder de la façon suivante : le compteur numérique sera stocké dans un fichier, à la première ligne. Ce fichier contiendra seulement un nombre, celui des visites. Phase 1 : incrémenter la valeur dans le fichier Ce fichier va s’appeler compteur.cpt. Principe de l’algorithme : si le fichier n’existe pas encore (file_exists), alors on le crée et on l’ouvre en écriture (fopen w) et on initialise le compteur à zéro en écrivant la chaîne ‘0’ en première ligne (fputs) et on le referme (fclose). Ensuite, ouverture du fichier en lecture plus écriture (fopen r+), lecture du nombre (fgets), incrémentation d’une unité du nombre (++), positionnement du pointeur courant du fichier en première ligne (fseek 0) et réécriture du nombre (fputs) puis fermeture (fclose). Cet algorithme (écrit dans la diapo suivante) est écrit directement dans le code source de la page d’accueil. Le CyberZoïde Qui Frétille http://cyberzoide.developpez.com 122/154
  • 2. Exercice 2 : compteur de visites (II) Algorithme : $fichier = "compteur.cpt"; // affectation du nom de fichier if( ! file_exists($fichier)) { // test d’existence // initialisation du fichier si n’existe pas encore $fp = fopen($fichier,"w");// ouverture en écriture fputs($fp,"0"); // écriture fclose($fp); // fermeture } $fp = fopen($fichier,"r+"); // ouverture $hits = fgets($fp,10); // lecture $hits++; // incrémentation fseek($fp,0); // positionnement fputs($fp,$hits); // écriture fclose($fp); // lecture Le CyberZoïde Qui Frétille http://cyberzoide.developpez.com 123/154
  • 3. Exercice 2 : compteur de visites (III) Phase 2 : généralisation aux autres pages <? function Mon_Compteur($page) { Comme les internautes peuvent atterrir sur des pages internes à votre site sans $fichier = $page.".cpt"; passer par l’accueil, il peut être if(!file_exists($fichier)) { intéressant de pouvoir comptabilité des $fp = fopen($fichier,"w"); visites des autres pages. Cela fputs($fp,"0"); permettra aussi de comparer la fclose($fp); popularité relative de vos différentes } rubriques. $fp = fopen($fichier,"r+"); Créons donc une fonction que l’on $hits = fgets($fp,10); placera dans un fichier à part par $hits++; exemple compteur.php et que l’on fseek($fp,0); appellera par inclusion comme ceci : fputs($fp,$hits); <?php include("compteur.php"); fclose($fp); Mon_Compteur("ma_page") ?> } Remplacez "ma_page" par un ?> identifiant unique pour chaque page. Le CyberZoïde Qui Frétille http://cyberzoide.developpez.com 124/154
  • 4. Exercice 2 : compteur de visites (IV) Phase 3 : protection contre la redondance Comme un visiteur peut charger plusieurs fois la même page au cours d’une même visite, ce mode de décompte n’est pas assez précis et va surestimé le nombre réel de visiteurs. Il faut donc garder en mémoire le fait qu’un visiteur est déjà passé par la page et incrémenter le compteur seulement si ce n’est pas le cas. On va donc créer une variable de session : un tableau contenant la liste des pages visitées. Principe du nouvel algorithme : on teste l’existence de la variable de session $PAGES_LIST, si elle n’existe pas on la crée, on y ajoute la page en cours et on appelle la fonction Mon_Compteur. Si elle existe, on teste la présence de la page en cours dans ce tableau, si elle n’y est pas alors on l’y met et on appelle Mon_Compteur. L’appel est légèrement différent : <?php $page = "ma_page"; // définition du nom de la page include("compteur.php"); // chargement de l’algorithme ?> Le CyberZoïde Qui Frétille http://cyberzoide.developpez.com 125/154
  • 5. Exercice 2 : compteur de visites (V) Voici le code à rajouter dans le fichier compteur.php : session_start(); // démarrage de la session if( ! isset($PAGES_LIST)) { // test de l’existence de la variable de session $PAGES_LIST = array($page); // création de la variable session_register($PAGES_LIST); // ajout de la page en cours Mon_compteur($page); // incrémentation du compteur } else { if( ! in_array($page, $PAGES_LIST)) { // test de redondance $PAGES_LIST[ ] = $page; /* ajout dans la variable de session pour éviter la redondance */ Mon_compteur($page); // incrémentation du compteur } } Le CyberZoïde Qui Frétille http://cyberzoide.developpez.com 126/154