1

更新

这个问题暴露了过时,最糟糕的方法,visitors count每个人都应该避免它。使用复杂的计数器。

4

6 回答 6

4

您通常可以通过$_SERVER['REMOTE_ADDR']变量获取 IP 地址。

于 2013-03-28T16:56:39.757 回答
4

由于我没有找到令人满意的“足够简单”的解决方案,所以我想出了自己的解决方案。创建一个名为的空文件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,因为我怀疑网络爬虫和其他机器人会将它们送回。

于 2015-07-09T16:12:07.137 回答
1

简单的:

<?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);
}
?>
于 2015-11-19T01:05:48.830 回答
1

嗨,这是我用来注册访客 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;
}
于 2016-04-20T10:05:33.803 回答
0

您可以通过使用 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

于 2013-03-28T17:11:27.553 回答
-3

如果您希望它在您的页面上显示访问者,请将其放在您的代码下。

<?php

include ("counts.html")

?> 
于 2015-06-28T09:52:13.213 回答