(1)キョロちゃんの第1作
キョロちゃんが初めて作ったスクリプトです。本を見ながらだそうですが、がんばりましたね。拍手
アゲインさんがソースに解説をつけてくれました。
※同じディレクトリに counter.log を入れてある都合上、ファイル名を元ファイルから変えてあります。
<p> <?php //ここで書き込むファイルの指定をしている $logfile = "./counter1.log"; //$counter変数を初期化して //ここで、./counter.logを開いて、読み込んでる //ここで、読み込んだ値を、$counter変数に代入してる。 //開いたファイルを閉じてる //で、ブラウザに表示するとき、取得した値に1を足して表示してる //今度は、書き込みモードで./counter.logを開いてる //で、ここで変更された$counterの値をファイルに書き込んでる //開いたファイルを閉じてる |
(2)リロード対策
アゲインさんが作成・解説してくださったカウンタースクリプトです。
<?php $logfile = "./counter2.log"; if ($fn = @fopen($logfile, 'r')){ //取得した文字列は、下記の通りで //これを分割して表示すると //そして新たに比較する情報は //この辺に条件を入れて、カウントするしないかを決める //で、そのまま今度はファイルに書くための文字列を作成 ?> |
(3)フラフィックカウンター
路子さんから送っていただいたソースに少し変更を加え、カウンタ画像を表示してみました。
考え方としては、カウンターの長さを取り出して数値を分解し数値と同じ画像ファイルを出力させるという単純なものです。
本に載ってなかったので全部自分で考えました。したがってあっているかどうか定かではありません(^^;
残念ながら今のところはカウントしないようです(^^;
<p> <?php if ($fn = @fopen($logfile, 'r')){ list($counter,$wDate,$ip)=explode("<>", $str);
$text_len = strlen($counter); $NewIP=$_SERVER["REMOTE_ADDR"]; if ($ip!=$NewIP OR $wDate!=$NewDate){ }else{ } $str=$counter."<>".$NewDate."<>".$NewIP; if( $fn = @fopen($logfile, 'w')){ |
(4)IPと秒数でカウント
(2)のサンプル(アゲインさんの解説)を見て作りました。今回は時間計算にチャレンジしてみました。PHPのデータ形式には日付というのはないようなのですが、タイムスタンプを使って計算させることができるようです。strtotime()関数は、日付文字列からタイムスタンプに変換してくれます。
<?php $logfile = "./count.log"; if ($fn = @fopen($logfile, 'r')){ //explodeは「<>」で区分された文字列を、分割して変数名に代入するための関数です。 list($counter,$wDate,$ip)=explode("<>", $str); //取得した文字列 //前回のIPと日付 //今回のIPと日付 //日付からタイムスタンプを取得 //間隔を秒で指定 echo "<br>前回IP: $zenkai_hizuke"; //カウントしない条件(同じIPで10分以内) echo "<br> 前回アクセスから$kankaku 秒を過ぎているのでカウントアップします。"; //そのまま今度はファイルに書くための文字列を作成 } |
(5)グラフィックカウンター
アゲインさんのヘルプのおかげで無事稼動することができました。設置場所は私のトップページです。
仕様は次のようにしましたが、ベースはアゲインさん添削の(2)のスクリプトです。
<?php if ($fn = @fopen($logfile, 'r')){ //explodeは「<>」で区分された文字列を、分割して変数名に代入するための関数です。 list($counter,$wDate,$ip)=explode("<>", $str); //取得した文字列 //前回のIPと日付 //今回のIPと日付 //日付からタイムスタンプを取得 //間隔を秒で設定 //(同じIPで6$kankaku秒以内はカウントしない //カウントアップします //そのまま今度はファイルに書くための文字列を作成 ?> |