Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скрипт сколько Пользователей в сети... Не пашет 
:(
    Опции темы
DanArN
Дата 15.4.2005, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 6.3.2005
Где: СНГ

Репутация: нет
Всего: нет



Добрый день..
Имеется скрипт, онлайновых пользователей...

Код

<?Php
session_save_path(".../www/ses");
session_start();
define("MAX_IDLE_TIME", 3);
function getOnlineUsers()
{
if ( $directory_handle = opendir( 

session_save_path(".../www/ses") ) )
{
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) )
{
if($file != '.' && $file != '..')
{
if(time()- fileatime(session_save_path(".../www/ses") . '\\' . 

$file) < MAX_IDLE_TIME * 60) {
$count++;
}
}
}
closedir($directory_handle);
return $count;
} else
{
return false;
}
}
echo 'Сейчас на сайте: ' . getOnlineUsers() . '<br />';
?>


Отладка на денвере показывает вот это
Warning: session_start(): Cannot send session cache limiter -

headers already sent (output started at

y:\home\localhost\www\online.php:3) in

y:\home\localhost\www\online.php on line 5
Пользователей онлайн: 0
В чем может быть проблема...? smile
PM MAIL ICQ YIM   Вверх
PARROT
Дата 15.4.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Код


<?php
ob_start(); 
error_reporting(7); 
?>
<html>
<body>
<?Php
session_save_path(".../www/ses");
session_start();
define("MAX_IDLE_TIME", 3);
function getOnlineUsers()
{
if ( $directory_handle = opendir( 

session_save_path(".../www/ses") ) )
{
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) )
{
if($file != '.' && $file != '..')
{
if(time()- fileatime(session_save_path(".../www/ses") . '\\' . 

$file) < MAX_IDLE_TIME * 60) {
$count++;
}
}
}
closedir($directory_handle);
return $count;
} else
{
return false;
}
}
echo 'Сколько на сайте народу: ' . getOnlineUsers() . '<br />';
?>
</body>
</html>
<?php
ob_end_flush();
?>

И не забудьте создать директорию ses, папку, а то тоже ругаться будет.

Это сообщение отредактировал(а) PARROT - 15.4.2005, 12:04


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
DanArN
Дата 15.4.2005, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 6.3.2005
Где: СНГ

Репутация: нет
Всего: нет



Сейчас испробую..... smile
PM MAIL ICQ YIM   Вверх
DanArN
Дата 15.4.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 6.3.2005
Где: СНГ

Репутация: нет
Всего: нет



Проверел... Пишеться,

Сколько на сайте народу: 0

А почему??? smile
Когда же пойдет позрастание?? Папка есть, туда записываются сессии...
PM MAIL ICQ YIM   Вверх
Mal Hack
Дата 15.4.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Да...
Безопасность - 0.

Подход не правильный.
http://wboard.ru/index.php?showtopic=267
Читай, ознакомляйся...
PM ICQ   Вверх
DanArN
Дата 15.4.2005, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 6.3.2005
Где: СНГ

Репутация: нет
Всего: нет



Да... я знаю, можно с помощью базы всё это реализовать...Просто,не хотелось её трогать smile

PM MAIL ICQ YIM   Вверх
PARROT
Дата 16.4.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Да. У меня на локалке работает, 1 показывает. Закачала скрипт на хостинг, а там 0 показывает. Ппросила зайти на страничку народ - и все равно 0. Даже абсолютный путь к папку прописала. Не помогло.
База это хорошо. А может без базы можно? smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Mal Hack
Дата 16.4.2005, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(PARROT @ 16.4.2005, 12:00)
А может без базы можно?

Можно-то можно...
У тебя алгоритм-то не правильный, т.е. он по логике правильны, но это знаешь, все равно что наливать ведро воды не из под крана в 2 метрах от тебя, а через шлаг, длиной 50 метров...
PM ICQ   Вверх
PARROT
Дата 16.4.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Mal @ 16.4.2005, 11:23)
все равно что наливать ведро воды не из под крана в 2 метрах от тебя, а через шлаг, длиной 50 метров...

