PHP重写整个文件

PHP重写整个文件,php,timestamp,fwrite,Php,Timestamp,Fwrite,好的,脚本基本上可以工作,但是每次我刷新data.txt文件时,我都希望它将每个条目添加到新文件中的data.txt中 示例:1.1.1.1 7月18日下午2:03:17 <?php date_default_timezone_set("Europe/London"); function GetAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet { $

好的,脚本基本上可以工作,但是每次我刷新data.txt文件时,我都希望它将每个条目添加到新文件中的data.txt中

示例:1.1.1.1 7月18日下午2:03:17

<?php
date_default_timezone_set("Europe/London");
function GetAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

$adresseip = GetAddr();

function sec2hms($sec, $padHours = false) {
        @$hms = "";
        @$days = intval($sec/86400);
        if($days > 0 ) {
            if($days == 1) {
                @$hms .= (($padHours)?str_pad($hours, 2, "0", STR_PAD_LEFT).':':@$days.' Day');
            } else {
                @$hms .= (($padHours)?str_pad($hours, 2, "0", STR_PAD_LEFT).':':@$days.' Days');
            }
        }
        @$sec-= ($days*86400);
        @$hours = intval(intval($sec) / 3600);
        if($hours > 0) {
            if($days > 0) { @$s = ', '; }
            if($hours == 1) {
                @$hms .= @$s.(($padHours)?str_pad($hours, 2, "0", STR_PAD_LEFT).':':@$hours.' Hour');
            } else {
                @$hms .= @$s.(($padHours)?str_pad($hours, 2, "0", STR_PAD_LEFT).':':@$hours.' Hours');
            }
        }
        @$minutes = intval(($sec / 60) % 60);
        if($minutes > 0) {
            if($hours > 0) { @$d = ', '; }
            if($minutes == 1) {
                @$hms .= @$d.str_pad($minutes, 2, "0", STR_PAD_LEFT) . ' Minute';
            } else {
                @$hms .= @$d.str_pad($minutes, 2, "0", STR_PAD_LEFT) . ' Minutes';
            }
        }
        @$seconds = intval($sec % 60);
        if($seconds > 0) {
            if($minutes > 0) { @$p = ', '; }
            if($seconds == 1) {
                @$hms .= @$p.str_pad($seconds, 2, "0", STR_PAD_LEFT) . ' Second';
            } else {
                @$hms .= @$p.str_pad($seconds, 2, "0", STR_PAD_LEFT) . ' Seconds';
            }
        }

        return @$hms;
    }
function report($data) {
        $time = date('g:i:s A', time());
        echo "[$time] $data\n";
    }
$d= date('F jS @ g:i:s a'); 
$fp = fopen('data.txt', 'r+');
fwrite($fp,"$adresseip - $d");
fclose($fp);
?>

这是:

$fp = fopen('data.txt', 'r+');
将指针放在文件的开头,导致覆盖。使用

$fp = fopen('data.txt', 'a+');
相反

更多信息请参见文档:

'r+'开放阅读和写作;将文件指针放在文件的开头

“a+”开放阅读和写作;将文件指针放在文件末尾。如果文件不存在,请尝试创建它


在模式下使用
fopen
时,文件指针位于文件的开头,这会导致覆盖数据。

我在哪里添加“/n”以开始新行?a+起作用了,但它们在每行之后都在同一条线上;)。可能在您的
fwrite
通话中。您应该在Unix系统上为换行符添加
\n
(反斜杠),
\r
用于MAC和
\r\n
用于Windows;它只增加了/N行。@ AaronPrntscr不<代码> /N< /代码>,但是<代码> \n>代码> @ AaronPrntscr,您可以考虑接受这里的一个答案,这两个答案基本上都是正确的。谢谢你有
$fp=fopen('data.txt','r+')
尝试使用
$fp=fopen('data.txt','a+')
$fp=fopen('data.txt','a')。两者都可以,区别在于一个将添加到文件顶部,而另一个将添加到最后一个条目。你挑吧。
$fp = fopen('data.txt', 'a+');