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 VISITE


Information sur la source

Catégorie :Application Niveau : Débutant Date de création : 08/02/2003 Date de mise à jour : 08/02/2003 22:31:41 Vu : 16 461

Note :
6,57 / 10 - par 7 personnes
6,57 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Ce script PHP concerne un compteur de visite utilisant 2 tables MySql.
Une se nommant compteur avec une zone compteur de type entier.
Une table visite avec 2 zones : ip (caract) et heure (caract)
Le compteur ne s'incrémente que si le visiteur n'est pas encore venu sur le site ou aprés un décalage de 24h par rapport à sa derniére visite.

Le script contient également une épuration de la db ...

Pour toutes questions envoyez un mail à m.demarez@skynet.be
Bonne amusement
 

Source

  • <?php
  • /*paramètre*/
  • $longueur_compteur=6;//nombre de chiffres de votre compteur
  • $zero="<img src='../../php/counter/gif/0.gif' border'0'>";//chemin des images
  • /*Inclusion du fichier de connexion à la db*/
  • include("../../php/connexion.php");
  • /*Récupération de l'heure en cours*/
  • $heure_act = date("YmdHis");
  • /*Récupération du nombre de viiteurs*/
  • $sql = "select compteur from compteur";
  • $result = mysql_db_query($database,$sql,$connect_db) or die('recuperation impossible');
  • $compteur = mysql_result($result,0, 'compteur');
  • /*Suppression des visites de plus de 10000 secondes*/
  • $sql = "delete from visite where heure < $heure_act-10000";
  • mysql_db_query($database,$sql,$connect_db) or die('suppression impossible');
  • /*on regarde si le visiteur est déjà venu*/
  • $sql = "select heure from visite where ip='$REMOTE_ADDR'";
  • $result = mysql_db_query($database,$sql);
  • /*Si pas encore de visite, sauvegarde de son ip et del'heure de connexion*/
  • if (mysql_num_rows($result) == 0)
  • {
  • $heure = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
  • $sql = "insert into visite(ip,heure) values('$REMOTE_ADDR','$heure_act')";
  • mysql_db_query($database,$sql,$connect_db) or die("insertion impossible");
  • $compteur=$compteur+1;
  • $sql = "update compteur set compteur = $compteur";
  • mysql_db_query($database,$sql,$connect_db) or die("maj impossible");
  • }
  • /*fermeture de la connexion à la db*/
  • @mysql_close($log);
  • $i=strlen($compteur);//nouvelle longueur
  • for ($w=0;$w<$i;$w++){
  • $chiffre=substr($compteur,$w,1).".";//extraction chiffre + .
  • $chiffre=ereg_replace("0.",$chiffre,$zero);//remplacement extension 0. par chiffre
  • $compteur_zero= $compteur_zero . $chiffre;//concaténation
  • }
  • echo "$compteur_zero";//affichage
  • ?>
<?php
/*paramètre*/
$longueur_compteur=6;//nombre de chiffres de votre compteur
$zero="<img src='../../php/counter/gif/0.gif' border'0'>";//chemin des images
/*Inclusion du fichier de connexion à la db*/
include("../../php/connexion.php");
/*Récupération de l'heure en cours*/
$heure_act = date("YmdHis");
/*Récupération du nombre de viiteurs*/
$sql = "select compteur from compteur";
$result = mysql_db_query($database,$sql,$connect_db) or die('recuperation impossible');
$compteur = mysql_result($result,0, 'compteur');
/*Suppression des visites de plus de 10000 secondes*/
$sql = "delete from visite where heure < $heure_act-10000";
mysql_db_query($database,$sql,$connect_db) or die('suppression impossible');

/*on regarde si le visiteur est déjà venu*/
$sql = "select heure from visite where ip='$REMOTE_ADDR'";
$result = mysql_db_query($database,$sql);

/*Si pas encore de visite, sauvegarde de son ip et del'heure de connexion*/
if (mysql_num_rows($result) == 0)
{
    $heure = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
	$sql = "insert into visite(ip,heure) values('$REMOTE_ADDR','$heure_act')";
    mysql_db_query($database,$sql,$connect_db) or die("insertion impossible");
	
	$compteur=$compteur+1;
    $sql = "update compteur set compteur = $compteur";
    mysql_db_query($database,$sql,$connect_db) or die("maj impossible");
}
/*fermeture de la connexion à la db*/
@mysql_close($log);

$i=strlen($compteur);//nouvelle longueur
for ($w=0;$w<$i;$w++){
 $chiffre=substr($compteur,$w,1).".";//extraction chiffre + .
 $chiffre=ereg_replace("0.",$chiffre,$zero);//remplacement extension 0. par chiffre
 $compteur_zero= $compteur_zero . $chiffre;//concaténation
 }
echo "$compteur_zero";//affichage
?>

Commentaires et avis

signaler à un administrateur
Commentaire de totor54 le 22/06/2004 23:04:16

un peu bourrin mais c'est simple et efficace.
Et au moins ça marche !!
J'ai essayer plusieurs scripts qui géré ça avec les coockies et ça marchait pas.
Bien vu d'avoir pensé à cette solution !!!

signaler à un administrateur
Commentaire de faby38 le 07/07/2005 14:23:05

bonjour,
j'ai tester le code, qui m'a l'air assez bien (bien que je ne sois que debutante en php).
Il me mets une erreur et je ne comprends pas : Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in c:\dati per stage\sito\cpt_visite.php on line 28

