Accueil > > > COMPTEUR DE VISITES DE SITE EN PHP
COMPTEUR DE VISITES DE SITE EN PHP
Information sur la source
Description
Compteur sur 5 chiffres représenté par 5 images. Le zip contient le fichier compteur.htm qui présente le compteur (A voir ), le script compteur.php qui dessine le compteur à partir des images représentant les chiffres 0 à 9. Ces 10 images sont elles aussi fournies. Le compteur ne s'incrémente qu'au premier chargement de la page ou celui-ci se trouve (utilisation de variable de session). Il est nécessaire que la librairie php GD soit chargée pour que ce script fonctionne . Pour cela vous disposez aussi du script gd.php qui vérifie si gd est présente et quels sont les types d'images supportés par votre version. Le script est commenté afin de pouvoir etre bien compris, voir modifié ou optimisé.
Source
- <?php
- session_start();
- //////////////////////////////////////////////////////
- //////////// Paramètres à modifier selon besoin
- //////////////////////////////////////////////////////
- //chemin et nom du fichier texte dans lequel se trouve
- //une seule ligne contenant le nomvre de visites
- $fichier="./compteur.txt";
- // chemin ou se trouve les 10 images représentant les chiffres 0 à 9
- // et nom de la premiere image ce qui va permettre
- // de recupérer l'extension de l'image
- // type d'image autorisé dans ce script: png, jpg ou gif
- $img="./jpg/im0.jpg";
- //$img="./png/0.jpg"; exemple avec png
- //$img="./gif/im0.gif"; exemple avec gif
-
- // Le script gd.php permet de vérifier que l'extension gd
- // est bien présente et les types d'images supportés
- //////////////////////////////////////////////////////
-
-
- //////////////////////////////////////////////////////
- //////////// Code réalisation du compteur
- //////////////////////////////////////////////////////
- if (imagetypes() & IMG_PNG) { // on dessine du png quelque soit le type des images (png, jpg ou gif)
- header ("Content-type: image/png");
-
- if (isset($_SESSION["nb"])) $nb=$_SESSION["nb"] ;
- else {
- /////////////// Ouverture fichier texte contenant le compteur, lecture, incrementation, ecriture
- if (file_exists($fichier)) {//le fichier existe
- if (is_writable($fichier)) $mode="r+"; //et le fichier est accessible en ecriture
- else noimage("Compteur indisponible"); //en lecture seule donc affichage erreur
- }
- else $mode="w+"; //le fichier n'existe pas, il va etre créé
- $fic=fopen($fichier,$mode); //ouverture du fichier
- if (!$fic) noimage("Compteur indisponible"); //probleme lors de l'ouverture et affichage erreur
-
- $nb = fgets($fic); //recupere la seule ligne du fichier devant contenir le nombre de visites
- if ($nb=="") $nb=0; $nb++; //si ligne vide alors nombre =1 sinon on incremente
- rewind ($fic); //on se replace en debut de fichier
- fputs($fic,$nb); //on ecrit le nombre de visites
- fclose($fic);//fermeture du fichier
- $_SESSION["nb"]=$nb;
- }
- //complete a gauche par des zéro si le nombre a moins de 5 chiffres
- //afin d'avoir un compteur sur 5 chiffres
- $ligne=str_pad($nb,5, "0", STR_PAD_LEFT);
- // extension des images represenatnt les chiffres de 0 à 9
- $ext=substr($img, strrpos($img,"."));
- $fic=substr($img,0, strrpos($img,".")-1);
-
- for($i=0;$i<10;$i++) { //si une image est manquante affichage sous forme de texte
- if (!file_exists($fic.$i.$ext)) noimage($ligne);
- //pour chaque image on recupere sa largeur, sa hauteur, ...
- list(${"w$i"},${"h$i"},${"typ$i"},${"attrib$i"}) = getimagesize($fic.$i.$ext);
- }
-
- $wtot=0; //calcul de la largeur du compteur en fonction des images qui le forment
- for($i=0;$i<strlen($ligne);$i++) $wtot += ${"w".$ligne[$i]};
-
- $imdest = imagecreatetruecolor ($wtot,$h0); //creation d'une image vide de la longueur des 5 images
-
- /////////////////////////////////// couleur de fond ////////////////////////
- //pas necessiare mais je laisse le code en exemple
- /*$imsource = createfrom($fic."1".$ext,$ext,$ligne); //chargement de l'image im1.gif
- if (! $imsource) noimage($ligne); //probleme donc affichage sous forme de texte
- //recupéréation de la couleur du pixel en haut a gauche senssé etre couleur de fond
- $rgb = imagecolorsforindex($imsource,imagecolorat($imsource, 0, 0)) ;
- //mettre cette meme couleur de fond dans la nouvelle image
- $bgc = imagecolorallocate ($imdest, $rgb["red"], $rgb["green"], $rgb["blue"]);
- imagefill ($imdest, 0, 0, $bgc);
- */////////////////////////////////
-
- //////////////// realisation de l'image compteur /////////////
- $pos=0;
- for($i=0;$i<strlen($ligne);$i++) { //copy de l'image representant chacun des 5 chiffres du compteur
- $imsource = createfrom($fic.$ligne[$i].$ext,$ext,$ligne);
- if (!$imsource) noimage($ligne); //probleme donc affichage sous forme de texte
- imagecopymerge ( $imdest ,$imsource ,$pos, 0, 0, 0,${"w".$ligne[$i]}, ${"h".$ligne[$i]}, 100);
- $pos +=${"w".$ligne[$i]};
- }
-
- imagepng($imdest) ; //affichage du compteur sous frome d'une image png
- }
-
- function createfrom($img,$ext,$ligne){
- switch ($ext){
- case ".gif" :return imagecreatefromgif($img);
- case ".jpg" :return imagecreatefromjpeg($img);
- case ".png" :return imagecreatefrompng($img);
- default: noimage($ligne);
- }
- }
-
- function noimage($txt){
- $font=2; //ecriture du texte $txt dans l'image $imdest
- $imdest = imagecreatetruecolor (10+strlen($txt)* imagefontwidth($font) ,5+imagefontheight($font) );
- $bgc = imagecolorallocate ($imdest, 255, 255, 255);
- $tc = imagecolorallocate ($imdest, 0, 0, 0);
- imagefilledrectangle ($imdest, 0, 0, 150, 30, $bgc);
- imagestring ($imdest, $font, 5, 5, $txt, $tc);
- imagepng($imdest) ;
- die();
- }
- ?>
<?php
session_start();
//////////////////////////////////////////////////////
//////////// Paramètres à modifier selon besoin
//////////////////////////////////////////////////////
//chemin et nom du fichier texte dans lequel se trouve
//une seule ligne contenant le nomvre de visites
$fichier="./compteur.txt";
// chemin ou se trouve les 10 images représentant les chiffres 0 à 9
// et nom de la premiere image ce qui va permettre
// de recupérer l'extension de l'image
// type d'image autorisé dans ce script: png, jpg ou gif
$img="./jpg/im0.jpg";
//$img="./png/0.jpg"; exemple avec png
//$img="./gif/im0.gif"; exemple avec gif
// Le script gd.php permet de vérifier que l'extension gd
// est bien présente et les types d'images supportés
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////// Code réalisation du compteur
//////////////////////////////////////////////////////
if (imagetypes() & IMG_PNG) { // on dessine du png quelque soit le type des images (png, jpg ou gif)
header ("Content-type: image/png");
if (isset($_SESSION["nb"])) $nb=$_SESSION["nb"] ;
else {
/////////////// Ouverture fichier texte contenant le compteur, lecture, incrementation, ecriture
if (file_exists($fichier)) {//le fichier existe
if (is_writable($fichier)) $mode="r+"; //et le fichier est accessible en ecriture
else noimage("Compteur indisponible"); //en lecture seule donc affichage erreur
}
else $mode="w+"; //le fichier n'existe pas, il va etre créé
$fic=fopen($fichier,$mode); //ouverture du fichier
if (!$fic) noimage("Compteur indisponible"); //probleme lors de l'ouverture et affichage erreur
$nb = fgets($fic); //recupere la seule ligne du fichier devant contenir le nombre de visites
if ($nb=="") $nb=0; $nb++; //si ligne vide alors nombre =1 sinon on incremente
rewind ($fic); //on se replace en debut de fichier
fputs($fic,$nb); //on ecrit le nombre de visites
fclose($fic);//fermeture du fichier
$_SESSION["nb"]=$nb;
}
//complete a gauche par des zéro si le nombre a moins de 5 chiffres
//afin d'avoir un compteur sur 5 chiffres
$ligne=str_pad($nb,5, "0", STR_PAD_LEFT);
// extension des images represenatnt les chiffres de 0 à 9
$ext=substr($img, strrpos($img,"."));
$fic=substr($img,0, strrpos($img,".")-1);
for($i=0;$i<10;$i++) { //si une image est manquante affichage sous forme de texte
if (!file_exists($fic.$i.$ext)) noimage($ligne);
//pour chaque image on recupere sa largeur, sa hauteur, ...
list(${"w$i"},${"h$i"},${"typ$i"},${"attrib$i"}) = getimagesize($fic.$i.$ext);
}
$wtot=0; //calcul de la largeur du compteur en fonction des images qui le forment
for($i=0;$i<strlen($ligne);$i++) $wtot += ${"w".$ligne[$i]};
$imdest = imagecreatetruecolor ($wtot,$h0); //creation d'une image vide de la longueur des 5 images
/////////////////////////////////// couleur de fond ////////////////////////
//pas necessiare mais je laisse le code en exemple
/*$imsource = createfrom($fic."1".$ext,$ext,$ligne); //chargement de l'image im1.gif
if (! $imsource) noimage($ligne); //probleme donc affichage sous forme de texte
//recupéréation de la couleur du pixel en haut a gauche senssé etre couleur de fond
$rgb = imagecolorsforindex($imsource,imagecolorat($imsource, 0, 0)) ;
//mettre cette meme couleur de fond dans la nouvelle image
$bgc = imagecolorallocate ($imdest, $rgb["red"], $rgb["green"], $rgb["blue"]);
imagefill ($imdest, 0, 0, $bgc);
*/////////////////////////////////
//////////////// realisation de l'image compteur /////////////
$pos=0;
for($i=0;$i<strlen($ligne);$i++) { //copy de l'image representant chacun des 5 chiffres du compteur
$imsource = createfrom($fic.$ligne[$i].$ext,$ext,$ligne);
if (!$imsource) noimage($ligne); //probleme donc affichage sous forme de texte
imagecopymerge ( $imdest ,$imsource ,$pos, 0, 0, 0,${"w".$ligne[$i]}, ${"h".$ligne[$i]}, 100);
$pos +=${"w".$ligne[$i]};
}
imagepng($imdest) ; //affichage du compteur sous frome d'une image png
}
function createfrom($img,$ext,$ligne){
switch ($ext){
case ".gif" :return imagecreatefromgif($img);
case ".jpg" :return imagecreatefromjpeg($img);
case ".png" :return imagecreatefrompng($img);
default: noimage($ligne);
}
}
function noimage($txt){
$font=2; //ecriture du texte $txt dans l'image $imdest
$imdest = imagecreatetruecolor (10+strlen($txt)* imagefontwidth($font) ,5+imagefontheight($font) );
$bgc = imagecolorallocate ($imdest, 255, 255, 255);
$tc = imagecolorallocate ($imdest, 0, 0, 0);
imagefilledrectangle ($imdest, 0, 0, 150, 30, $bgc);
imagestring ($imdest, $font, 5, 5, $txt, $tc);
imagepng($imdest) ;
die();
}
?>
Historique
- 23 mars 2006 23:47:27 :
- ajout de la capture d'écran
- 24 mars 2006 13:48:23 :
- modification du code et ajout d'images
- 24 mars 2006 13:51:21 :
- modidification du code et ajout d'images
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
compteur rock...config ? [ par pointup ]
Bonjour les pros,J'essaie d'installer sur mon site hébergé chez free le script php du compteur de visite + connecté de rock . Vous le connaissez...il
Couper le bas d'une image (GD PHP) [ par dezeque ]
bonjour,j'aimerai savoir comment faire pour couper le bas d'une image ?elle fais 600X800 et j'aimerai enlver les 50 dernirers pixels du bas pour quell
Image GD et php ! prob d'affichage [ par riecola ]
Bonjour tout le monde. Voilà mon problème : mon utilisateur selectionne une image et un texte au choix dans un formulaire ensuite une page s
Problème GD [ par guillaumeoki ]
Bonjour,J'ai une image php que j'appelle par image.php?u=.pngEt j'aimerais le changer en image.png je sais que c'est possible mais je ne sais pas comm
compteur de visite php [ par ingcool ]
je veux remplcer les chiffres qui composent le compteur de visite par des image qui comportent les mêmes chiffres avec preg_replace en php
compteur de visite [ par qmj3 ]
Bonjour a tous, je n'arrive pas à faire fonctionner le script dans ma page .php.Par contre sur un compteur.php sans l'inclure dans mon site, il foncti
compteur du nombre de visite sur chaque page (enregistrees dans BDD) [ par ju0123456789 ]
Bonjour, J'ai un site php, il y a un traceur sur chacune de mes pages, qui sont enregistrées dans ma BDD à la seconde près; avec le nom de la page as
Image de profil php [ par gb66 ]
Salut a vous voila ma question J'ai un formulaire qui crer un compte Y et l'amene sur une page en disant que les infos sont ajoutée. il y a aussi un b
Problème d'affichage en php/odbc d'une image blob [ par caro384 ]
Bonjour à tous j'ai un petit soucis de programmation en php odbc pour l'affichage d'une image stockée dans un champ blob. L'affichage des autres donn
Calculer le DPI d une image en PHP [ par codeurcasa ]
Bonjour All, Après plusieurs heures de recherche sur google j arrive pas a trouver une méthode en PHP pour calculer le DPI ou Le point par pouce (PPP
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
CHAMPS TIMECHAMPS TIME par vargas
Cliquez pour lire la suite par vargas
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|