差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
dokuwiki:pageviewcount [2006/11/09] – 作成 administratordokuwiki:pageviewcount [2022/03/12] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 +====== PageViewCountプラグイン ======
 +ページのアクセスをカウントします。
 +  * 連続した同じIPアドレスはカウントしません。
 +  * データベースを使うので、ファイルを作成しません。
 +  * データベースの設定は、ユーザー認証のMySQLの設定を使うので、設定済みであれば設定不要。
 +  - データベースにテーブルを作成しておく。<code mysql>
 +CREATE TABLE `pageview` (
 +  `id` varchar(255) NOT NULL DEFAULT '',
 +  `views` int(15) unsigned NOT NULL DEFAULT '0',
 +  `ip` varchar(15) DEFAULT NULL,
 +  PRIMARY KEY (`id`)
 +)
 +</code>
 +  - inc/pageviewcount.phpを新規に作成する<code php>
 +<?php
 +global $ID;
 +$pvc_server=$conf['auth']['mysql']['server'];
 +$pvc_user=$conf['auth']['mysql']['user'];
 +$pvc_password=$conf['auth']['mysql']['password'];
 +$pvc_database=$conf['auth']['mysql']['database'];
 +$pvc_table="pageview";
 +$pvc_ip = $_SERVER['REMOTE_ADDR'];
 +$con = @mysql_connect ($pvc_server, $pvc_user, $pvc_password);
 +if ($con) {
 +  $res=mysql_select_db($pvc_database, $con);
 +  if ($res) {
 +    $query = "SELECT views,ip FROM $pvc_table WHERE id = '$ID'";
 +    $res = @mysql_query($query, $con);
 +    $row = @mysql_fetch_object($res);
 +    $views = intval($row->views);
 +    if (@mysql_num_rows($res) == 0) {
 +      $query = "INSERT INTO $pvc_table VALUES ('$ID','1', '$pvc_ip')";
 +      $res2 = @mysql_query($query, $con);
 +      $views = 1;
 +    } else {
 +      if ($pvc_ip != $row->ip) {
 +        $views++;
 +        $query = "UPDATE $pvc_table SET ip='$pvc_ip', views='$views' WHERE id = '$ID'";
 +        $res2 = @mysql_query($query, $con);
 +      }
 +    }
 +    $fn .= " ($views views)";
 +  }
 +}
 +</code>
 +  - inc/template.phpを編集\\ "function tpl_pageinfo"を検索し、下記のようにinclude行を挿入する。<code php>
 +function tpl_pageinfo(){
 +  global $conf;
 +  global $lang;
 +  global $INFO;
 +  global $REV;
  
 +  // prepare date and path
 +
 +  $fn = $INFO['filepath'];
 +  if(!$conf['fullpath']){
 +    if($REV){
 +      $fn = str_replace(realpath($conf['olddir']).DIRECTORY_SEPARATOR,'',$fn);
 +    }else{
 +      $fn = str_replace(realpath($conf['datadir']).DIRECTORY_SEPARATOR,'',$fn);
 +    }
 +  }
 +  $fn = utf8_decodeFN($fn);
 +  $date = date($conf['dformat'],$INFO['lastmod']);
 +
 +include('pageviewcount.php');
 +</code>