简单的Site Stat脚本不从文件中收集数据,我有一个几乎完全可用的脚本

时间:2011-12-05 23:24:25

标签: php file views ip

我刚刚创建了一个写入文件的脚本,我在这里做了同样的事情,只添加了一个部分来读取文件并再次写入。我想要实现的目标很简单,但问题是我不知道,我试图让我的脚本写入一个基本上持有以下信息的文件

views:{viewcount}
date-last-visited:{MM/DD/YYYY}
last-ip:{IP-Adress}

现在我做了一些研究,并尝试了几种方法来读取数据,没有任何回复。我目前的代码如下。

<?php
$filemade = 0;

if(!file_exists("stats")){
    if(!mkdir("stats")){
        exit();
    }
    $filemade = 1;
}
echo $filemade;
$hwrite = fopen("stats/statistics.txt", 'w');

$icount = 0;

if(filemade == 0){

    $data0 = file_get_contents("stats/statistics.txt");

    $data2 = explode("\n", $data0);

    $data1 = $data_1[0];

    $ccount = explode(":", data1);

    $icount = $ccount[1] + 1;

    echo "<br>icount:".$icount."<br>";
    echo "data1:".$data1."<br>";
    echo "ccount:".$ccount."<br>";
    echo "ccount[0]:".$ccount1[0]."<br>";
    echo "ccount[1]:".$ccount1[1]."<br>";

}

$date = getdate();

$ip=@$REMOTE_ADDR; 

fwrite($hwrite, "views:" . $icount . "\nlast-viewed:" . $date[5] . "/" . $date[3] . $date[2] . "/" . $date[6] . "\nlast-ip:" . $ip);

fclose($hwrite);
?>

结果总是:

views:1
last-viewed://
last-ip:

视图永远不会上升,日期永远不会起作用,IP地址永远不会显示。

在最终决定提出问题之前,我已查看了很多来源,我想我会以这种方式获得更多相关信息。

期待一些回复。 PHP是我最新的语言,因此我不太了解。

我尝试了什么。

我试过了:

$handle_read = fopen("stats/statistics.txt", "r");//make a new file handle in read mode
$data = fgets($handle_read);//get first line
$data_array = explode(":", $data);//split first line by ":"
$current_count = $data_array[1];//get second item, the value

$handle_read = fopen("stats/statistics.txt", "r");//make a new file handle in read mode
$pre_data = fread($handle_read, filesize($handle_read));//read all the file data
$pre_data_array = explode("\n", $pre_data);//split the file by lines
$data = pre_data_array[0];//get first line
$data_array = explode(":", $data);//split first line by ":"
$current_count = $data_array[1];//get second item, the value

我也试过拆分而不是爆炸,但我被告知拆分已弃用且爆炸是最新的。

任何帮助都会很棒,谢谢你的时间。

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

<?php
if(!file_exists("stats")){
  if(!mkdir("stats")) die("Could not create folder");
}
// file() returns an array of file contents or false
$data = file("stats/statistics.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if(!$data){
  if(!touch("stats/statistics.txt")) die("Could not create file");
  // Default Values
  $data = array("views:0", "date-last-visited:01/01/2000", "last-ip:0.0.0.0");
}
// Update the data
foreach($data as $key => $val){
  // Limit explode to 2 chunks because we could have
  // IPv6 Addrs (e.x ::1)
  $line = explode(':', $val, 2);
  switch($key){
    case 0:
      $line[1]++;
      break;
    case 1:
      $line[1] = date('m/d/Y');
      break;
    case 2:
      $line[1] = $_SERVER['REMOTE_ADDR'];
      break;
  }
  $data[$key] = implode(':', $line);
  echo $data[$key]. "<br />";
}
// Write the data back into the file
if(!file_put_contents("stats/statistics.txt", implode(PHP_EOL, $data))) die("Could not write file");
?>