PHP アクセスカウンタ

イメージ付のアクセスカウンター

ファイルの読み書きを勉強したので、アクセスカウンターを作ってみました。

「実行」をクリックするとカウンタが表示される(はず)です。
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 'ボタンが押されていません。';
	}
?>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です