|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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();
}
?>
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
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
Sources en rapport avec celle ci
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
Première visite sur ce site [ par stephanlish ]
Salut à tous,je suis une débutante en php mysql et j'ai des problémes d'insertion des valeurs sélectionnées sur la liste de valeurs du formulaire php.
Longueur de caractere dans un textarea [ par DjChat ]
Bonjour a tous, j'ai un formulaire avec deux textarea et j'aimerai limiter le nombre de caractere a taper dans ces champ, j'me suis renseigner et c'es
PHP- Manipulation de fichiers [ par goth666 ]
Bonjour,Voila je me suis mit en tête de creer une sorte de portail, où les visiteurs pourraient laisser des articles...Le problème c'est que je ne veu
Antialiasing du texte dans une image [ par Epoc22 ]
Bonjour, ça fait longtemps que j'ai plus posté ici tient Alors j'ai un problème avec la librairie GD de PHP. Lorsque je créer un texte avec GD, la pol
PHP et les Images [ par Steph115 ]
Bonjour,Pour un petit programme en PHP j'ai un "bureau" qui fait 100x100.Les images que les utilisateurs rentrent dans le système sont redimensionnées
php et angres [ par olzanoz ]
salut tous le monde bah voila j'ai une interface en php avec numéro de compteur comme id quand je tapes le numéro je doit avoir l'état du compteur ave
|
Téléchargements
Logiciels à télécharger sur le même thème :
|