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 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
ffmpeg image bisard [ par manu7930 ]
un script avec ffmpeg qui donne ça quand on lui demande de faire une image : pourquoi ? [color=red]//génération de l image $gd_image = $frame->toG
J'aurai besoin d'un peut d'aide svp [ par Underskill ]
Bonsoir J'aurais besoin d'aide. Je n'arrive pas afficher les fonction correctement pour afficher le script esceque vous pouriez m'aider svp Le script
Edito en php [ par TheSteph18 ]
Bonjour, Je suis débutant en PHP et j'essaie de créer un petit édito tout simple avec ajout d'une image de type jpeg ou png. Je me suis basé sur des t
récuperer le chemein d'une image [ par lamiae2 ]
bonjour;j'ai un problème depuis une semaine,pour upload une image dans un pop up.mon chef m'a demandé de créer un formulaire ajouter.php pour remplir
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|