run('SELECT * FROM sites WHERE host=?', [$_GET['for']])->fetch(); if ($site && $site['stats_public']==0) { if (!isset($_GET['key']) || $_GET['key']!=$site['stats_key']) { // we need password $site = false; $error = 'These stats are locked. You need to provide right ?key in URL.'; } } if ($site) { if (!empty($_GET['date'])) { $visits = false; $totalVisits = $pdo->run('SELECT COUNT(*) FROM visits WHERE site_id=? AND date(ts, "unixepoch")=?', [$site['id'], $_GET['date']])->fetchColumn(); $byPaths = $pdo->run('SELECT path, COUNT(*) as visits FROM visits WHERE site_id=? AND date(ts, "unixepoch")=? GROUP BY path ORDER BY visits DESC LIMIT 10', [$site['id'], $_GET['date']])->fetchAll(); $byBrowsers = $pdo->run('SELECT browser, COUNT(*) as visits FROM visits WHERE site_id=? AND is_bot=0 AND date(ts, "unixepoch")=? GROUP BY browser ORDER BY visits DESC', [$site['id'], $_GET['date']])->fetchAll(); $byPlatforms = $pdo->run('SELECT platform, COUNT(*) as visits FROM visits WHERE site_id=? AND is_bot=0 AND date(ts, "unixepoch")=? GROUP BY platform ORDER BY visits DESC', [$site['id'], $_GET['date']])->fetchAll(); $byRefs = $pdo->run('SELECT ref, COUNT(*) as visits FROM visits WHERE site_id=? AND ref!="" AND date(ts, "unixepoch")=? GROUP BY ref ORDER BY visits DESC', [$site['id'], $_GET['date']])->fetchAll(); $byBots = $pdo->run('SELECT browser, COUNT(*) as visits FROM visits WHERE site_id=? AND is_bot=1 AND date(ts, "unixepoch")=? GROUP BY browser ORDER BY visits DESC', [$site['id'], $_GET['date']])->fetchAll(); } else { $labels = $visits = $uniques = []; for ($d=14; $d>=0; $d--) { $labels[date('Y-m-d', strtotime('-'.$d.'days'))] = date('Dd', strtotime('-'.$d.'days')); $visits[date('Y-m-d', strtotime('-'.$d.'days'))] = 0; $uniques[date('Y-m-d', strtotime('-'.$d.'days'))] = 0; } $last14days = $pdo->run('SELECT date(datetime(ts, \'unixepoch\')) as date, COUNT(*) as visits FROM visits WHERE site_id=:site_id AND date>=:date_min AND date<=:date_max GROUP BY date', [':site_id'=>$site['id'], ':date_min'=>date('Y-m-d', strtotime('-14 days')), ':date_max'=>date('Y-m-d')]); foreach ($last14days as $stat) { $visits[$stat['date']] = (int) $stat['visits']; } $last14daysUniq = $pdo->run('SELECT date(datetime(ts, \'unixepoch\')) as date, COUNT(*) as visits FROM visits WHERE site_id=:site_id AND is_unique=1 AND date>=:date_min AND date<=:date_max GROUP BY date', [':site_id'=>$site['id'], ':date_min'=>date('Y-m-d', strtotime('-14 days')), ':date_max'=>date('Y-m-d')]); foreach ($last14daysUniq as $stat) { $uniques[$stat['date']] = (int) $stat['visits']; } $totalVisits = $pdo->run('SELECT COUNT(*) FROM visits WHERE site_id=?', [$site['id']])->fetchColumn(); $byPaths = $pdo->run('SELECT path, COUNT(*) as visits FROM visits WHERE site_id=? GROUP BY path ORDER BY visits DESC LIMIT 10', [$site['id']])->fetchAll(); $byBrowsers = $pdo->run('SELECT browser, COUNT(*) as visits FROM visits WHERE site_id=? AND is_bot=0 GROUP BY browser ORDER BY visits DESC', [$site['id']])->fetchAll(); $byPlatforms = $pdo->run('SELECT platform, COUNT(*) as visits FROM visits WHERE site_id=? AND is_bot=0 GROUP BY platform ORDER BY visits DESC', [$site['id']])->fetchAll(); $byRefs = $pdo->run('SELECT ref, COUNT(*) as visits FROM visits WHERE site_id=? AND ref!="" GROUP BY ref ORDER BY visits DESC', [$site['id']])->fetchAll(); $byBots = $pdo->run('SELECT browser, COUNT(*) as visits FROM visits WHERE site_id=? AND is_bot=1 GROUP BY browser ORDER BY visits DESC', [$site['id']])->fetchAll(); } } else { if (!$error) { $error = 'We do not track this site.'; } } } else { $sites = $pdo->run('SELECT host, label, COUNT(*) AS visits, stats_public FROM visits INNER JOIN sites ON visits.site_id=sites.id GROUP BY site_id ORDER BY visits DESC'); } ?> stats <?php if ($site) echo ' - ' . $site['label']; ?>
Millions web counter:

$label) { echo '' . $label . ' '; } ?> no visits this day!

'; } if (count($byPaths)) { echo '

Top '.count($byPaths).' visited pages

'; foreach ($byPaths as $page) { echo '
'.$page['path'].''; echo ' ' . $page['visits'] . '× - ' . pct($page['visits'], $totalVisits) . '%
'; } } if (count($byBrowsers)) { echo '

Top browsers

'; foreach ($byBrowsers as $page) { echo '
'.$page['browser'].''; echo ' ' . $page['visits'] . '× - ' . pct($page['visits'], $totalVisits) . '%
'; } } if (count($byPlatforms)) { echo '

Top platforms

'; foreach ($byPlatforms as $page) { echo '
'.$page['platform']; echo ' ' . $page['visits'] . '× - ' . pct($page['visits'], $totalVisits) . '%
'; } } if (count($byRefs)) { echo '

Top references

'; foreach ($byRefs as $page) { echo '
'.$page['ref']; echo ' ' . $page['visits'] . '× - ' . pct($page['visits'], $totalVisits) . '%
'; } } if (count($byBots)) { echo '

Top bots

'; foreach ($byBots as $page) { echo '
'.$page['browser']; echo ' ' . $page['visits'] . '× - ' . pct($page['visits'], $totalVisits) . '%
'; } } ?> '.$error.''; } else { echo ''; foreach ($sites as $site) { echo ''; } echo '
Sitedomain#visits
'.$site['label'].''.$site['host'].''; if ($site['stats_public']) echo ''; echo $site['visits']; if ($site['stats_public']) echo ''; echo '
'; } ?>
about/privacy policy
PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]; $options = array_replace($default_options, $options); parent::__construct($dsn, $username, $password, $options); } public function run($sql, $args = NULL) { if (!$args) { return $this->query($sql); } $stmt = $this->prepare($sql); $stmt->execute($args); return $stmt; } } function pct($of, $total){ $p1 = $total / 100; return round($of / $p1); }