FreeBSD/PHP-STATS の変更点


*&SIZE(15){''PHP-STATS''}; [#lc554f55]

[[xoops asGroupware>http://www2.x-groupware.org:8080/xoops/]]にて日本語化が行われているPHP-STATS 1.9.1インストール。~
ビジュアルはスマートでとってもいい感じです。さすがはイタリア製かな~
[[こちら>http://small.littlestar.jp/doki/catid_11_blogid_5.html]]のサイトでもインストール方法を掲載してますよ。~

+[[''環境''>#A]]
+[[''インストール''>#B]]
+[[''DB変更時のスクリプト変更点(PHP-STATS 1.9.1)''>#C]]
+[[''日本語化したページ一番下の文字が文字化け''>#D]]
+[[''昨日の訪問者数・昨日のヒット数を表示する。''>#E]]

**''環境''&aname(A); [#y572d04f]
FreeBSD 5.4~
PHP-4.40~
PHP-STATS 1.9.1~
MySQL-4.0.26~
~
&color(red){※注意:MySQLのバージョンが4.10以上だとXoopsと一緒で文字化けしてしまいます。};~
Xoopsと同じように、MySQLに渡す時に文字コードを指定すればいいはずですが、
該当場所が解明できませんでした。~
~
**''インストール''&aname(B); [#t6e55804]
■ソースをダウンロード~
本家サイトが移動したようで、ここにあります。~
http://www.phpstats.net/ ~
~
■日本語化パッチをダウンロード~
下の2つの日本語化パッチをダウンロードし、本家サイトからダウンロードしたもの(解凍するとstatsフォルダ)に
コピーして上書きする。~
[[Php-Stats_0.1.9_j.zip (ver. 0.43)>http://www2.x-groupware.org:8080/xoops/modules/cabinet/filedetail.php?fileid=63]]~
[[Php-Stats_0191_jp_sabun.zip (ver. 0.1)>http://www2.x-groupware.org:8080/xoops/modules/cabinet/filedetail.php?fileid=72]]~
~
■config.phpの編集~
 $option['host']='MySQLサーバーのIPアドレスかサーバー名';
 $option['database']='データベース名を記入'; 
 $option['database']='ユーザー名を記入';
 $option['user_db']='パスワードを記入';
 $option['script_url']='Php-Statsの設置ディレクトリをフルパスで記入'; 
 $option['script_url']='password'; // Password
 $option['prefix']='php_stats';データベーステーブルの接頭語
 $option['check_new_version']=0;本サイトに新しいバージョンをチェックしにいくかどうか
 0はしないです。
~
■サイトにアップ~
ftpなどで、statsフォルダごとアップします。~
パーミッションは以下のように設定します。~
|777|アップロードしたディレクトリ|
|~|option|
|666|config.php|
|766|admin.php、click.php、download.php、escludi.php、php-stats.php|
|~|php-stats.recjs.php、php-stats.recphp.php、tracking.php、view_stats.js.php|
~
■オンラインでの設定~
ラウザで,http:/設置先のURL/setup.php をアクセス。~
後はウィザードに沿って進んでいけば、大体わかると思います。

**''DB変更時のスクリプト変更点(PHP-STATS 1.9.1)''&aname(C); [#k57d8ba5]
このファイルのDBサーバの個所を書き換えます。~
~
▼&color(red){config.php:25:};
 $option['host']='DBサーバ';                     // Indirizzo server MySQL o IP
▼&color(red){option/php-stats-options.php:6:};
 'host'=>'DBサーバ',

**''日本語化したページ一番下の文字が文字化け''&aname(D); [#s18fc1b5]
このファイルをEUCに変換すると正常表示されます。
 templates/default/admin.tpl

**''昨日の訪問者数・昨日のヒット数を表示する。''&aname(E); [#r46f5221]
「カウンタを表示させるスクリプトの生成」という項目があり、~
「オンラインユーザー数」「今日の訪問者数」「本日のヒット数」「合計訪問者数」「合計ヒット数」を~
表示するコードについては簡単に生成できます。~
これに「昨日の訪問者数」「昨日のヒット数」を表示できるようにしてみます。~
~
◇/stats/view_stats.js.php 107行目あたり
 case '4':
 list($hits)=@mysql_fetch_row(sql_query("SELECT hits FROM $option[prefix]_counters LIMIT 1"));
 $toshow=$hits+$option['starthits'];
 break;

 //昨日の訪問者数
 case '5':
 $tmp1=0;
 $tmp2=0;
 $data_oggi=date("Y-m-d",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d")-1,date("Y")));
 $result=sql_query("SELECT visits FROM $option[prefix]_daily WHERE data='$data_oggi' LIMIT 1");
 list($tmp1)=@mysql_fetch_row($result);
 $result=sql_query("SELECT SUM(visits) FROM $option[prefix]_cache WHERE giorno='$data_oggi' LIMIT 1");
 list($tmp2)=@mysql_fetch_row($result);
 $toshow=$tmp1+$tmp2;
 break;
◇続いて、以下のソースを挿入します。	
 //昨日のページビュー数
 case '6':
 $tmp1=0;
 $tmp2=0;
 $data_oggi=date("Y-m-d",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d")-1,date("Y")));
 $result=sql_query("SELECT hits FROM $option[prefix]_daily WHERE data='$data_oggi' LIMIT 1");
 list($tmp1)=@mysql_fetch_row($result);
 $result=sql_query("SELECT SUM(hits) FROM $option[prefix]_cache WHERE giorno='$data_oggi' LIMIT 1");
 list($tmp2)=@mysql_fetch_row($result);
 $toshow=$tmp1+$tmp2;
 break;
 
 //--今月の訪問者数----
 case '7':
 $tmp1=0;
 $tmp2=0;
 $data_oggi=date("Y-m-",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d"),date("Y")));
 $result=sql_query("SELECT SUM(visits) FROM $option[prefix]_daily WHERE data like '$data_oggi%' LIMIT 1");
 list($tmp1)=@mysql_fetch_row($result);
 $result=sql_query("SELECT SUM(visits) FROM $option[prefix]_cache WHERE giorno like '$data_oggi%' LIMIT 1");
 list($tmp2)=@mysql_fetch_row($result);
 $toshow=$tmp1+$tmp2;
 break;
 //--------------------
 
 //--先月のページビュー数---
 case '10':
 $tmp1=0;
 $tmp2=0;
 $data_oggi=date("Y-m-",mktime(date("G")-$option['timezone'],date("i"),0,date("m")-1,date("d"),date("Y")));
 $result=sql_query("SELECT SUM(hits) FROM $option[prefix]_daily WHERE data like '$data_oggi%' LIMIT 1");
 list($tmp1)=@mysql_fetch_row($result);
 $result=sql_query("SELECT SUM(hits) FROM $option[prefix]_cache WHERE giorno like '$data_oggi%' LIMIT 1");
 list($tmp2)=@mysql_fetch_row($result);
 $toshow=$tmp1+$tmp2;
 break;
 //--------------------
 
 //--今年のページビュー数---
 case '11':
 $tmp1=0;
 $tmp2=0;
 $data_oggi=date("Y-",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d"),date("Y")));
 $result=sql_query("SELECT SUM(hits) FROM $option[prefix]_daily WHERE data like '$data_oggi%' LIMIT 1");
 list($tmp1)=@mysql_fetch_row($result);
 $result=sql_query("SELECT SUM(hits) FROM $option[prefix]_cache WHERE giorno like '$data_oggi%' LIMIT 1");
 list($tmp2)=@mysql_fetch_row($result);
 $toshow=$tmp1+$tmp2;
 break;
 
 //--最高訪問者(ページビュー)数---
 case '12':
 $tmp1=0;
 $result=sql_query("SELECT MAX(hits) FROM $option[prefix]_daily WHERE data like '%' LIMIT 1");
 list($tmp1)=@mysql_fetch_row($result);
 $toshow=$tmp1;
 break;
 
 //--訪問者(ページビュー)の平均数---
 case '13':
 $tmp1=0;
 $result=sql_query("SELECT round(avg(hits),0) FROM $option[prefix]_daily WHERE data like '%' LIMIT 1");
 list($tmp1)=@mysql_fetch_row($result);
 $toshow=$tmp1;
 break;
 
 //--直近の日〜土の7日間の訪問者(ページビュー)数---
 case '14':
 $tmp1=0;
 $week=date("w",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d"),date("Y")))+1;
 $data_oggi=date("Y-m-d",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d")-$week,date("Y")));
 $data_7dayago=date("Y-m-d",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d")-$week-6,date("Y")));
 $week=date("w",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d"),date("Y")));
 $data_oggi=date("Y-m-d",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d"),date("Y")));
 $data_7dayago=date("Y-m-d",mktime(date("G")-$option['timezone'],date("i"),0,date("m"),date("d")-$week,date("Y")));
 $result=sql_query("SELECT SUM(hits) FROM $option[prefix]_daily WHERE data between '$data_7dayago' and '$data_oggi'");
 list($tmp1)=@mysql_fetch_row($result);
 $toshow=$tmp1;
 break;

各項目の表示するためのソースは、以下のようになります。

・オンラインユーザー数
 */stats/view_stats.js.php?mode=0&style=8&digits=4
・本日の訪問者数
 */stats/view_stats.js.php?mode=1&style=8&digits=4
・本日のヒット数
 */stats/view_stats.js.php?mode=2&style=8&digits=4
・合計訪問者数
 */stats/view_stats.js.php?mode=3&style=8&digits=5
・合計ヒット数
 */stats/view_stats.js.php?mode=4&style=8&digits=5
・昨日の訪問者数
 */stats/view_stats.js.php?mode=5&style=8&digits=4
・昨日のヒット数
 */stats/view_stats.js.php?mode=6&style=8&digits=4
・今月の訪問者数
 */stats/view_stats.js.php?mode=7&style=8&digits=4
・先月のページビュー数
 */stats/view_stats.js.php?mode=10&style=8&digits=4
・今年のページビュー数
 */stats/view_stats.js.php?mode=11&style=8&digits=4
・最高訪問者(ページビュー)数
 */stats/view_stats.js.php?mode=12&style=8&digits=4
・訪問者(ページビュー)の平均数
 */stats/view_stats.js.php?mode=13&style=8&digits=4
・直近の日〜土の7日間の訪問者(ページビュー)数
 */stats/view_stats.js.php?mode=14&style=8&digits=4