简单的访客柜台

时间:2013-03-28 16:54:42

标签: php count

我在页面中集成了简单的访问者计数器脚本(php)(我知道它非常不准确和糟糕,但此时只用于测试):

<?php
$file = "counts.html";

//if cookie isn't already set,then increase counts by one + save ip, and set a cookie to pc...
$cookie_namee='mycounterr-456';
if (!isset($_COOKIE[$cookie_namee])) {
    file_put_contents($file, ( !file_exists($file) ? 0: (file_get_contents($file)+1) ) );
    setcookie($cookie_namee, "Checked", time()+99999, '/');
}
?>

有没有办法获得访客的IP? (echo $ GET_REMOTE_IP;不起作用)。

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

因为我没有找到令人满意的&#34;足够简单&#34;解决方案,我想出了自己的。创建一个名为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,因为我怀疑网络爬虫和其他机器人会将它们发回去。

答案 2 :(得分: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);
}
?>

答案 3 :(得分: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;
}

答案 4 :(得分: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

答案 5 :(得分:-1)

您可以尝试使用simPHP:github.com/ajay-gandhi/simphp

答案 6 :(得分:-3)

如果您希望它在您的网页上显示访问者 把它放在你的代码下面。

<?php

include ("counts.html")

?>