Скрипт "Кто на сайте"

loed
На сайте с 10.03.2007
Offline
196
916

Доброго дня! Есть скрипт "сейчас на сайте"

<?php

//Количество минут, в течении которых пользователи считаются находящимися "он-лайн"
$time=1;

//Область данных, следующая строчка ОБЯЗАТЕЛЬНО должна быть шестой в этом файле
$online='a:1:{i:0;s:43:"0015e4fd3c04b687726adceced4ddc4f|1246380013";}';

$online=unserialize($online);


//Установка кодировки windows-1251
header('Content-Type: text/html; charset=windows-1251');

//Окончания "числительных"
$users = array('пользователей', 'пользователь', 'пользователя');

//Антикеширование
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');

//Определение внешнего и внутреннего ip-адресов
$ip[0]=$_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ip[1]=$_SERVER['HTTP_X_FORWARDED_FOR'];
else
$ip[1]='';

//Получаем данные броузера
$browser=$_SERVER['HTTP_USER_AGENT'];

//Получаем хеш из данных о пользователе
$user=md5($ip[0].$ip[1].$browser);

//Приделываем к хешу время последней активности
$str=$user."|".time();



//В цикле "убираем" всех устаревших пользователей
for($i=0;$i<count($online);$i++)
{
$tmp=explode("|",$online[$i]);
$online2[$i]=$tmp[0];

$t=@$tmp[1];
if($t<time()-$time*60)
{
unset($online[$i]);
}
else
{
if($online2[$i]!=$user)
{
$online3[]=$online[$i];
}
}
}

$online=@$online3;
$online[]=$str;



//Выводим количество
$count=count($online);
echo 'document.write("'.$count.'");'."\n";


//Выводим слово "пользовател.." с нужным окончанием
if(isset($_GET['usr']))
{
$index = $count % 100;
if ($index >=11 && $index <= 14)
$index = 0;
else
$index = ($index %= 10) < 5 ? ($index > 2 ? 2 : $index): 0;

echo 'document.write(" '.$users[$index].'");'."\n";
}

//Читаем этот файл и обновляем шестую строчку
$file=file("online.php");
$file[5]='$online=\''.serialize($online).'\''.";\n";

//Проверяем на доступность для записи и, в случае успеха, записываем обновленные данные.
if(is_writable("online.php"))
{
$f=fopen("online.php","w");
flock($f,LOCK_EX);
fwrite($f,join("",$file));
flock($f,LOCK_UN);
fclose($f);
}
else
{
echo 'document.write("Check file permissions!");'."\n";
}


?>
Через пару дней, посетителей не показывает в файл online.php преписывается таким вот кодом:
$online='a:19:{i:0;s:43:"884a13b206b3d0ffd483a3405a4a15d2|1246385765";i:1;s:43:"00de6d54850d58cc2b59ddf573f8db76|1246385771";i:2;s:43:"ccafdb768d28f04cabf98aa0a6b8c216|1246385774";i:3;s:43:"c5852885e2cc70bcfad5c523bed53008|1246385828";i:4;s:43:"f8dca094141d7e98c4b8fc8ef004da06|1246385877";i:5;s:43:"59cf3414f956cb1bd84874c7848960a6|1246385897";i:6;s:43:"7c0e3c26a6aa7daaaa3b73f5a364b258|1246385908";i:7;s:43:"3f8b732e37bcfeb6012b499704f8dd51|1246385911";i:8;s:43:"8212e0dfe98042c671970df335663f27|1246385927";i:9;s:43:"d4402a0d67e775f4fc9cbac0f4f95668|1246385937";i:10;s:43:"76c00307062f7f710af490d2c98e5be9|1246385959";i:11;s:43:"3f52ed26990518a3c7e1ce452b70ceb7|1246385977";i:12;s:43:"1a825f641fe2ea0c5b110bc8939d7082|1246385990";i:13;s:43:"1f1c05a550cab8cc7c61a5bd1969dab2|1246385994";i:14;s:43:"6964fd6262b103d73c4026f0cd9de85a|1246386010";i:15;s:43:"d632d171196b77269b47fb5dbdfed8a4|1246386012";i:16;s:43:"efcee757567da009cfe542a787f6d89b|1246386026";i:17;s:43:"31b85dcbfd4f2db1cae2bf9b5424bf06|1246386026";i:18;s:43:"062dba301b1ad31a5340e48c221b3dd8|1246386044";}';

Приходится каждые 2-3 дня опять загружать на хостинг файл online.php, и так опять работает пару дней.

denex
На сайте с 29.04.2009
Offline
7
#1

Может быть, лучше MySQL использовать для этих целей, м?

Создание Интернет-проектов любой сложности (социальные сети, медиа-порталы, сайты-визитки, Интернет-магазины, CMS и т.д.) (http://www.tyurin.net)
loed
На сайте с 10.03.2007
Offline
196
#2
denex:
Может быть, лучше MySQL использовать для этих целей, м?

Я ненашел такой скрипт, (вернее нашел но он начал подвешивать сервер) если есть дайте ссылку на нормальный скрипт, пусть даже и платный.

denex
На сайте с 29.04.2009
Offline
7
#3
loed:
Я ненашел такой скрипт, (вернее нашел но он начал подвешивать сервер) если есть дайте ссылку на нормальный скрипт, пусть даже и платный.

Искать, как бы, некогда, могу лишь свои услуги по написанию предложить.

loed
На сайте с 10.03.2007
Offline
196
#4
denex:
Искать, как бы, некогда, могу лишь свои услуги по написанию предложить.

Какая цена вопроса?

denex
На сайте с 29.04.2009
Offline
7
#5

Давайте в ICQ обсудим.

loed
На сайте с 10.03.2007
Offline
196
#6

Хорошо, в личку скинул ICQ

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий