помогите сделать онлайн счетчик по сайту

Печать RSS
169

С
Автор
Оранжевые штаны
0
чтобы просто писалось скоко человек в онлайне
С
Автор
Оранжевые штаны
0
<?php
$data="online.dat";
$time=time();
$past_time=time()-300;
$readdata=@fopen($data,"r") or die("Не могу открыть файл $data");
$data_array=file($data);
@fclose($readdata);
if (getenv('HTTP_X_FORWARDED_FOR'))
$user = getenv('HTTP_X_FORWARDED_FOR');
else
$user = getenv('REMOTE_ADDR');
$agent = getenv('HTTP_USER_AGENT');
$d=count($data_array);
for($i=0;$i<$d;$i++)
{
list($live_agent,$live_user,$last_time)=explode("::","$data_array[$i]");
if($live_user!=""&&$last_time!=""&&$live_agent!=""):
if($last_time<$past_time):
$live_user="";
$last_time="";
$live_agent="";
endif;
if($live_user!=""&&$last_time!=""&&$live_agent!="")
{
if($user==$live_user&&$agent==$live_agent)
{
$online_array[]="$agent::$user::$time\r\n";
}
else
$online_array[]="$live_agent::$live_user::$last_time";
}
endif;
}
if(isset($online_array)):
foreach($online_array as $i=>$str)
{
if($str=="$agent::$user::$time\r\n")
{
$ok=$i;
break;
}
}
foreach($online_array as $j=>$str)
{
if($ok==$j) { $online_array[$ok]="$agent::$user::$time\r\n"; break;
}
}
endif;
$writedata=@fopen($data,"w") or die("Не могу открыть файл $data");
@flock($writedata,2);
if($online_array=="") $online_array[]="$agent::$user::$time\r\n";
foreach($online_array as $str)
fputs($writedata,"$str");
@flock($writedata,3);
@fclose($writedata);
$readdata=@fopen($data,"r") or die("Не могу открыть файл $data");
$data_array=@file($data);
@fclose($readdata);
$online=count($data_array);
echo "Online: [$online]<br/>";
print'';
?>
С
Автор
Оранжевые штаны
0
вот пробовал это но он у меня в подпапках инклудеш он непишет типо не могу открыть файл)
С

о_О
0
используя $_SERVER['document_root']
С
Автор
Оранжевые штаны
0
так $_SERVER['online.php'] ?

ツ ツ ツ
0
5. CерёгA,нет, $data = $_SERVER['DOCUMENT_ROOT'].'/online.dat';
Изменил: Lugaro (17.05.2010 / 19:31)
С
Автор
Оранжевые штаны
0
вы меня может не так понели вот у меня есть один файл это низ всего сайт он про инклуден на всех страницах и я вставляю include'online.php'; и он тока показывает на тех страницах которые лежат не в папках а в остальных он пишет что не может найти файл online.dat или может я че не так понел.
Изменил: Сергей (17.05.2010 / 19:38)
С

о_О
0
вот таквот)))))
доложно работать
<?php 
$data = $_SERVER['DOCUMENT_ROOT'].'/online.dat';
$time=time(); 
$past_time=time()-300; 
$readdata=@fopen($data,"r") or die("Не могу открыть файл $data"); 
$data_array=file($data); 
@fclose($readdata); 
if (getenv('HTTP_X_FORWARDED_FOR')) 
$user = getenv('HTTP_X_FORWARDED_FOR'); 
else 
$user = getenv('REMOTE_ADDR'); 
$agent = getenv('HTTP_USER_AGENT'); 
$d=count($data_array); 
for($i=0;$i<$d;$i++) 
{ 
list($live_agent,$live_user,$last_time)=explode("::","$data_array[$i]"); 
if($live_user!=""&&$last_time!=""&&$live_agent!=""): 
if($last_time<$past_time): 
$live_user=""; 
$last_time=""; 
$live_agent=""; 
endif; 
if($live_user!=""&&$last_time!=""&&$live_agent!="") 
{ 
if($user==$live_user&&$agent==$live_agent) 
{ 
$online_array[]="$agent::$user::$time\r\n"; 
} 
else 
$online_array[]="$live_agent::$live_user::$last_time"; 
} 
endif; 
} 
if(isset($online_array)): 
foreach($online_array as $i=>$str) 
{ 
if($str=="$agent::$user::$time\r\n") 
{ 
$ok=$i; 
break; 
} 
} 
foreach($online_array as $j=>$str) 
{ 
if($ok==$j) { $online_array[$ok]="$agent::$user::$time\r\n"; break; 
} 
} 
endif; 
$writedata=@fopen($data,"w") or die("Не могу открыть файл $data"); 
@flock($writedata,2); 
if($online_array=="") $online_array[]="$agent::$user::$time\r\n"; 
foreach($online_array as $str) 
fputs($writedata,"$str"); 
@flock($writedata,3); 
@fclose($writedata); 
$readdata=@fopen($data,"r") or die("Не могу открыть файл $data"); 
$data_array=@file($data); 
@fclose($readdata); 
$online=count($data_array); 
echo "Online: [$online]<br/>"; 
?>
Изменил: Славик (17.05.2010 / 19:55)
С
Автор
Оранжевые штаны
0
спасибо
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск