簡體   English   中英

PHP-不計算index.php中的用戶

[英]PHP - Don't Count Users from index.php

我有一個基本的在線訪客計數器。 我從這里得到的。 它運行很好,但是我有一個問題。 我在在線游戲上使用它,並且有多個服務器。 我將其用於服務器在線計數器。 我確實通過iframe將計數器頁面添加到服務器,並且計數非常好。

但是問題是,我想在索引(index.php)頁面上顯示該數字。 但是當我使用時:

<?php include("server1.php");?>

它也計算索引頁面用戶。 我不要這個 如何使它不計算來自index.php的IP?

在這里,我的密碼

計數器(server1.php)

<?php
$dbfile = "game/database/1.db";  // path to data file
$expire = 100; // average time in seconds to consider someone online before removing from the list

if(!file_exists($dbfile)) {
    die("Error: Data file " . $dbfile . " NOT FOUND!");
}

if(!is_writable($dbfile)) {
    die("Error: Data file " . $dbfile . " is NOT writable! Please CHMOD it to 666!");
}

function CountVisitors() {
    global $dbfile, $expire;
    $cur_ip = getIP();
    $cur_time = time();
    $dbary_new = array();

    $dbary = unserialize(file_get_contents($dbfile));
    if(is_array($dbary)) {
        while(list($user_ip, $user_time) = each($dbary)) {
            if(($user_ip != $cur_ip) && (($user_time + $expire) > $cur_time)) {
                $dbary_new[$user_ip] = $user_time;
            }
        }
    }
    $dbary_new[$cur_ip] = $cur_time; // add record for current user

    $fp = fopen($dbfile, "w");
    fputs($fp, serialize($dbary_new));
    fclose($fp);

    $out = sprintf("%03d", count($dbary_new)); // format the result to display 3 digits with leading 0's
    return $out;
}

function getIP() {
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    elseif(isset($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR'];
    else $ip = "0";
    return $ip;
}

$visitors_online = '0'+CountVisitors();
?>

<?=$visitors_online;?>

iframe(我在服務器頁面上使用它)

<iframe name="visitors" src="../1.php" width="1" hidden="true" height="1" frameborder="0" scrolling="no"></iframe>

php include(index.php)

Server 7 - Online Players:<?php include("7.php");?>

用此代碼制作server2.php

<?php
$dbfile = "game/database/1.db";  // path to data file
$expire = 100;

if(!file_exists($dbfile)) {
    die("Error: Data file " . $dbfile . " NOT FOUND!");
}

if(!is_writable($dbfile)) {
    die("Error: Data file " . $dbfile . " is NOT writable! Please CHMOD it to 666!");
}

function CountVisitors() {
    global $dbfile, $expire;
    $cur_time = time();
    $dbary_new = array();

    $dbary = unserialize(file_get_contents($dbfile));
    if(is_array($dbary)) {
        while(list($user_ip, $user_time) = each($dbary)) {
            if(($user_time + $expire) > $cur_time) {
                $dbary_new[$user_ip] = $user_time;
            }
        }
    }

    $out = sprintf("%03d", count($dbary_new)); // format the result to display 3 digits with leading 0's
    return $out;
}

$visitors_online = '0'+CountVisitors();
?>

<?=$visitors_online;?>

並像server1.php一樣使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM