ホーム | アーカイブ | 自己紹介 | ご意見はこちらへ | フォト・ギャラリ | 拡大縮小 | 管理画面

2004-05-29

Nucleus+PPhlogger (Power Phlogger)

Refererを表示する方法を探しているうちにアクセス解析に行き当たり、定番(?)のpphloggerをインストールすることになった。

みてると結構面白い。
そのうち飽きるかもしれないが、一応インストールの記録とか残しておく。


私が借りているサーバでは標準でアクセス解析ができる。
それならわざわざpphloggerなど入れる必要はないのだが、ちょっと試してみたかった。

以下のページを参考にさせていただいた。
PowerPhlogger使ってみました(1)
PowerPhlogger使ってみました(2)
アクセス解析 きたほたる.COM[XOOPS]

まずはPHPee.comからpploggerをgetする。
もうすぐphlogger3がリリースされるらしいが、今回はversion 2.2.5を使用する。

上記ページにもインストール記が詳しく書かれているのであえてここで書く事も無いかもしれないが、私が引っかかったことをメモしておく。

手順としては取ってきたファイルを解凍し、config.inc.phpを自分の環境に合わせて変更する。
############################

define('PPHL_DB_HOST'      , '********');      // MySQL server hostname
define('PPHL_DB_NAME'      , '********');      // name of your database
define('PPHL_DB_USER'      , '********');       // username
define('PPHL_DB_PWD'       , '********');       // password

ここで引っかかったのが、なんとMySQLのパスワードを忘れていたこと。
結局サーバにアクセスしてパスワードを設定しなおした。
おかげで、Nucleusのconfig.phpも変更することになった。
やってしまってから気が付いたのだが、このconfig.phpを見れば上記の情報は全てわかるのである。(→バカだな俺は)

解凍したフォルダーごとftpした後http://www.***.***/pphlogger/admin/setup.phpにアクセスし、使用言語を選択、次の画面に移動。

ステップ1と言う画面になり、PowerPhloggerのロケーションだの管理者のメールアドレスだのを入力する。
その下、
管理者の名前
管理者のパスワード
を入力するわけだが、これは今後pphloggerを利用するユーザとは別物でこの初期設定の最後に再度ユーザ名とパスワードの設定が必要でこいつが今後アクセス解析するときに使われるユーザ名とパスワードになる。

このユーザ名とパスワードを設定するときにメールアドレスを入力する欄がある。最初ここをブランクにしていたが、入力しておいたほうがよいようだ。
というのも、ユーザ登録が終了したところでpphloggerからメールが来るのだが、それにpphlogger.jsというファイルが貼布されており、これをサーバに転送しておく必要があるからだ。

 その後、必ずしもメールアドレスは入力する必要のないことがわかった。というのもpphloggerのインストール後、設定変更のページにちゃんとpphlogger.jsを取得するためのリンクがあるから。

このメールにはその後の設定方法、つまりは上記javascriptをどのようにしてアクセス解析したいページで利用するかがかかれている。
ま、以下をアクセス解析したいページに付け加えるだけだが。
<script language="JavaScript" type="text/javascript" src="pphlogger.js"></script>
<noscript><img alt="" src="http://www.nakachi.org/pphlogger/pphlogger.php?id=nakachi&st=img">
</noscript>

ここで注意したいのは
src="pphlogger.js"
の部分でこのままでは多分うまくいかない。
ここは
src="http://www.***.***/pphlogger.js"
などとすべきである。
これがわかるのにちょっとかかってしまった。
ただ、javascriptを使わず、phpのみで行くのなら不要である。

Nucleusの表のページには<%include%>を使って以下を読み込んでいる。
<!-- PowerPhlogger Code START -->
<script language="JavaScript" type="text/javascript" src="http://www.nakachi.org/pphlogger/pphlogger.js"></script>
<noscript><img alt="" src="http://www.nakachi.org/pphlogger/pphlogger.php?id=nakachi&st=img"></noscript>
<!-- PowerPhlogger Code END -->

後は待つのみ。

最初のsetupに使ったディレクトリはセキュリティ上アクセス制限したほうがよろしいとのコト。
幸い、私の使っているサーバではアクセス制限をユーザが設定可能であったのでその機能を使わせてもらった。

pphloggerの文字化け対策
PowerPhlogger文字化け対策を参考にさせてもらった。

検索に用いられたキーワードが化けるのを対策したかった。
すでにデータベースに保存されている分は変更きかないのだろうか。→ これはできないようだ。

あと、「Top 40 キーワード」の右下の「編集」をクリックして出てくるページで、キーワードをクリックするとdefaultではwww.google.comでそのキーワードを検索することになっている。
しかし、日本語がうまくencodeされず????で検索できない。
libraries/functions.lib.phpの690行あたりを以下のように変更して対応した。
case 'kw':
$mpdl_link = "<a href=\"http://www.google.co.jp/search?q=".urlencode(mb_convert_encoding($mpdl,"UTF-8","AUTO"))."&ie=UTF-8&hl=ja&lr=lang_ja"."\" target=\"_blank\"";
break;

