[Release] Брояч на посещения

Backo

Well-Known Member
Joined
Jan 17, 2009
Messages
1,212
Reaction score
975
Сега ще Ви покажа как да си направите прост и много функционален прояч за посещения на Вашият уеб сайт.

Какво прави той? Той показва колко онлайн потребители има в момента, колко уникални посещения, импресии и най-много потребители онлайн има за деня, за миналия ден и общо.
Системата се състои от 1 файл, който ще трябва да добавите във всички файлове, в които искате да се води статистика на посещенията, като ще ви покажа по какъв начин после ще ги изведете.

Нека започнем с създаването на таблиците в базата данни:

Code:
    CREATE TABLE `visits` (
    `impresion_today` int(15) NOT NULL default '0',
    `max_online_today` int(5) NOT NULL default '0',
    `unique_yesterday` int(10) NOT NULL default '0',
    `impresion_yesterday` int(15) NOT NULL default '0',
    `max_online_yesterday` int(5) NOT NULL default '0',
    `total_max_online` int(10) NOT NULL default '0',
    `total_impresion` int(15) NOT NULL default '0',
    `today_date` varchar(10) NOT NULL default ",
    `date_unique` varchar(20) NOT NULL default ",
    `max_unique` int(10) NOT NULL default '0',
    `date_online` varchar(20) NOT NULL default "
    );

    CREATE TABLE `ips_visits` (
    `ip` varchar(15) NOT NULL default ",
    `timestamp` int(15) NOT NULL default '0',
    `date` varchar(10) NOT NULL default "
    );

След това създайте файл visit.php и сложете това в него:

Code:
    <?php
    // тук трябва да си добавите файла, който се свързва с базата данни ако слочайно той не се  изисква никаде другаде където сте include visit.php

    $time_online = 15; // колко време да показва дадено IP за онлайн (в минути)

    $stats_exits = @mysql_result(mysql_query("SELECT COUNT(*) FROM `visits`"), 0);
    if (!$stats_exits)
    mysql_query("INSERT INTO `visits` (`today_date`) VALUES ('".date("d.m.Y")."')");

    $count_ips_today = @mysql_result(mysql_query("SELECT COUNT(*) FROM `ips_visits` WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."' AND `date` = '".date("d.m.Y")."'"), 0);
    if ($count_ips_today)
    mysql_query("UPDATE `ips_visits` SET `timestamp` = '".(time() + ($time_online * 60))."' WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."' AND `date` = '".date("d.m.Y")."' LIMIT 1");
    else
    mysql_query("INSERT INTO `ips_visits` (`ip`,`timestamp`,`date`) VALUES ('".$_SERVER['REMOTE_ADDR']."','".(time() + ($time_online * 60))."','".date("d.m.Y")."')");

    $online_users = @mysql_result(mysql_query("SELECT COUNT(*) FROM `ips_visits` WHERE `date` = '".date("d.m.Y")."' AND `timestamp` > ".time()), 0);
    $unique_users = @mysql_result(mysql_query("SELECT COUNT(*) FROM `ips_visits` WHERE `date` = '".date("d.m.Y")."'"), 0);
    $unique_total = @mysql_result(mysql_query("SELECT COUNT(DISTINCT `ip`) FROM `ips_visits`"), 0);

    $date_last = date("d.M.Y");
    mysql_query("UPDATE `visits` SET `max_online_today` = '$online_users' WHERE `max_online_today` < '$online_users' LIMIT 1");
    mysql_query("UPDATE `visits` SET `total_max_online` = '$online_users', `date_online` = '$date_last' WHERE `total_max_online` < '$online_users' LIMIT 1");
    mysql_query("UPDATE `visits` SET `max_unique` = '$unique_users', `date_unique` = '$date_last' WHERE `max_unique` < '$unique_users' LIMIT 1");

    mysql_query("UPDATE `visits` SET `impresion_today` = `impresion_today` + 1, `total_impresion` = `total_impresion` + 1 LIMIT 1");

    $visits = mysql_fetch_object(mysql_query("SELECT * FROM `visits`"));
    if (date("d.m.Y") != $visits -> today_date)
    {
    $new_timestamp = mktime(0,0,0,date("m"),(date("d")-1),date("Y"));
    $unique_users_t = @mysql_result(mysql_query("SELECT COUNT(*) FROM `ips_visits` WHERE `date` = '".date("d.m.Y", $new_timestamp)."'"), 0);
    mysql_query("UPDATE `visits` SET `impresion_today` = '0', `max_online_today` = '0', `unique_yesterday` = '$unique_users_t', `impresion_yesterday` = '".$visits -> impresion_today."', `max_online_yesterday` = '".$visits -> max_online_today."', `today_date` = '".date("d.m.Y")."' LIMIT 1");
    }
    ?>

Готови сме. Сега този файл, чрез функцията include, трябва да бъде добавен във всички файлове, в които желаете да отчитате посещенията.

За да Ви показва статистиката на посещенията добавете това на мястото където искате са показва:

Code:
<p align="center"><b><u>Статистика за днес:</u></b></p>
<p align="center"><b>Онлайн:</b> <?=$online_users?></p>
<p align="center"><b>Уникални:</b> <?=$unique_users?><br /><b>Импресии:</b> <?=$visits -> impresion_today?><br /><b>Най-много онлайн:</b> <?=$visits -> max_online_today?></p>
<p align="center"><b><u>Статистика за вчера:</u></b></p>
<p align="center"><b>Уникални:</b> <?=$visits -> unique_yesterday?><br /><b>Импресии:</b> <?=$visits -> impresion_yesterday?><br /><b>Най-много онлайн:</b> <?=$visits -> max_online_yesterday?></p>
<p align="center"><b><u>Статистика от пускането на сайта:</u></b></p>
<p align="center"><b>Уникални:</b> <?=$unique_total?><br /><b>Най-много уникални:</b> <?=$visits -> max_unique?> на <?=$visits -> date_unique?><br /><b>Импресии:</b> <?=$visits -> total_impresion?><br /><b>Най-много онлайн:</b> <?=$visits -> total_max_online?> на <?=$visits -> date_online?></p>

Системата работи с MySQL не с MSSQL.
 
Last edited:
  • Like
Reactions: Nicky
Ето и снимка как изглежда всичко това