[英]adding counter to php page to count the unique visitors
我想在我的網頁中添加一個計數器來統計訪問者的數量。 但是我的問題是,當我刷新頁面時,計數器增加1 ..我希望只有當具有另一個IP的新訪問者到達我的網頁時,計數器才會增加。 這是我的密碼。對不起,我的英語不好
index.php
<?php
session_start();
$ip = $_SERVER['REMOTE_ADDR'];
$_SESSION['current_user'] = $ip;
if(isset($_SESSION['current_user']))
{
$count = file_get_contents("counter.txt");
$count = trim($count);
$fl = fopen("counter.txt","w+");
fwrite($fl,$count);
fclose($fl);
}
else
{
$count = file_get_contents("counter.txt");
$count = trim($count);
$count = $count + 1;
$fl = fopen("counter.txt","w+");
fwrite($fl,$count);
fclose($fl);
}
由於不是基於數據庫的解決方案,因此,您可以嘗試以下基於文件的解決方案來計算唯一身份訪問者。 您已經在代碼中使用過counter.txt文件。
我試圖使用與您使用的相同的文件。 就我而言,我將IP地址存儲在該文件中。 我使用base64編碼功能只是為了隱藏IP地址。 將文件保存在安全的位置總是好事。 如果該文件丟失,則唯一訪問者IP將丟失。 參見以下功能:
function getUniqueVisitorCount($ip)
{
session_start();
if(!isset($_SESSION['current_user']))
{
$file = 'counter.txt';
if(!$data = @file_get_contents($file))
{
file_put_contents($file, base64_encode($ip));
$_SESSION['visitor_count'] = 1;
}
else{
$decodedData = base64_decode($data);
$ipList = explode(';', $decodedData);
if(!in_array($ip, $ipList)){
array_push($ipList, $ip);
file_put_contents($file, base64_encode(implode(';', $ipList)));
}
$_SESSION['visitor_count'] = count($ipList);
}
$_SESSION['current_user'] = $ip;
}
}
$ip = '192.168.1.210'; // $_SERVER['REMOTE_ADDR'];
getUniqueVisitorCount($ip);
echo 'Unique visitor count: ' . $_SESSION['visitor_count'];
Unique visitor count: 2
更改:
if(isset($_SESSION['current_user']))
至:
if($_SERVER['REMOTE_ADDR'] == $_SESSION['current_user'])
而且,您當然不需要從文件中獲取$ count,然后將相同的值寫回到文件中...? 如果$ _SERVER ['REMOTE_ADDR']與SESSION ['current_user']相匹配,則不執行任何操作。
嘗試將用戶IP存儲在數據庫中並檢查唯一用戶,
<?php
session_start();
if (!$_SESSION['status']) {
$connection = mysql_connect("localhost", "user", "password");
mysql_select_db("ip_log", $connection);
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO `database`.`table` (IP) VALUES ('$ip')");
mysql_close($connection);
$_SESSION['status'] = true;
}
?>
最佳易用代碼
嘗試將用戶IP存儲在數據庫中並檢查唯一用戶
$`servername` = "";
$username = "";
$password = "";
$`dbname` = "";
$`conn` = new `mysqli`($`servername`, $username, $password, $`dbname`);
if ($`conn`->connect_error) {
die("Connection failed: " . $`conn`->connect_error);
}
$address = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$name = `gethostname`();
$re = "select * from visitor where name='$name'";
$call = `mysqli_fetch_array`($re);
$as = `mysqli_num_rows`($call);
if($as == 0){
$`sql` = "UPDATE visitor SET visits = visits+1 WHERE name = '$name'";
}else{
$`sql` = "INSERT INTO visitor(visits,name,address) VALUE(1,'$name','$address')";
}
$`conn`->query($`sql`);
$`sql` = "SELECT visits FROM visitor WHERE id = 1";
$result = $`conn`->query($`sql`);
if ($result->`num_rows` > 0) {
while($row = $result->fetch_assoc()) {
$visits = $row["visits"];
}
} else {
$visits = "";
//echo $visits;
}
`$conn`->close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.