2013-07-15 31 views
0

我想統計用戶訪問的頁面總數。問題出在我的代碼中,當用戶訪問頁面時,計數器增加1,這沒問題,但是當用戶刷新頁面很多次時,計數器不斷增加。我想在第一次訪問用戶時增加計數器,但不是在刷新頁面時增加計數器。我該如何解決這個問題?我如何計算頁數視圖的次數?

+0

用戶cookie作爲標識 – softsdev

+0

您應該記錄用戶ip和日期時間,在訪問時檢查它是否已經訪問過該頁面,如果沒有增加計數。例如,您也可以將時間間隔限制爲半小時,並且您可以每天截斷該表,以便它不會填滿太多空間。 – Aleeeeee

+0

您可以做一些事情來防止:A)使用cookie /會話B)檢查用戶IP,useragent – Prix

回答

1

最好的方法是使用一些js跟蹤器,如Google Analytics.

如果您不想跟蹤頁面刷新,可以使用cookiesession來存儲上次發生增量的時間戳,所以您不會增加,直到它到期。

+0

特定用戶的會話時間應該是多少? – user2354209

+0

那麼你可以在會話期間存儲cookie,並且每次cookie沒有被設置時(每次用戶關閉瀏覽器並進入你的頁面)都會增加cookie。或者您可以將cookie存儲到最後,因此您將每24小時跟蹤一次獨特訪客。 –

+0

它仍然不值得用PHP來實現,更好地使用js跟蹤器。它已經關心刷新等等,它會給你更多的信息,比你自己收集。 –

1

使用sessions

<?php 
session_start(); 
if (!isset($_SESSION['visited'])) 
{ 
    $_SESSION['visited'] = 1; 
    //increase the page view counter... 
} 

然而,這也不會,如果用戶已禁用Cookie的工作,因爲沒有cookie支持,使瀏覽器無法保持會話ID(這是必要的會議工作)。因此,在瀏覽器中不刷新cookies仍然會產生太多的點擊。

要處理這些情況,您可以記住IP($_SERVER['REMOTE_ADDR'])並檢查給定IP是否已訪問您的頁面。請注意,該解決方案仍然很脆弱 - 依賴使用代理服務器的「複雜」攻擊仍然能夠計入太多的點擊次數。

最好的選擇是使用外部跟蹤系統,如Google Analytics

0

嘗試使用會話,一個很簡單的例子是:

<?php 
session_start(); 
$counter = 0; 

if(! isset($_SESSION['visited'])): 
     $counter +=1; 
     $_SESSION['visited'] = TRUE; 
     $_SESSION['counter'] = $counter; 
endif; 
echo $_SESSION['counter']; 
?> 
+0

最新$ _SESSION ['visited']? – user2354209

+0

$ _SESSION ['visited']是一個未初始化的會話,首次訪問時該值爲null。一旦用戶第一次訪問,它總是結果爲TRUE,然後在if語句中設置值,以便每當頁面重新加載時,if語句都將導致FALSE。 –

0

您可以使用Cookie來此。在訪問時檢查是否設置了cookie,如果沒有設置頁面的cookie(cookie的生命週期可能取決於你想要的),只有在未設置cookie時更新計數器。 如果您需要將計數器變得複雜 - 比使用Google Analytics等更好。