Licznik na stronie WWW

Jeśli ktoś chciałby umieścić sobie licznik na stronie www
publikowanej na naszym serwerze to musi sobie wkleić taki
kod HTML do swojego pliku np. index.html :

<font face="Helvetica" size="-1">
Strona została wyświetlona
<!--#exec cgi="/cgi-bin/robcount.pl" -->
razy od 17.04.2001 roku.
</font>

A jeśli ktoś chciałby mieć swój własny licznik (przerobiony lub zupełnie inny) musi mieć podaną ścieżkę dostępu do swojego skryptu z licznikiem np. jeśli skrypt licznika robcount.pl jest w katalogu hal/public_html/cgi-bin

<h4>Jesteś <!--#exec cgi="/cgi-bin/hal/robcount.pl" --> użytkownikiem, który tu zajrzał<br>od 03.07.2001</h4>

Ponadto wymagane jest jeszcze aby ten kod znajdował się nie w pliku index.html lecz w pliku o nazwie index.shtml (to ważne - bez tego licznik działać nie będzie).

Zerowanie licznika-plik robcount.txt

Wyzerować licznik możesz otwierając plik
/home/httpd/counter_misc/robcount.txt (pod warunkiem , że nie masz przerobionego licznika do swoich potrzeb np. tak aby nie liczył wejść autora strony , w tym wypadku plik robcount.txt może być w innym miejscu np. hal/public_html/counter/robcount.txt i można go samemu stworzyć) i zerując wartości w linijkach odpowiedzialnych za swoje strony , na których masz licznik. UWAGA! plik robcount.txt musi mieć odpowiednie atrybuty (zobacz pytanie 54 - obrazek atrybuty skryptu cgi) .

Linijki te wyglądają np. tak:

/~hal/homepage/index.shtml``97``xxx
/~hal/homepage/homepage.shtml``253``xxx

Możesz również skasować całe swoje linijki. Jak ich nie będzie to skrypt
sam je utworzy automatycznie i zacznie liczyć od zera.

Skrypt licznika

Tak wygląda przerobiony skrypt licznika robcount.pl , tak aby nie zliczał wejść autora strony (pod warunkiem oczywiście , że ma stały adres IP) :


#!/usr/bin/perl

# declare the variables
$data = "/home/hal/public_html/counter/robcount.txt";
$digiturl = "http://www.local.pl/digits/digits2/";
$defaultdigit = "dg";
$defaultext = "gif";
$defaultfont = "arial";
$defaultcolour = "red";
@digitstart = ("dg", "bullet");
@digitext = ("gif", "gif");
@fonts = ("arial", "times", "kids", "comic sans ms");
@colours = ("red", "green", "orange", "blue");
$text = 0; # 0 -- graphic, 1 -- text
$rgraphic = 0; # 0 -- don't randomize graphics, 1 -- randomize
$formattext = 1; # 0 -- don't format text, 1 -- format
$rtextcolour = 0; # 0 -- don't randomize text color, 1 -- randomize
$rtextfont = 0; # 0 -- don't randomize font, 1 -- randomize

#########################################################################
# Don't change anything below here unless you know what you're doing :) #
#########################################################################

$use_cgi = 1;

$page = "$ENV{'DOCUMENT_URI'}";
$found = 0;
$count = 1;

srand(time ^ $$);

print "Content-type: text/html\n\n";

open (FILE, "$data") || die "Error opening file\n";

@lines = <FILE>;
close(FILE);
$sizelines = @lines;

open (FILE, ">$data") || die "Error opening file\n";

for ($a = 0; $a <= $sizelines; $a++) {

($temppage, $tempcount, $nochop) = split(/``/,$lines[$a]);

if ("$temppage" eq "$page")
{
if ($ENV{'REMOTE_ADDR'} ne '192.168.1.5')
{
$tempcount ++;
}
$count = $tempcount;
$found = 1;
}

if ($temppage) {
print FILE "$temppage``$tempcount``xxx\n";
}

}

if ($found == 0) {
print FILE "$page``$count``xxx\n";
}

close (FILE);

if ($text == 1) {

if ($formattext == 1) {

if ($rtextfont == 1) {
$temp = rand(@fonts);
print "<font face=\"$fonts[$temp]\" ";
} else {
print "<font face=\"$defaultfont\" ";
}

if ($rtextcolour == 1) {
$temp = rand(@colours);
print "color=\"$colours[$temp]\">";
} else {
print "color=\"$defaultcolour\">";
}

print "$count</font>";

}

else {

print "$count";

}

} else {

$compare = 1;
$digits = 0;

while ($compare <= $count) {
$digits ++;
$compare = $compare * 10;
}

for ($a = $digits; $a > 0; $a--) {

$compare = 1;

for ($b = 1; $b < $a; $b++) {
$compare = $compare * 10;
}

if ($count < $compare) {
$d[$a-1] = 0;
}
else {

for ($c = 1; $c < 10; $c++) {
if ($count >= ($c * $compare) && $count < (($c+1) * $compare)) {
$d[$a-1] = $c;
}
}

$count -= $d[$a-1] * $compare;

}

}

if ($rgraphic == 1) {
$temp = rand(@digitstart);
$defaultdigit = $digitstart[$temp];
$defaultext = $digitext[$temp];
}

for ($a = ($digits-1); $a >= 0; $a--) {
print "<img src=\"$digiturl$defaultdigit$d[$a]\.$defaultext\">";
}

}

Linijki wyróżnione czerwonym kolorem :

1. ścieżka dostępu do pliku robcount.txt (patrz punkt zerowanie licznika)

2.ścieżka dostepu do katalogów z cyframi do licznika ; można ściągnąć inne i zmienić katalog na swój

3.adres IP autora strony , którego wejść licznik ma nie zliczać

 

Strona powstała dzięki moim dociekaniom i pomocy naszego Administratora-Grzesia.
Dzięki Grześ !