SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logicielMajid CHADAD
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfonyJeremy Gachet
 
02 Types of Computer Forensics Technology - Notes
02 Types of Computer Forensics Technology - Notes02 Types of Computer Forensics Technology - Notes
02 Types of Computer Forensics Technology - NotesKranthi
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 
Introduction au Framework Laravel
Introduction au Framework LaravelIntroduction au Framework Laravel
Introduction au Framework LaravelHoucem Hedhly
 
Projet de fin d'etude sur le parc informatique
Projet  de fin d'etude sur le parc informatiqueProjet  de fin d'etude sur le parc informatique
Projet de fin d'etude sur le parc informatiqueHicham Ben
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Gestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatiqueGestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatiqueJihed Kaouech
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs
Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs
Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs Sam Bowne
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvcMadridal
 

Tendances (20)

Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé
 
Les framework mvc
Les framework mvcLes framework mvc
Les framework mvc
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 
Windev
WindevWindev
Windev
 
Présentation Cryptographie
Présentation CryptographiePrésentation Cryptographie
Présentation Cryptographie
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
02 Types of Computer Forensics Technology - Notes
02 Types of Computer Forensics Technology - Notes02 Types of Computer Forensics Technology - Notes
02 Types of Computer Forensics Technology - Notes
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
QCM Sécurité Informatique
QCM Sécurité InformatiqueQCM Sécurité Informatique
QCM Sécurité Informatique
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 
Introduction au Framework Laravel
Introduction au Framework LaravelIntroduction au Framework Laravel
Introduction au Framework Laravel
 
Projet de fin d'etude sur le parc informatique
Projet  de fin d'etude sur le parc informatiqueProjet  de fin d'etude sur le parc informatique
Projet de fin d'etude sur le parc informatique
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Gestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatiqueGestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatique
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs
Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs
Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
 
Cours php
Cours php Cours php
Cours php
 
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
 

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