pouvez vous m'aider?

signaler à un administrateur
Commentaire de semifer le 20/10/2005 21:19:26

crée ta base de donnée lol

signaler à un administrateur
Commentaire de msdos1991 le 16/11/2005 20:27:22

Quelle doit être exactement la structure de la base de donnée ?

signaler à un administrateur
Commentaire de surfman le 22/05/2006 15:49:54

Le code en lui même fonctionne mais necéssite d'être amélioré, le compteur fonctionne bien mais pour quelques minutes et non 24h... ensuite il y a compteur et visite, visite ne se remplie jamais, à quoi sert-il ? à rien ou alors en modifiant le code on peut l'utiliser pour faire non seulement un compteur de visite mais aussi dire combien de personne sont actuellement sur le site.

Les requetes peuvent être beaucoup mieux simplifier :

Avant :

$sql = "delete from $tblvisite where heure < $heure_act-10000";
mysql_db_query($db,$sql,$serv) or die('Supression impossible.');

Aprés :

$sql = mysql_db_query($db,"delete from $tblvisite where heure < $heure_act-10000",$serv) or die('Supression impossible.');

Cordialement.

signaler à un administrateur
Commentaire de surfman le 22/05/2006 15:54:50

Je rajouterais aussi qu'il y a une erreur :

$sql = "select heure from $tblvisite where ip='$REMOTE_ADDR'";
$result = mysql_db_query($db,$sql);

Il manque $serv à la fin de mysql_db_query($db,$sql);

ou alors en simplifiant le code comme j'ai fait plus haut ce qui donne :

$sql =  mysql_db_query($db,"select heure from $tblvisite where ip='$REMOTE_ADDR'",$serv);

Cordialement

signaler à un administrateur
Commentaire de fleur2 le 30/05/2006 13:46:18

je voulais savoir, il parle de 2 tables : la première =>visite avec 2 zones : ip (caract) et heure (caract)
et la 2eme c'est quoi ?

(en détail merci )

signaler à un administrateur
Commentaire de surfman le 30/05/2006 16:00:37

en suivant son script :

Table ip + heure = met l'ip + l'heure de visite du visiteur sur le site, lorsque le visiteur va sur le site, le code php regarde si l'ip existe, si oui il n'incrémente pas, si non il ajoute l'ip du visiteur et l'heure de sa venu le compte et reste dans la base soit disant pendant 24h, au bout de 24h l'ip est effacé etc..etc.. c pour éviter que le compteur de visite s'incrémente de 1 en 1 lorsque un visiteur visite un site plusieurs fois dans la journée...

et l'autre table, c le compteur de visite...

bref y'a beaucoup de modif à faire

signaler à un administrateur
Commentaire de blinix123 le 31/05/2006 12:13:43

Le compteur ne s'incrémente que si le visiteur n'est pas encore venu sur le site ou aprés un décalage de 24h par rapport à sa derniére visite.
Comment tu fais pour le decalage, parceque il va sur ton site, il s'en va,il se deconnecte,son IP est donné a un autre internaute, donc se ce dernier va sur ton site, le compteur ne s'incremente pas...?

signaler à un administrateur
Commentaire de surfman le 31/05/2006 13:19:10

à la base quand tes en adsl ton ip est la même pendant 24/48h, et si tes dégroupé ta une ip fix donc à vie... et si tes en 56k ben l'ip change à chaque connexion/déconnexion.

il faudrait modifier ce compteur en y intégrant un cookie pendant 12h par exemple, si ce cookie existe alors on incrémente pas le compteur, sinon on incrémente...

j'aurais pensé au système ip + heure pour faire un compteur de visite online et non un compteur de visite par jour...
en modifiant le code, j'ai reussi à obtenir ce que je voulais...
et en y intégrant un cookie, on peut utilisé l'autre fonction du compteur de visite 1 par jour par le même ordinateur...

Ce code devrait être refait depuis le début, je pense que je vais le faire.

signaler à un administrateur
Commentaire de blinix123 le 31/05/2006 13:33:37

et tu postera le nouveau alors ^^

signaler à un administrateur
Commentaire de matious le 06/06/2006 21:19:18

Mon petit surfman si le script ne te plait pas fait le toi même ... Et si tu veux faire des remarques constructives postent un peu ton travail ...

signaler à un administrateur
Commentaire de frank_85 le 24/01/2008 19:47:21

j'ai une erreur sur la variable $REMOTE_ADDR:
Notice: Undefined variable: REMOTE_ADDR in c:\program files\easyphp1-8\www\temporaire\test_compteur.php on line 30

signaler à un administrateur
Commentaire de Jay77270 le 31/10/2008 11:44:58

Bonjour,
Voila je débute dans le script php mysql et j'aimerai vivement intégré un compteur de visite ah mon site j'ai utiliser se code php mais celui-ci m'affiche un message d'erreur :

Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\Site\compteur.php on line 15
recuperation impossible

J'aimerai que vous m'éclairer, je bloque sur ça enfaite.

J'ai créer une BDD avec 2 table
   Compteur type INT taille 6
   Visite qui contient Ip type VACHAR taille 15
                       Heure type DOUBLE

signaler à un administrateur
Commentaire de chihabmedo le 15/11/2008 11:59:24

merci de ce source je croi que il'est utile pour moi ,merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,608 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.