Як написати лічильник відвідуваності на Perl - Perl - WEB Програмування - Каталог статей

Створення таблиць у MySQL.

Відповідно створюємо таблицю з вищеописаними стовпцями:

Якщо завдання лічильника - підраховувати відвідувачів одного сайту, то можна обмежитися цією таблицею, якщо потрібно підраховувати більше одного сайту, варто завести ще одну таблицю зі стовпцями:

  • id сайту
  • відвідувачів було всього на сайті
  • відвідувачі за сьогодні
  • хіти за сьогодні
  • 200?'200px':''+(this.scrollHeight+5)+'px');"> #/usr/bin/perl -w use DBI; # Завантажуємо модуль для роботи з MySQL use GD;# Завантажуємо модуль для роботи з графікою

    $w_database="counter"; ім'я MySQL бази $w_host="localhost"; # Адерс MySQL сервера. Зазвичай MySQL сервер встановлений разом із web-server'ом, тому пишемо localhost. $w_user=""; # Логін для входу MySQL $w_password=""; # Пароль для входу в MySQL

    # З'єднуємося з MySQL за заздалегідь створеними: базою, користувачем, паролем $dbh = DBI->connect("DBI:mysql:$w_database:$w_host",$w_user,$w_password) die $DBI::errstr;

    # Обчислюємо сьогоднішню дату та призначаємо змінну, яка містить дату у форматі MySQL. ($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $Weekday, $DayOfYear, $IsDST) = localtime(time); $RealYear = $Year + 1900; $Month++; if($Month $check= $dbh->prepare("SELECT hits FROM counter WHERE ip='$ENV' AND vtime='$today'") die $DBI::errstr; # Беремо кількість хітів, якщо запис існує. $check->execute() or die $check->errstr; $ipcheck = $check->fetchrow;# Призначаємо кількість хітів зазначеної змінної.

    $ refererl = $ ENV; #Поточна сторінка $refererl =

    s///g; # Перевірка на зайві символи $hits=$ipcheck+1; # Плюс один хіт (поточний)

    $wherefrom=$q; # Реферал (URL)

    #! сюдивставити перевірку $wherefrom на зайві символи!

    if (!$ipcheck) < # старий відвідувач $dbh->do("update counter set vtime='$today', hits='$hits', lasturl='$refererl'") or die $DBI::errstr or die $DBI ::errstr; > else < # новий відвідувач $dbh->do("insert into counter (vtime,ip,referer,hits,firsturl,lasturl) values ​​('$today','$ENV','$wherefrom','$hits ','$refererl','$refererl')") or die $DBI::errstr or die $DBI::errstr; >

    Далі виводимо загальну кількість відвідувачів та відвідувачів за сьогодні.

    $check1= $dbh->prepare("SELECT hits FROM counter WHERE vtime='$today'") die $DBI::errstr; $check1->execute() or die $check->errstr; $nn="0"; while ($ipcheck1=$check1->fetchrow_hashref()) < $vhits=$vhits+$ipcheck1->; $nn++; >

    $check2= $dbh->prepare("SELECT count(*) FROM counter") die $DBI::errstr; $check2->execute() or die $check->errstr; $vall = $check2->fetchrow;

    Відображення лічильника.Лічильник можна взяти як з картинки, так і намалювати з нуля. Нижче наведено приклад промальовування лічильника по лініях.

    200?'200px':''+(this.scrollHeight+5)+'px');"> print "Content-type: image/png

    Формат документа - картинка

    $im = новий GD::Image(88,31); # Створюємо зображення розміром 88x31 пікселів

    # Призначаємо кольори $white = $im->colorAllocate(255,255,255); $red = $im->colorAllocate(255,0,0); $blue = $im->colorAllocate(0,162,255);

    $im->rectangle(0,0,87,30,$red); # Малюємо рамку $im->fill(86,29,$blue); # Заливаємо все синім $im->line(1,16,86,16,gbBrushed); Малюємо лінії $im->line(67,16,60,29,gbBrushed); $im->line(37,1,31,16,gbBrushed); $im->fill(85,28,$white); # Два поля, відокремленілініями, заливаємо білим $im->fill(1,1,$white); $im->rectangle(1,1,86,29,$white); # Біла рамка $im->rectangle(0,0,87,30,$blue); # Синя рамка $im->string(gdSmallFont,3,2,"$vhits",$blue); # Виводимо кількість сьогоднішніх хітів $im->string(gdSmallFont,3,16,"$vall",$white); # Виводимо кількість всіх відвідувачів $im->string(gdSmallFont,41,2,"WebZ.Ru", $white); $im->string(gdSmallFont,68,17,"$vtoday",$blue);# Виводимо кількість сьогоднішніх відвідувачів binmode STDOUT; print $im->png; # Виведення на екран

    Код лічильника. Щоб лічильник не кешувався, варто в його код вбудувати випадкове значення.