2013-11-21 48 views
1

我在我的網站使用這個簡單的熱門計數器腳本。但它的值重置爲零或頻繁更改爲較低值(我沒有注意到具體的時間間隔)。腳本中是否有任何問題。請幫忙 ? file pathPHP命中計數器文本文件值經常重置?

<?php 

    // SETUP YOUR COUNTER 
    // Detailed information found in the readme.htm file 

    // Count UNIQUE visitors ONLY? 1 = YES, 0 = NO 
    $count_unique = 1; 

    // Number of hours a visitor is considered as "unique" 
    $unique_hours = 1; 

    // Minimum number of digits shown (zero-padding). Set to 0 to disable. 
    $min_digits = 5; 

    ############################# 
    #  DO NOT EDIT BELOW  # 
    ############################# 

    /* Turn error notices off */ 
    error_reporting(E_ALL^E_NOTICE); 

    /* Get page and log file names */ 
    $page = input($_GET['page']) or die('ERROR: Missing page ID'); 
    $logfile = 'logs/' . $page . '.txt'; 

    /* Does the log exist? */ 
    if (file_exists($logfile)) 
    { 
     /* Get current count */ 
     $count = intval(trim(file_get_contents($logfile))) or $count = 0; 
     $cname = 'tcount_unique_'.$page; 

     if ($count_unique==0 || !isset($_COOKIE[$cname])) 
     { 
      /* Increase the count by 1 */ 
      $count = $count + 1; 
      $fp = @fopen($logfile,'w+') or die('ERROR: Can\'t write to the log file ('.$logfile.'), please make sure this file exists and is CHMOD to 666 (rw-rw-rw-)!'); 
      flock($fp, LOCK_EX); 
      fputs($fp, $count); 
      flock($fp, LOCK_UN); 
      fclose($fp); 

      /* Print the Cookie and P3P compact privacy policy */ 
      header('P3P: CP="NOI NID"'); 
      setcookie($cname, 1, time()+60*60*$unique_hours); 
     } 

     /* Is zero-padding enabled? */ 
     if ($min_digits > 0) 
     { 
      $count = sprintf('%0'.$min_digits.'s',$count); 
     } 

     /* Print out Javascript code and exit */ 
     echo 'document.write(\''.$count.'\');'; 
     exit(); 
    } 
    else 
    { 
     die('ERROR: Invalid log file!'); 
    } 

    /* This functin handles input parameters making sure nothing dangerous is passed in */ 
    function input($in) 
    { 
     $out = htmlentities(stripslashes($in)); 
     $out = str_replace(array('/','\\'), '', $out); 
     return $out; 
    } 
    ?> 

回答

0

至於我的假設,當有來自用戶的龍頭壞我的文件/ O同時訪問,從而將其復位該復位發生。

解決方案:

  • 創建txt文件的及時備份和比較值從具有較高計數器文件發佈的值。
  • 切換到數據庫!