• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのアクセスカウンターのバグについてです!)

PHPのアクセスカウンターバグについて

このQ&Aのポイント
  • PHPのアクセスカウンターのバグについて調査しました。
  • アクセスカウンターが日にちが変わると正常に動作しない問題が発生しています。
  • 解決策を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

書き込むサイズが短くなる(前のデータの残骸が影響する)可能性があります。fputsで書き出す前に ftruncate($fp, 0); としてください。 <?php $txt = 'counter.txt'; $fp = fopen($txt, 'r+'); if($fp !== false){ if(flock($fp, LOCK_EX)) { $counter = fgets($fp);//トータル 今日 昨日 日付 $count = explode(' ', $counter); if(date('Ymd') != $count[3]) { $count[3] = date('Ymd'); $count[2] = $count[1]; $count[1] = 0; } $count[0]++; $count[1]++; $counter = implode(' ', $count); rewind($fp); ftruncate($fp, 0); fputs($fp, $counter); flock($fp, LOCK_UN);} } fclose($fp);

ddmtpa3ugabc
質問者

お礼

お礼遅れました(。>A<。)すいません! ftruncate($fp, 0);これを記述したらちやんと動いてくれました(≧∇≦) 本当にありがとうございました!(^^)

その他の回答 (1)

  • bimson
  • ベストアンサー率40% (2/5)
回答No.2

たぶん2行目の r+ のせいだと思います fopenの r+ オプションとはファイルを開いてポインタを最初に持ってくるという方法です つまり 12345678 というファイルを開いて abcd をfputsすると abcd5678 となってしまいます fopenのオプションを w+ にすれば大丈夫だと思いますが、fopenやfcloseを使わないで、file_get_contentsとfile_put_contentsを使うとわかりやすいと思います

ddmtpa3ugabc
質問者

お礼

お返事ありがとうです!(≧∇≦) わかりました!次から file_get_contents やfile_put_contentsを使ってみます! 一応前の方の回答で動いていくれたのですが一応w+にしときます!(≧∇≦)うりがとうございました!(^^)

関連するQ&A