run('SELECT * FROM sites WHERE host=?', [$_GET['for']])->fetch(); if ($site) { // TODO - for now all stats are de-facto public, this should not be true $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', [$site['id']])->fetchAll(); $byBrowsers = $pdo->run('SELECT browser, COUNT(*) as visits FROM visits WHERE site_id=? GROUP BY browser ORDER BY visits DESC', [$site['id']])->fetchAll(); $byPlatforms = $pdo->run('SELECT platform, COUNT(*) as visits FROM visits WHERE site_id=? 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(); } 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'); } } 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:

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

Top browsers

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

Top platforms

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

Top references

'; foreach ($byRefs as $page) { echo '
'.$page['ref']; echo ' ' . pct($page['visits'], $totalVisits) . '%
'; } } ?> Sitedomain#visits'; foreach ($sites as $site) { echo ''.$site['label'].''.$site['host'].''; if ($site['stats_public']) echo ''; echo $site['visits']; if ($site['stats_public']) echo ''; 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); }