#!/usr/bin/perl ############################################################################## # Rapid'o compteur Version 1.00 # # Copyright Virginie Daoudal virgie@lecgi.net # # CrÈe le 15/09/99 Derniere mofif le 10/01/02 # ############################################################################## # NOTICE DE COPYRIGHT # # Copyright 1999-2000 Virgie Tous droits rÈsÈrvÈs. # # # # Rapid'o compteur peut Ítre utilisÈ par toute personne ayant telecharger # # le programme sur le site "Le cgi.net". # # # # Il est interdit ý quiconque de modifier ce script, mis ý part les lignes # # d'entete, sans accord de son crÈateur. # # Il est interdit de le difuser ý titre gratuit ou payant sur internet ou # # par n'importe quel autre moyen. # # # # Pour obtenir ce programme, allez sur le site : http://lecgi.net # ############################################################################## # DEBUT DE LA CONFIGURATION ############################################################################ # Nom du fichier contenant le nombre de visiteurs : $fichier="compteur.dat"; # Nom du fichier contenant la liste des adresses ip : $fic_ip="ip.dat"; # Nombre d'heures avant qu'un visiteurs ne puissent etre recomptÈ : $temps="12"; # FIN DE LA CONFIGURATION (Il est interdit de changer les lignes ci dessous) ############################################################################ ############################################################################ ############################################################################ read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); if ($ENV{'QUERY_STRING'}) {$buffer = "$buffer\&$ENV{'QUERY_STRING'}";} @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $VALUE{$name} = $value; $Form{$name} .= "\0" if (defined($Form{$name})); $Form{$name} .= "$value"; } $adresse_ip = $ENV{'REMOTE_ADDR'}; $heure_debut=time; $heure_fin= time - ($temps*3600); print "Content-type: text/html\n\n"; if (!open (FILE, "$fichier")) { $visiteurs = "Le fichier $fichier n'existe pas ou les droits ne sont pas corrects"; goto SUITE; } open (FILEIP, "$fic_ip"); flock (FILEIP, 1); @ip = ; flock (FILEIP, 8); close (FILEIP); open (FILEIP, ">$fic_ip"); flock (FILEIP, 2); $ajouter=1; foreach $ligne (@ip) { ($ip,$temps) = split (/\|/, $ligne); if ($adresse_ip ne $ip && $temps >= $heure_fin) { print FILEIP "$ip\|$temps\|\n"; } if ($adresse_ip eq $ip && $temps >= $heure_fin) { $ajouter=0; print FILEIP "$ip\|$heure_debut\|\n"; } } if ($ajouter eq 1) { print FILEIP "$adresse_ip\|$heure_debut\|\n"; } else { &afficher; } flock (FILEIP, 8); close (FILEIP); open (FILE, "+<$fichier"); flock (FILE, 2); $visiteurs = ; $visiteurs++; seek (FILE,0,0); print FILE ("$visiteurs"); close (FILE); flock (FILE, 8); SUITE: print qq|document.write ("$visiteurs")|; exit; sub afficher { close (FILEIP); open (FILE, "$fichier"); flock (FILE, 1); $visiteurs = ; close (FILE); flock (FILE, 8); print qq|document.write ("$visiteurs")|; exit; }