1,303 views
この記事は最終更新から 2213日 が経過しています。
「アクセス数が増えた!」
なんて喜んでいたら、実はロボットばかりだった…
アクセスカウンタの目的は
「どれだけの人に見ていただいているか?」
を知ることであり、情報収集目的のロボットのアクセスはカウントしたくない。
親切なことに、いくつかは上図のように 「私はロボットです」 というサインを残してくれるので、アクセスカウンタではこれを頼りにロボットのアクセスを除外してみる。
プログラム作成
(16) SQLiteでアクセスカウンタ作成 #4 (日別訪問数を記録) からの変更点は以下の2関数のみ。
CCounter.php
public static function is_bot(){ $ret = TRUE; $ua = (isset($_SERVER['HTTP_USER_AGENT']))? $_SERVER['HTTP_USER_AGENT'] : ""; if($ua == ""){ // HTTP_USER_AGENTが無い? goto tagEND; } // BOT判定 if(preg_match('/bot\//i', $ua) === 1){ goto tagEND; } $ret = FALSE; // BOTではない。 //-------------------------------------------------------------------------- tagEND: return $ret; } public function count_up(){ $cnt = 0; if($this->m_db == NULL){ // 未接続? goto tagEND; // 処理不要 } // ロボットならば無視 if(self::is_bot()){ goto tagEND; // 処理不要 } :