div.main {margin-left: 20pt; margin-right: 20pt}
Счетчики посещений.
Пример 1.
Рассмотрим простейший текстовый счетчик,который подсчитывает общее количество посещений и выводит результат на экран.
Определяем путь к файлу,в котором будут храниться показания счетчика:
#!/usr/local/bin/perl
#textcounter
$file="counter1.txt";
Открываем файл на чтение,инициализируем счетчик и увеличиваем его значение на единицу:
open (STAT,"$file");
$count=;
close (STAT);
$count++;
Открываем файл счетчика на запись и записываем новое значение:
open (STAT,">$file");
print STAT $count;
close (STAT);
И,наконец,выводим показания счетчика на экран:
print "Content-type:text/htmlnn";
print $count;
Если сохранить данный код в файле counter1.cgi и открыть его в браузере,то на экране мы
увидим 1.Если перезагрузить страницу,показание счетчика увеличится на 1.
Выводить результаты счетчика можно как кому подскажет фантазия-или просто в виде числа,или
вставить его в таблицу,ипользовав в качестве бэкграунда какой-нибудь фон и т.д.
Вставить счетчик в html-страницу можно,используя SSI.Для этого в том месте,где предполагается
использовать счетчик,вставьте следующий код:
<!--#exec cgi="path/to/counter1.cgi" -->
Листинг примера 1.
#!/usr/local/bin/perl
#textcounter
$file="counter1.txt";
open (STAT,"$file");
$count=;
close (STAT);
$count++;
open (STAT,">$file");
print STAT $count;
close (STAT);
print "Content-type:text/htmlnn";
print $count;
|
Посмотреть работу
Пример 2.
Усложним предыдущий пример,например,добавив запись в лог-файл,для сбора статистики и
сделаем так,чтобы счетчик выводил результат в виде 6 цифр с заполнением впереди нулями,к
примеру так:000143
Предыдущая часть кода останется без изменений,только добавим переменную для количества цифр
результата.
#!/usr/local/bin/perl
#textcounter
$file="counter2.txt";
$dig_num=6;
open (STAT,"$file");
$count=;
close (STAT);
$count++;
open (STAT,">$file");
print STAT $count;
close (STAT);
Далее добавляем следующее:
open (DATA,">>counter.log");
$string=join ('&',$ENV {'REMOTE_ADDR'},$ENV {'REMOTE_HOST'},scalar localtime);
print DATA "$stringn";
close (DATA);
В этом случае скрипт создаст файл counter.log и всякий раз при перезагрузке страницы будет
записывать данные о пользователе-его IP-адрес,имя хоста и время посещения.
Думаю,с этим все понятно.Теперь определим,как скрипт будет выводить результат:
@digits=split (//,$count); #Читаем строку файла счетчика в массив и разбиваем на цифры.
$number=@digits; #Подсчитываем количество цифр.
if ($number < $dig_num) {
$diff=$dig_num-$number; #Сравниваем количество цифр в строке с заданным.
$count="0"x$diff.$count;
} else {
$count=$count;
}
print "Content-type:text/htmlnn"; #Выводим результат
print "$countn";
Листинг примера 2.
#!/usr/local/bin/perl
#textcounter
$file="counter2.txt";
$num_dig=6;
open (STAT,"$file");
$count=;
close (STAT);
$count++;
open (STAT,">$file");
print STAT $count;
close (STAT);
open (DATA,">>counter.log");
$string=join ('&',$ENV {'REMOTE_ADDR'},$ENV {'REMOTE_HOST'},scalar localtime);
print DATA "$stringn";
close (DATA);
@digits=split (//,$count);
$number=@digits;
if ($number < $dig_num) {
$diff=$dig_num-$number;
$count="0"x$diff.$count;
} else {
$count=$count;
}
print "Content-type:text/htmlnn";
print $count;
|
Посмотреть работу Скачать
Пример 3.
Далее приведу пример более сложного счетчика,который не только пишет в лог,но и подсчитывает
количество посещений общее и за сегодняшний день.Также имеется возможность просмотра
статистики через Интернет.Это может делать только хозяин счетчика,вводя свой пароль.
Начальная часть скрипта без изменений.
#!/usr/local/bin/perl
#textcounter
$file="counter.txt";
open (STAT,"$file");
$count=;
close (STAT);
$count++;
open (STAT,">$file");
print STAT $count;
close (STAT);
Далее выводим текущее время в более читабельном формате.Оно будет использоваться при
определении количества посещений за сегодня.
($sec,$min,$hour,$day,$month,$year,$day2)=localtime(time);
if ($hour>counter.log");
$string=join ('&',$ENV {'REMOTE_ADDR'},$ENV {'REMOTE_HOST'},scalar localtime);
print DATA "$stringn";
close (DATA);
|