begin process at 2010 03 22 00:42:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > COMPTEUR DE VISITES DE SITE EN PHP

COMPTEUR DE VISITES DE SITE EN PHP


 Information sur la source

Note :
6 / 10 - par 5 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :php, compteur, visite, image, gd Niveau :Initié Date de création :23/03/2006 Date de mise à jour :24/03/2006 13:51:21 Vu / téléchargé :30 688 / 3 016

Auteur : pat_nat

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

Les Membres Club peuvent 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

Source avec une capture DES HISTOGRAMES , CAMEMBERT 3D ET ÉCLATÉS CRÉÉ AU VOL EN PH... par zozo14
AJOUTER UN ARRIÈRE PLAN SUR UNE IMAGE par digitaldax
REDIMENSIONNER UNE IMAGE EN PHP par digitaldax
Source avec Zip RECHERCHE DE MOTIF DANS UNE IMAGE par ParseError
BARRES PARAMÉTRABLES EN DÉGRADÉ DE COULEUR ET AVEC TEXTE DA... par hornetbzz

 Sources en rapport avec celle ci

AJOUTER UN ARRIÈRE PLAN SUR UNE IMAGE par digitaldax
REDIMENSIONNER UNE IMAGE EN PHP par digitaldax
Source avec Zip PRELOAD IMAGES AVEC IMAGE LOADER ET MISE EN CACHE JAVASCRIPT par mitchlmx
COMPTEUR DE VISITEUR : PHP ET MYSQL par didguess
Source avec Zip CENTRER UN TEXTE DANS UNE IMAGE GD par Zeo34

Commentaires et avis

Commentaire de coucou747 le 23/03/2006 22:40:39

# if (imagetypes() & IMG_PNG) {
#     header ("Content-type: image/png");

pourquoi t'as mis une constante si le type est codé en dur ?

tu devrais utiliser des ' à la place des ", ils sont plus rapides...
#
# function createfrom($img){
#     global $ext;
#     switch ($ext){
#         case "gif" :return imagecreatefromgif($img);
#         case "jpg" :return imagecreatefromjpeg($img);
#         case "png" :return imagecreatefrompng($img);
#     }
# }


une variable globale pour ça ??? ouais bof... c'est pas super réutilisable dans ce cas... De plus :
function createfrom($img){
       $a='imagecreatefrom'.$ext;
       return $$a;
}

est plus évolutif...

Sinon, des compteurs on en a plein, le tien n'apporte pas grand chose... à part la partie gd qui est bien pensée...

Commentaire de jerryyy le 23/03/2006 23:34:21

Salut!

Ton compteur à l'air sympa mais tu pourrais ajouter une image s'il te plaît comme ça je regarde ce que ça donne avant de le prendre ou de le modifier peut-être suivant mes besoins. Merci d'avance

Commentaire de pat_nat le 23/03/2006 23:35:30

Merci pour le commentaire et comme tu l'as si bien souligné, ce n'est pas ce qui manque, les compteurs.
J'ai effectivement misé sur la gd.

Commentaire de pat_nat le 24/03/2006 13:56:17

Coucou747, j'ai essayé cela mais cela ne fonctionne pas.

function createfrom($img){
       $a='imagecreatefrom'.$ext;
       return $$a;
}

C'est interpreté comme la varaible $imagecreatefrompng si $ext='png'
C'est du php4 et non pas 5. Est ce du a la version ?
Merci de m'en dire plus? Sympa.

Commentaire de pat_nat le 24/03/2006 13:58:09

Jerryyy que veux tu exactement, soit plus précis et pas de pb je te fais ca.

Commentaire de malalam le 24/03/2006 15:34:30 administrateur CS

Hello,

regarde mon exemple de fonction générique de redimensionnement d'images :
http://www.phpcs.com/codes/FONCTION-GENERIQUE-REDIMENSIONNEMENT-IMAGE_36654.aspx

