|
|
|
| Ребят, а как этот скрипт(определяет кто в онлайне на сайте) заставить работать на бесплатном агавовском скрипте.
Файл - online.php. Вот содержание:
<?php
//Количество минут, в течении которых пользователи считаются находящимися "он-лайн"
$time=5;
//Область данных, следующая строчка ОБЯЗАТЕЛЬНО должна быть шестой в этом файле
$online='a:1:{i:0;s:43:"95acd2b64543208416fb973d7460f1d1|1131440177";}';
$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";
}
?>
|
Обратите внимание, не помогает вставка такая:
<script src="./online.php "></script>
|
такая:
<script src="./online.php?usr=true"></script>
|
такая:
<? require ('./online.php') ?>
|
и вот такая:
<? include("./online.php"); ?>
|
Такой простой скрипт и не работает на этом сервере :((
Помогите, please/// | |
|
|
|
|
|
|
|
для: Eric
(08.03.2007 в 19:19)
| | А ошибки выдает? | |
|
|
|
|
|
|
|
для: Poison
(08.03.2007 в 19:33)
| | Конечно выдает. Если вставлять в html страницу, то выдает синтаксическую ошибку, но это присуще этому серваку, т.к. он вставляет свой баннер, из-за него(скрипта баннера) случается такая проблема.
А если инкюдить в php страницу (<? require ('online.php') ?>), то:
Warning: Cannot modify header information - headers already sent by (output started at /home/f/ftd.h16.ru/WWW/online/example.php:10) in /home/f/ftd.h16.ru/WWW/online/online.php on line 12
Warning: Cannot modify header information - headers already sent by (output started at /home/f/ftd.h16.ru/WWW/online/example.php:10) in /home/f/ftd.h16.ru/WWW/online/online.php on line 18
Warning: Cannot modify header information - headers already sent by (output started at /home/f/ftd.h16.ru/WWW/online/example.php:10) in /home/f/ftd.h16.ru/WWW/online/online.php on line 19
Warning: Cannot modify header information - headers already sent by (output started at /home/f/ftd.h16.ru/WWW/online/example.php:10) in /home/f/ftd.h16.ru/WWW/online/online.php on line 20
Warning: Cannot modify header information - headers already sent by (output started at /home/f/ftd.h16.ru/WWW/online/example.php:10) in /home/f/ftd.h16.ru/WWW/online/online.php on line 21
document.write("1");
|
Число 1 в скобках (document.write("1"); ), это и есть количество он-лайн юзеров. Оно мне и нужно!!!! На моем сайте много подобных вставок различных скриптов, но вот иногда некоторые скрипты не вставляются, я подумал мож че в скрипте изменить нужно??? | |
|
|
|
|
|
|
|
для: Eric
(08.03.2007 в 19:19)
| | Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.
http://www.softtime.ru/group/id_group=12
http://www.softtime.ru/forum/ead.php?id_forum=1&id_theme=147
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148
Вы можете также включить буфферизацию, если имеете доступ к конфигурационному файлу php.ini
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8484 | |
|
|
|