旧ブラウザの統計は実情に合わなくなったので作り直しました。
サーバ変数 のところでブラウザの銘柄が $_SERVER['HTTP_USER_AGENT']
で得られることを勉強しました。
このことを使って,このページをアクセスしたブラウザの銘柄を,SQLite を併用して数えてみましょう。
ブラウザ | 回数 |
---|---|
Edge (new) | 8 |
Edge (old) | 1 |
Firefox | 16 |
Opera (new) | 0 |
Opera (old) | 1 |
IE | 0 |
Chrome | 295 |
Safari | 79 |
Googlebot | 1 |
Other | 286 |
PHP部分のソース:
<?php try { $u = $_SERVER['HTTP_USER_AGENT']; if (strpos($u, 'Edge/')) { $x = 'Edge (old)'; } elseif (strpos($u, 'Edg/')) { $x = 'Edge (new)'; } elseif (strpos($u, 'Firefox/')) { $x = 'Firefox'; } elseif (strpos($u, 'OPR/')) { $x = 'Opera (new)'; } elseif (strpos($u, 'Presto/')) { $x = 'Opera (old)'; } elseif (strpos($u, 'Trident/')) { $x = 'IE'; } elseif (strpos($u, 'Chrome/')) { $x = 'Chrome'; } elseif (strpos($u, 'Safari/')) { $x = 'Safari'; } elseif (strpos($u, 'Googlebot/')) { $x = 'Googlebot'; } else { $x = 'Other'; } $db = new PDO('sqlite:データベースファイル'); $x = $db->quote($x); $sql = "update ua set cnt = cnt + 1 where browser = $x"; $result = $db->exec($sql) or die('<p>テーブルが更新できません</p>'); $sql = 'select * from ua'; echo '<table border="1">', "\n"; echo "<tr><th>ブラウザ</th><th>回数</th></tr>\n"; foreach ($db->query($sql) as $entry) { echo '<tr><td>', $entry['browser'], '</td><td>', $entry['cnt'], "</td></tr>\n"; } echo "</table>\n"; $db = null; } catch (PDOException $e) { echo '<p>エラー:', $e->getMessage(), '</p>'; } ?>
あらかじめサーバにログインして,例えば次のように打ち込んでおきます:
sqlite3 ファイル名 create table ua(browser text, cnt int); insert into ua values('Edge (new)', 0); insert into ua values('Edge (old)', 0); insert into ua values('Firefox', 0); insert into ua values('Opera (new)', 0); insert into ua values('Opera (old)', 0); insert into ua values('IE', 0); insert into ua values('Chrome', 0); insert into ua values('Safari', 0); insert into ua values('Googlebot', 0); insert into ua values('Other', 0); .quit
練習問題:訪問者をiPhone/Android/Windows/Macに分類してカウントするようにしてください。