[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Посетители онлайн НЕ РАБОТАЕТ скрипт
Albert
// Получить количество пользователей онлайн на сайте

пол года назад я пользовался этим скриптом и работал он прекрасно, сегодня решил воткнуть его в другой сайт и вместо того чтобы выдавать сколько сейчас юзеров онлайн, он тупо подсчитывает сколько юзеров заходило на сайт вообще!

помогите плыз!

$ip = $REMOTE_ADDR;
$time = time();
$minutes = 2;
$found = 0;
$users = 0;
$user = "";
$tmpdata = $DOCUMENT_ROOT;
if (!is_file("$tmpdata/online.txt"))
{
$s = fopen("$tmpdata/online.txt","w");
fclose($s);
chmod("$tmpdata/online.txt",0666);
}
$f = fopen("$tmpdata/online.txt","r+");
flock($f,2);
while (!feof($f))
{
$user[] = chop(fgets($f,65536));
}
fseek($f,0,SEEK_SET);
ftruncate($f,0);
foreach ($user as $line)
{
list($savedip,$savedtime) = split("\|",$line);
if ($savedip == $ip) {$savedtime = $time;$found = 1;}
if ($time < $savedtime + ($minutes * 60))
{
fputs($f,"$savedip|$savedtime\n");
$users = $users + 1;
}
}
if ($found == 0)
{
fputs($f,"$ip|$time\n");
$users = $users + 1;
}
fclose ($f);



Спустя 3 часа, 35 минут, 37 секунд (5.01.2009 - 00:57) sergeiss написал(а):
Мне хотелось бы для начала, чтобы автор прокомментировал свой скрипт, особенно строки
$ip = $REMOTE_ADDR;
и
$tmpdata = $DOCUMENT_ROOT;
У меня есть подозрение, что первую из них надо заменить на
$ip = $_SERVER['REMOTE_ADDR'];
и вторую на
$tmpdata = $_SERVER['DOCUMENT_ROOT'];

Плюс к этому, данные в массив $user можно считать безо всех "изысков" smile.gif, всего лишь одной строкой (а все эти изыски выдают, что автор скрипта "кодил" ранее на Си)
$user=file("$tmpdata/online.txt");
А вот дальше, после прочтения файла, я не понял, что происходит.

Спустя 9 часов, 37 минут, 52 секунды (5.01.2009 - 10:35) Albert написал(а):
вообщем пол года назад я на другом хостинге был, возможно там не нужно было это менять, а сейчас уже тоже другой у меня хостинг. теперь видимо нужно заменить эти строчки. не знаю не проверял. нашел уже другой скрипт.

session_save_path("./users/online/");
session_start();
define("MAX_IDLE_TIME", 3);
function getOnlineUsers(){
if ( $directory_handle = opendir( session_save_path() ) ) {
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) ) {
if($file != '.' && $file != '..'){
if(time()- fileatime("./users/online/$file") < MAX_IDLE_TIME * 60) {
$count++;
}
} }
closedir($directory_handle);
return $count;
} else {
return false;
}}
$users = getOnlineUsers();

Спустя 34 секунды (5.01.2009 - 10:36) Albert написал(а):
работает на ура!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.