更新:
这个问题暴露了过时,最糟糕的方法,visitors count
每个人都应该避免它。使用复杂的计数器。
您通常可以通过$_SERVER['REMOTE_ADDR']
变量获取 IP 地址。
由于我没有找到令人满意的“足够简单”的解决方案,所以我想出了自己的解决方案。创建一个名为的空文件ip.txt
并在代码中的某处使用它:
$ip_all = file("ip.txt");
$ip_cur = $_SERVER['REMOTE_ADDR']."\n";
if (!in_array($ip_cur, $ip_all)) {
$ip_all[] = $ip_cur;
file_put_contents("ip.txt", implode($ip_all));
}
echo "visitors: " . count($ip_all);
请注意,随着时间的推移,此文件可能会变得有些大,具体取决于您获得的访问者数量,因为条目不会过期并且会像 cookie 一样被删除。但正如已经提到的,我希望它尽可能简单并且不在乎。此外,我不想依赖 cookie,因为我怀疑网络爬虫和其他机器人会将它们送回。
简单的:
<?php
$cookie_name = 'counter';
$file = 'count.txt';
if (!isset($_COOKIE[$cookie_name])) {
$count = strval(file_get_contents($file));
file_put_contents($file, $count + 1);
setcookie($cookie_name, "Checked", time() + 111400);
}
?>
嗨,这是我用来注册访客 ip 的。
function get_IP() {
// ADRES IP
if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR');
else $ipaddress = 'UNKNOWN';
//
return $ipaddress;
}
您可以通过使用 w+ 打开文件来节省一些代码,它会自动为您创建它。
<?php
// Inits
$file = "/tmp/counts.html";
$cookie_namee='mycounterr-456';
// File, created if !exists
$fh = fopen($file, 'w+');
// Get the count, 0 if the file is empty or just created
$count = (int)fgets($fh);
//if cookie isn't already set,then increase counts
//by one + save ip, and set a cookie to pc...
if (!isset($_COOKIE[$cookie_namee])) {
// Increment and write the new count
fwrite($fh, ++$count);
setcookie($cookie_namee, "Checked", time() + 111400);
}
fclose($fh);
如果您想要一种通过 IP 或其他方式强制执行计数的非常简单的方法,您必须查看Redis。
如果您希望它在您的页面上显示访问者,请将其放在您的代码下。
<?php
include ("counts.html")
?>