私は自分のページの訪問用のカウンターを作成しようとしました。これは、1日に1回だけ各IPをカウントします。見つかったコードを転記して、それがどのように機能するかを理解し、後で他のいくつかの機能を実装しました。残念ながら、私の新しいコードは機能しません。
私がそれから作ったコード:
<?php
$timeReset = 86400; //24h
$ipPath = "ipsafe.txt";
$countPath = "counts.txt";
$timePath = "time.txt";
$ip = $REMOTE_ADDR;
$time = time();
$resetTime = $time+$timeReset;
$timeFile = fopen($timePath, "r+");
$timeData = fread($timeFile, filesize($timePath));
//if resetTime is passed -> Reset
if($time >= $timeData) {
//clear ipSafe
$ipFile1 = fopen($ipPath, "w+");
fclose($ipFile);
//set new resetTime
rewind($timeData);
fwrite ($timeData, $resetTime);
}
fclose($timeFile);
//creat IP-List
$ipData = file($ipPath);
while (list ($line_num, $line) = each ($ipData)) {
$digits = explode(",",$line);
}
//if IP was not saved in last timeframe
if(!in_array($ip, $digits))
{
//write new IP
$ipFile2=fopen($ipPath, "a+");
@flock($ipFile1,2);
fwrite($ipFile2, "$ip".",");
@flock($ipFile1,3);
fclose($ipFile2);
//increment counter
$countFile = fopen($countPath,"r+");
$countData = fread($countFile, filesize($countPath);
rewind($countFile);
$countData++;
fwrite($countFile, $countData);
fclose($countFile);
}
?>
次の質問で:
私のコードの何が問題になっていますか?
flockはファイルへのアクセスを管理するために使用されますが、なぜ同じファイルに異なる名前を使用する必要があるのですか?
あなたの提案をありがとう。
編集:
問題の説明にあまり具体的でなくてすみません。デバッガーを統合した後、「REMOTE_ADDR」を「$ _ SERVER ['REMOTE_ADDR']」に変更したため、1つのエラーを修正しました。今、私は次の問題を抱えています:
Warning: fopen(time.txt): failed to open stream: No such file or directory in .../counter.php on line 15
しかし、ファイルはcounter.phpと同じディレクトリにあります-もちろん、freadとfilesizeも失敗しました
Warning: fopen(ipsafe.txt): failed to open stream: Permission denied in .../counter.php on line 20
ファイルはまだ存在していませんが、「fopen($ ipPath、 "w +");」と思いました。存在しない場合は作成します。
Fatal error: Call to undefined function fb() in .../counter.php on line 26
「fb($ timeFile);」ではありません 値をfirePHPに送信しますか?