とここまで書いてきて、pphloggerの文字化け対策の情報が散逸しているので、以下にまとめておく。
pphlogger 2.2.5の場合
1.libraries/functions.lib.phpの変更箇所。
a.412行目あたり(5行コメントアウト、mb_convert_encoding追加)とIE対策
//if( stristr(@$ie,  'UTF-8') || // Google (ie = input encoding)
//   stristr(@$oe,  'UTF-8') || // Google (oe = output encoding)
//  stristr(@$enc, 'utf8')  || // Altavista
//  stristr(@$cs,  'utf-8'))   // Alltheweb
//  $keywords = utf8_decode($keywords);
// added below
$keywords = mb_convert_encoding(urldecode($keywords), "EUC-JP""AUTO");
if (ereg("%u[0-9A-F][0-9A-F][0-9A-F][0-9A-F]",$keywords)) $keywords=escuni2euc($keywords);
$keywords = strtolower($keywords);

b.IE対策でfunctionを追加。ファイルの最後に書き加えた。
// convert "single IE escaped unicode" to "UTF-8"
// uni2utf8("%u65E5") returns "\xE5\xB1\x80"
function uni2utf8($uniescape)
{
    $c = "";
    
    $n = intval(substr($uniescape, -4), 16);
    if ($n < 0x7F) {        // 0000-007F
        $c .= chr($n);
    } elseif ($n < 0x800) { // 0080-0800
        $c .= chr(0xC0 | ($n / 64));
        $c .= chr(0x80 | ($n % 64));
    } else {                // 0800-FFFF
        $c .= chr(0xE0 | (($n / 64) / 64));
        $c .= chr(0x80 | (($n / 64) % 64));
        $c .= chr(0x80 | ($n % 64));
    }
    return $c;
}

// Convert "IE escaped Unicode" to "EUC-JP"
// escuni2euc("%u65E5%u672C%u8A9E123") returns "日本語"
function escuni2euc($escunistr)
{
    $eucstr = "";
   while(eregi("(.*)(%u[0-9A-F][0-9A-F][0-9A-F][0-9A-F])(.*)$"$escunistr$fragment)) {
        $eucstr = i18n_convert(uni2utf8($fragment[2]).$fragment[3], 'EUC-JP''UTF-8').$eucstr;
        $escunistr = $fragment[1];
    }
    return $fragment[1].$eucstr;
}

c.shortString()をマルチ文字対応にする。
248行目
function shortString($s,$limit,$zone,$cutBegin = true,$dots = '..') {
  if (strlen($s) > ($limit + $zone)) {
    if ($cutBegin) {
      return $dots.mb_strcut($s,-($limit-strlen($dots)));
    } else {
      return mb_strcut($s,0,$limit-strlen($dots)).$dots;
    }
  } else {
    return $s;
  }
}


2.dspStats.php
329行目。mb_convert_encoding を追加
while ($row = @mysql_fetch_array($res)) {
    $ArrLastRef[$i][0] = '<a href="'.htmlspecialchars($row[0]).'">'.htmlspecialchars(shortString(mb_convert_encoding(urldecode($row[0]),"EUC-JP","AUTO"),51,3)).'</a>';
    $ArrLastRef[$i][1] = $row[1];
    $i++;
  }


3.include/get_userdata.php
87行目。IE対策と共に以下のように変更。
//$referer = addslashes(urldecode($referer));
  if (ereg("%u[0-9A-F][0-9A-F][0-9A-F][0-9A-F]",$referer))
        $referer = escuni2euc($referer);//for IE unicode+urlencoding
  $referer = addslashes($referer);

4.refererを保管するデータベースのフィールドのタイプを[TEXT]に変更する。データのオーバーフローを防ぐため。

MySQLのデータベースをいじろうとphpMyAdminのインストールを試みた。
ところが、私が借りているサーバにはすでにインストールされており、ちゃんと使えた。
いろいろそろっているもんだ。

お気に召しましたらランキング: blog_ranking
 
最終更新日時:2005年12月21日 13:06:46


Comments

コメントはまだありません。

Add Comments

改行(<br>)や段落(<p>)は自動です。URLとE-mailは自動的にリンクされますので、<a>タグは不要です。









PPhlogger
Google - 08/08/17 14:21:07
pphlogger
Google - 08/08/14 20:49:53
nucleus ie euc 文字化け
Google - 08/08/13 21:57:10
pphlogger.js
Google - 08/08/13 20:18:13
pphlogger インストール
Google - 08/08/08 20:24:51
POWER PHLOGGER
Google - 08/08/07 16:42:57
POWER PHLOGGER
Google - 08/08/07 16:42:53
nucleus ユーザー登録 i18n_convert
Google - 08/08/05 14:31:59
nucleus ディレクトリ 変更 方法 config.php
Google - 08/08/02 00:03:57