묻고답하기

다음 코드좀 봐주실래요...

<?
$fp = fopen("./log.txt","a+");
$string1 = "$REMOTE_ADDR"."t";
$string2 = date("Y-m-d H:i:s",time());
fwrite($fp, $string1);
fwrite($fp, $string2);
fwrite($fp, "n");
fclose($fp);
?>

이런 코드를 실행시키면 log.txt에

파일에 접근한 IP와 시간이 기록되는데,

이렇게 a+모드로 열면 파일의 맨아랫부분에 추가되더라구요.

제가 하고 싶은건 파일의 맷 윗줄에 최신 정보가 기록되도록 하고싶은건데...

해서~!

rewind() 함수를 이용하려 했더니,

a 모드나 a+ 모드에선 rewind() 함수를 이용할수 없다고 하더라구요.

그래서 어쩔수 없이 다음과 같이 r+ 모드를 사용해서 파일을 열었더니,,,

<?
$fp = fopen("./log.txt","r+");
$string1 = "$REMOTE_ADDR"."t";
$string2 = date("Y-m-d H:i:s",time());
fwrite($fp, $string1);
fwrite($fp, $string2);
fwrite($fp, "n");
fclose($fp);
?>

파일 포인터가 파일의 맨 앞으로 이동해서 열리는것 까지는 해결됐는데,

문제는, 겹처쓰기가 되더라는 겁니다.

즉, 맨 윗줄의 내용을 지우고 그위에 새로운 내용을 쓰더라구요.

fwrite()가 원래 겹쳐쓰는건가요?

아니면 어떻게 해야 파일의 맨 윗줄에 추가할수 있는지요?

고수님들의 답변을 기다리겠습니다... (__)