Здорово Сказано!
А все таки, можно пример плиз? smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Mal Hack
Дата 16.4.2005, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(PARROT @ 16.4.2005, 12:36)
А все таки, можно пример плиз? smile

В плане? Вместо базы?
Юзать файл-базы.
PM ICQ   Вверх
DanArN
Дата 16.4.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 6.3.2005
Где: СНГ

Репутация: нет
Всего: нет



PARROT, а у меня и на локалке, всё равно было 0....
PM MAIL ICQ YIM   Вверх
IZ@TOP
Дата 19.4.2005, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Вот вам вариантик - разбирайтесь. Единственное но - прочтете когда дойдете до конца кода. Это чтобы жизнь малиной не казалась.

Код

<?php
error_reporting(E_ALL); 
// Если что, посмотрите какие у Вас ошибки на сервере возникли.

define('SESSIONS_FILE',            './db/usersess.data'); // Путь к файлу с кешем сессий
define('SESSIONS_LIFETIME',        15); // Запись срока жизни сессии в минутах

$usersSessions    = file(SESSIONS_FILE);
/* -------------------------------------------------------
// Считываем файл сессий строками в массив.
//
// формат записи файла сессий:
// sess_id | start_time | last_time | ip_addr
------------------------------------------------------- */

if(isset($_COOKIE['ONLINE_SESSIONID'])) { 
    /* -------------------------------------------------------
    // Если запись о сессии в куке пользователя существует
    // обрабатываем файл сессий в поисках ее и узнаем насколько
    // она устарела.
    ------------------------------------------------------- */

    $userSessionID    = $_COOKIE['ONLINE_SESSIONID'];
    
    while($sess = array_pop($usersSessions)) {
    
        $sessParams    = explode('|', trim($sess)); // Разбиваем строку на аргументы
        
        if($userSessionID == $sessParams[0]) {
        /* -------------------------------------------------------
        // Если сессия совпадает - проверяем не истек ли ее срок
        // если истек - ничего не делаем. Рано? Тогда увеличиваем срок жизни.
        ------------------------------------------------------- */
        
            if($sessParams[2] > (time() - (SESSIONS_LIFETIME * 60))) {
                
                $sessParams[2]        = time(); // увеличили срок жизни
                $cachedSessions[]    = implode('|', $sessParams); // кешируем аргументы в строку
            }
        } else {
            // кешируем строку если id сессии пользователь не подходит текущему и она не утсрала
            if($sessParams[2] > (time() - (SESSIONS_LIFETIME * 60))) {
                $cachedSessions[]    = trim($sess);
            }
        }
    }
    
    $usersSessions    = $cachedSessions; // Перезаписываем строки для последующей записи в файл сессий
} else {
    
    // если юзер в перый раз - создаем информацию о нем для записи в файл
    $userSessionID    = md5(microtime());
    $usersSessions[]    = $userSessionID.'|'.time().'|'.time().'|'.$_SERVER['REMOTE_ADDR'];
}

setcookie('ONLINE_SESSIONID', $userSessionID, (time() + (SESSIONS_LIFETIME * 60)));
// устанавливаем для юзера сессию и время ее жизни


/* -------------------------------------------------------
// Перезаписываем файл кеша сессий
------------------------------------------------------- */
$fh    = fopen(SESSIONS_FILE, 'w');
flock($fh, LOCK_EX);
fputs($fh, implode("\r\n", $usersSessions));
flock($fh, LOCK_UN);
fclose($fh);

// Выводим результаты
echo sizeof($usersSessions).' пользоваталей online.';

/* -------------------------------------------------------
// ВНИМАНИЕ! НЕДОСТАТКИ:
// если у пользователя отключены COOKIE, скрипт будет
// считать его снова и снова. Если у кого -то есть желание
// добработать этот скрипт (а может и кое что в нем поменять),
// буду рад поставить ему плюс.
// PS: данное предложение не относится к модерам и профи.
------------------------------------------------------- */

?>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0838 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.