2017-10-06 64 views
0

我想在我的網站上創建訪問者計數器,因此我試驗了MySQL數據庫並根據IP地址和訪問日期對訪問者進行計數(每天統計相同的IP地址作爲新訪客)。計數器具有今天的部分(僅計算當日訪問者數量),另一部分計入來自網站發佈的訪問者(或確切地說是啓動計數器)。但是,只有今天的部分工作。基於MySQL數據庫的訪問者計數器工作的一半

從數據庫中獲得的訪客數據(IP地址,日期和時間的使用):

// Get data from database 
$query_get_data = "select ip_address, access_date_time from $table_name;"; 

$mysql_conn = mysqli_connect('localhost', 'root', '', $db_name); 
if(!$mysql_conn) { 
    die("<strong>ERROR WHILE ACCESSING DATABASE `$db_name`!!!</strong>"); 
    // access the database was unsuccessful 
} 

$query = mysqli_query($mysql_conn, $query_get_data); 
if(!$query) { 
    die("<strong>ERROR WHILE FETCHING DATA FROM TABLE `$table_name` IN DATABASE `$db_name`!!!</strong>"); 
} 

計數從採集的數據的用戶:

if(mysqli_num_rows($query) > 0) { 
    while($row = mysqli_fetch_assoc($query)) { 
     if(isset($visitors_start_count[$row['ip_address'] . ' IN DATE ' . trim(explode(",", $row['access_date_time'])[0])])) { 
      ++$visitors_start_count[$row['ip_address'] . ' IN DATE ' . trim(explode(",", $row['access_date_time'])[0])]; 
     } else { 
      $visitors_start_count[$row['ip_address'] . ' IN DATE ' . trim(explode(",", $row['access_date_time'])[0])] = 1; 
     } 

     if(trim(explode(",", $row['access_date_time'])[0]) == trim(explode(",", $date_time)[0])) { 
      if(isset($visitors_today_count[$row['ip_address']])) { 
       ++$visitors_today_count[$row['ip_address']]; 
      } else { 
       $visitors_today_count[$row['ip_address']] = 1; 
      } 
     } 
    } 
} 

計數參觀總人數:

$visitors_num_start = 0; 
$visitors_num_today = 0; 

foreach($visitor_start_count as $counter) { 
    ++$visitors_num_start; 
} 

foreach($visitors_today_count as $counter) { 
    ++$visitors_num_today; 
} 

這是我的輸出:

Today is Fri Oct 6th 2017. 

You are the 1st visitor today here and 0th from websites launch. 

我找不到妨礙整體工作的問題。請幫助:(

+1

對於這種類型的東西可以使用谷歌分析(或任何其他分析),它更容易實現(基本上你複製粘貼一段代碼),並不會殺死你的服務器。 要回答你的問題:我認爲你過於複雜的事情,創建一個簡單的查詢,按日期分組,並有今天的日期,你有今天的訪問者數 –

+0

讓你的數據庫做的工作 - 從選擇計數(*)來自$ table_name的IP_ADDRESS,其中日期> $昨天)。如果您有任何有意義的訪問者數量,此代碼將需要很長時間才能運行。 –

+0

嗯,這只是實驗,我從來沒有說過它會在我的網站中實際實現,只是我希望將訪問者數量添加到我的網站並找到方法來實現。謝謝@SzántóZoltán提供Google Analytics(分析)建議,同時看看:) – Polda18

回答

1

你錯過了一個s!你是填充數據爲$visitors_start_count但隨後計數時使用$visitor_start_count(遊客小號 _start_count)。

總的來說,雖然,我會建議讓您的數據庫完成繁重的工作,並使用SELECT來使用條件來查找正確的行(今天,上週,從開始時起)和GROUP BY日期和IP地址。

+0

是的,就是這樣的事情:D該死的忘記''D:謝謝:) – Polda18

相關問題