(21) SQLiteでアクセスカウンタ作成 #5 (Botを除外)

投稿者: | 2017年8月24日

この記事は最終更新から 831日 が経過しています。

「アクセス数が増えた!」
なんて喜んでいたら、実はロボットばかりだった…

アクセスカウンタの目的は
「どれだけの人に見ていただいているか?」
を知ることであり、情報収集目的のロボットのアクセスはカウントしたくない。

親切なことに、いくつかは上図のように 「私はロボットです」 というサインを残してくれるので、アクセスカウンタではこれを頼りにロボットのアクセスを除外してみる。

プログラム作成

(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;                //   処理不要
    }
    :

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)