イメージ付のアクセスカウンター
ファイルの読み書きを勉強したので、アクセスカウンターを作ってみました。
「実行」をクリックするとカウンタが表示される(はず)です。
6秒経たないとボタンを押してもカウントは増えません。
サンプル
ボタンが押されていません。
ソース
<form method=post action=""> <input type="hidden" name="answer" value="start"> <input type="submit" value="実行"> </form> <?php //実行が押されたら if(isset($_POST['answer'])) { $logfile = "./count.log"; if ($fn = @fopen($logfile, 'r')){ $str = trim(fgets($fn)); fclose($fn); } //explodeは「<>」で区分された文字列を、分割して変数名に代入するための関数です。 //listは配列に入れるための関数です。 list($counter,$wDate,$ip)=explode("<>", $str); //取得した文字列 //print "取得した文字列:".$str."<BR><BR>"; //前回のIPと日付 $zenkai_ip = $ip; $zenkai_hizuke = $wDate; //今回のIPと日付 $konkai_ip = $_SERVER["REMOTE_ADDR"]; $konkai_hizuke = date("Y/m/d H:i:s"); //日付からタイムスタンプを取得 $d1 = strtotime($zenkai_hizuke); $d2 = strtotime($konkai_hizuke); $keika_time = $d2 - $d1; //間隔を秒で設定 $kankaku = 60; //(同じIPで6$kankaku秒以内はカウントしない if ($konkai_ip == $zenkai_ip and ($keika_time <=$kankaku)) { } else{ //カウントアップします $counter = $counter + 1; //そのまま今度はファイルに書くための文字列を作成 $str=$counter."<>".date("Y/m/d H:i:s")."<>".$_SERVER["REMOTE_ADDR"]; //これで書き込み if( $fn = @fopen($logfile, 'w')){ fwrite($fn, $str); fclose($fn); } } //カウンタを5桁で表示(%は余りを求める演算子) echo "<p>"; echo "<center>"; echo "<img src=\"./counter/cimg/",($counter /10000) % 10, ".gif\">"; echo "<img src=\"./counter/cimg/",($counter /1000) % 10, ".gif\">"; echo "<img src=\"./counter/cimg/",($counter / 100) % 10, ".gif\">"; echo "<img src=\"./counter/cimg/",($counter / 10) % 10, ".gif\">"; echo "<img src=\"./counter/cimg/",($counter ) % 10, ".gif\">"; echo "</center>"; } else { echo 'ボタンが押されていません。'; } ?>