イメージ付のアクセスカウンター
ファイルの読み書きを勉強したので、アクセスカウンターを作ってみました。
「実行」をクリックするとカウンタが表示される(はず)です。
6秒経たないとボタンを押してもカウントは増えません。
サンプル
」で区分された文字列を、分割して変数名に代入するための関数です。
//listは配列に入れるための関数です。
list($counter,$wDate,$ip)=explode(“<>“, $str);
//取得した文字列
//print “取得した文字列:”.$str.”
“;
//前回の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 “
“;
echo “
“;
echo “
“;
echo “
“;
echo “
“;
echo “
“;
echo “
“;
echo ““;
} else {
echo ‘ボタンが押されていません。’;
}
?>
ソース
<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 'ボタンが押されていません。';
}
?>