電子書籍の厳選無料作品が豊富!

こんばんわ。
こんなスクリプトを組んでみました。
phpは勉強を始めたばかりです。

<? echo "Hello world!!";?>
<br>
あなたのIPは <? echo $_SERVER["REMOTE_ADDR"]?> ですね?
<br>
ただいま<? print (date ("Y年m月d日(D) H時i分s秒"));?>です
<br><br>
<?php
$fp = fopen ("count.txt","r+");
$count = fgets ($fp, 32);
$count--;
fseek($fp, 0);
fputs($fp, $count);
flock($fp,2);
$count = sprintf("%05d", $count);
fclose($fp);
echo $count
?>

ログファイルは初期値として、10としました。
が9までは正常に減っていくのですが、次に8にならずに
89になってしまいます。

よろしくお願いします。

A 回答 (1件)

>fseek($fp, 0);


>fputs($fp, $count);
この書き方ですとファイルの先頭から上書き
(今回の場合ですと10の1文字目「1」を「9」に上書き)
するので90となってしまいます。

ですので
ftruncate($fp,0); //ファイルサイズを0にする
fseek($fp, 0);//ポインタを先頭に
fputs($fp, $count); //書込み

のようにすればよいと思います。
    • good
    • 0
この回答へのお礼

大変丁寧な解説、誠にありがとうございます。
ちゃんと動きました。ありがとうございました。!!

お礼日時:2009/04/11 22:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!