Как да напиша брояч на присъствие в Perl - Perl - УЕБ програмиране - Директория със статии

Създаване на таблици в MySQL.

Съответно създаваме таблица с горните колони:

Ако задачата на брояча е да преброи посетителите на един сайт, тогава можете да се ограничите до тази таблица, но ако трябва да преброите повече от един сайт, трябва да създадете друга таблица с колони:

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

    $w_database="брояч"; # Име на MySQL база данни $w_host="localhost"; # Адрес на MySQL сървър. Обикновено MySQL сървърът се инсталира заедно с уеб сървъра, така че пишем 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 = $Година + 1900; $Месец++; if($Month $check= $dbh->prepare("SELECT hits FROM counter WHERE ip='$ENV' AND vtime='$today'") die $DBI::errstr; # Вземете брой посещения, ако има запис. $check->execute() или die $check->errstr; $ipcheck = $check-& gt;fetchrow; # Под имаме предвид броя на попаденията на определената променлива.

    $referrl=$ENV; #Текуща страница $refererl =

    s///g; # Проверка за допълнителни знаци $hits=$ipcheck+1; # Плюс едно попадение (текущо)

    $където=$q; # препоръка (URL)

    #! туквмъкнете отметка $wherefrom за допълнителни знаци!

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

    След това показваме общия брой посетители и посетители за днес.

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

    $check2= $dbh->prepare("SELECT count(*) FROM counter") die $DBI::errstr; $check2->изпълни() или умри $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); $синьо = $im->colorAllocate(0,162,255);

    $im->правоъгълник(0,0,87,30,$червен); # Начертайте граница $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->правоъгълник(1,1,86,29,$бяло); # Бяла рамка $im->правоъгълник(0,0,87,30,$синьо); # Синя рамка $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; печат $im->png; # Изход на дисплея

    Код на брояча.Кодът на брояча се взема не само от снимката, но и от Java скрипта, който трябва да прехвърли страницата, от която е дошъл новият посетител. За да не се кешира броячът, струва си да вградите произволна стойност в неговия код. Пример: