counter — Не считать пользователей из index.Stack Overflow

У меня есть основной счетчик посетителей онлайн. Я получаю это от Вот. Это работает очень хорошо, но у меня есть проблема. Я использую его в онлайн-игре, и у меня есть несколько серверов. Я использую его для счетчика онлайн сервера. Я добавил счетчик страниц на серверы через iframe, и это очень хорошо.

Но проблема в том, что я хочу отобразить эти цифры на странице index (index.php). Но когда я использую:

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

он также учитывает пользователей индексной страницы. Я не хочу этого Как я могу сделать так, чтобы он не считал IP-адреса из index.php?

Здесь мои коды

Счетчик (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");?>

1

Решение

сделать 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]