我想在我的網站上創建訪問者計數器,因此我試驗了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.
我找不到妨礙整體工作的問題。請幫助:(
對於這種類型的東西可以使用谷歌分析(或任何其他分析),它更容易實現(基本上你複製粘貼一段代碼),並不會殺死你的服務器。 要回答你的問題:我認爲你過於複雜的事情,創建一個簡單的查詢,按日期分組,並有今天的日期,你有今天的訪問者數 –
讓你的數據庫做的工作 - 從選擇計數(*)來自$ table_name的IP_ADDRESS,其中日期> $昨天)。如果您有任何有意義的訪問者數量,此代碼將需要很長時間才能運行。 –
嗯,這只是實驗,我從來沒有說過它會在我的網站中實際實現,只是我希望將訪問者數量添加到我的網站並找到方法來實現。謝謝@SzántóZoltán提供Google Analytics(分析)建議,同時看看:) – Polda18