CGIプログラミング(2005/5/26)
時間情報をソート
- 時間の並びがソートされていないので表示するときにソートする。
- テキスト32ページを参照
ここではインデックスで昇順に並び替えるksort()関数を使う。
IPアドレスの集計
ファイルから取り出したデータをそのまま連想配列のインデックスにする。
$IPaddr[$data[2]]++; データファイルの読み込みと集計のループ内
表示は月日や時間と同じ方法で。(ファイルの末尾)
<TABLE border="1" cellspacing="0" cellpadding="4"> <TR><TH>IPアドレス</TH><TH>件数</TH></TR> <?php foreach($IPaddr as $k=>$v){ echo "<TR><TD>"; echo $k . "</TD><TD>"; echo $v . "</TD></TR>"; } ?> </TABLE>
OSの種類を集計する
ユーザエージェント情報内のOS名を検索し、該当するOSの集計数をインクリメントする。
OS | 配列要素 | 検索文字列 |
---|---|---|
Windows XP | $OS['Windows XP'] | Windows NT 5.1 |
Windows 2000 | $OS['Windows 2000'] | Windows NT 5.0 |
Windows NT 4 | $OS['Windows NT 4'] | Windows NT 4 |
Windows 98 | $OS['Windows 98'] | Windows 98 |
Linux | $OS['Linux'] | Linux |
Mac OS X | $OS['Mac OS X'] | Mac |
if(ereg("Windows NT 5.1", $data[1])) $OS['Windows XP']++; elseif(ereg("Windows NT 5.0", $data[1])) $OS['Windows 2000']++; elseif(ereg("Windows NT 4", $data[1])) $OS['Windows NT4']++; elseif(ereg("Windows 98", $data[1])) $OS['Windows 98']++; ..... else $OS['Unknown']++;
このコードはIPアドレス集計の次に配置すればよい集計結果の表示はこれまでと同様の方法を使う。
ブラウザの集計
OSの集計と同じ方法を使う。
ブラウザ | 検索文字列 | 配列要素 |
---|---|---|
Internet Explorer 6.0 | MSIE 6.0 | $BRW['IE 6.0'] |
Internet Explorer 5.5 | MSIE 5.5 | $BRW['IE 5.5'] |
Internet Explorer 5.0 | MSIE 5.0 | $BRW['IE 5.0'] |
Netscape 6 | Netscape6 | $BRW['NN 6'] |
Firefox | Firefox | $BRW['Firefox'] |
Opera | Opera | $BRW['Opera'] |
棒グラフを表示する
次の部路グラムで棒グラフを描かせる。bar.phpの内容
<?php // 描画の作成 $im = imagecreate($_GET[val], 10); // 描画領域の色を白に $white = imagecolorallocate($im, 255, 255, 255); // 赤を用意 $red = imagecolorallocate($im, 255, 0, 0); // 塗りつぶし長方形を作成 imagefilledrectangle($im, 0, 0, $_GET[val], 10, $red); // ヘッダの設定 header('Content-Type: image/png'); // イメージを描く imagepng($im); ?>
$_GET[val]の部分が呼び出すときのval=値の値に置き換わる。
棒グラフを表示するには表示部に次の文を追加する。
<img src="bar.php?val=値">値の部分に変数や配列要素名
この文を集計用プログラムに追加し、表示できるかを確認する。
棒グラフの色を指定できるようにする
bar.phpへの引数にRGBによる色指定を追加する。
<img src="bar.php?val=数値&R=xx&G=xx&B=xx">
<?php // 描画の作成 $im = imagecreate($_GET[val], 10); // 描画領域の色を白に $white = imagecolorallocate($im, 255, 255, 255); // 色を作る $color = imagecolorallocate($im, $_GET[R], $_GET[G], $_GET[B]); // 塗りつぶし長方形を作成 imagefilledrectangle($im, 0, 0, $_GET[val], 10, $color); // ヘッダの設定 header('Content-Type: image/png'); // イメージを描く imagepng($im); ?>
プログラム
- jikoku.php(147)
- shuukei.php(160)
- bar.php(145)