<?php
function imageResize ($fileName, $width, $height) {
    if (!file_exists ($fileName) || !is_numeric ($height) || !is_numeric ($width)) {
        return false;
    } else {
        $aImg = @getimagesize ($fileName);
        if (false === $aImg) {
            return false;
        } else {
            $aTypes = array (1 => 'gif', 2 => 'jpeg', 3 => 'png');
            if (!in_array ($aImg[2], array_keys ($aTypes))) {
                return false;
            } else {
                $getImg = create_function ('$fileName', 'return @imagecreatefrom'.$aTypes[$aImg[2]].'($fileName);');
                $im = $getImg ($fileName);
                $image_p = imagecreatetruecolor($width, $height);
                imagecopyresampled($image_p, $im, 0, 0, 0, 0, $width, $height, $aImg[0], $aImg[1]);
                $saveImg = create_function ('$img, $fileName', 'return @image'.$aTypes[$aImg[2]].'($img, \'thumb_\'.$fileName);');
                if ($saveImg ($image_p, $fileName)) {
                    return true;
                } else {
                    return false;
                }
  
            }
        }
    }
}
imageResize ('isotile2.gif', 25, 25);
?>

Commentaire de FhX le 24/03/2006 18:57:39

Oui, dans tous les cas faut créer une fonction virtuelle pour ce genre de chose. A partir du moment ou tu veux une fonction dynamique tu n'as pas le choix.

Commentaire de jerryyy le 25/03/2006 02:33:07

Merci ben c'est exactement ce que je voualais, une image avec un exemple! Merci pour ton script et bonne continuation en php

Commentaire de youspim le 27/03/2006 16:41:15

Salut PAT_NAT,

Bonne initiative ;-)
Ce que COUCOU747 te disait, a mon avis, c'est d'ecrire comme ceci :
$a='imagecreatefrom.'.$ext;
                   ^
                   |
                c'est ce point qui est important avant l'extension

Voila, j'espere que j'ai été suffisament clair pour ne pas t'embrouiller.
Bon courage.

Commentaire de youspim le 27/03/2006 16:43:44

Désolé mais ma fléche n'est pas restée au bon endroit :-(

Commentaire de malalam le 31/03/2006 08:08:26 administrateur CS

Youspim => je pense que tu n'as pas compris ce que proposait Coucou, ton point est en trop ;-)

Commentaire de pat_nat le 05/04/2006 23:35:19

je vous remercie pour votre aide.
j'ai essayé ca

  $a='imagecreatefrom'.$ext; //avec $ext='GIF' par exemple
  $a('mon_image.gif');

et effectivement ca fonctionne bien.

Commentaire de coucou747 le 06/04/2006 21:38:54

c'est de ça dont je voulais parler...  c'est carément plus propre...

Commentaire de malalam le 06/04/2006 23:36:34 administrateur CS

moi je trouve mon create_function plus propre, mais bon... ;-)

Commentaire de sekkou17 le 23/05/2006 14:04:51

merci c est bien ca marche ; mais j ai un prob avec l' extention .gif cmnt faire pour les ajouter en EsayPHP

Commentaire de FhX le 23/05/2006 22:00:02

"$a='imagecreatefrom'.$ext; //avec $ext='GIF' par exemple
  $a('mon_image.gif');"

Sauf que ca, c'est moche.
Ta variable $a n'est pas censé être une fonction...
Rahhh PHP quand t'es trop permissif des fois :p :p

Commentaire de coucou747 le 24/05/2006 16:15:50

FhX... alors tu as quoi comme équivant aux pointeurs sur fonctions qui existent en C ???

personellement, moi je trouve cette méthode plutot pas mal... elle n'a rien d'incorect...

Commentaire de Fantole le 25/05/2006 13:06:36

Bonjour ;)
Moi j'ai une question (et je précise je n'y connais rien) lol

Serait-il possible d'afficher les GIF animées en animées et non en fixe :? ?

Commentaire de FhX le 25/05/2006 14:06:10

bah create_function() existe, c'est pas pour rien lol :)

 Ajouter un commentaire


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&#224; mon probl&#232;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


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,172 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales