Снова сессии

Zormax

Guest
Снова сессии

Господа програмеры, у кого есть рабочий кусок кода с сессиями?
Попытался сделать вывод кол-ва присутствующих на сайте с помощью сессий, да код почему-то у меня не работает (показывает ноль, но файлы сессий создаются)...
Вот код (нерабочий)???:
--------------
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(session_save_path() . '\\' . $file) < MAX_IDLE_TIME * 60) {
$count++;
}
} }
closedir($directory_handle);
return $count;
} else {
return false;
}}
echo 'Пользователей онлайн: ' . getOnlineUsers() . '<br />';
-----------------

Может есть у кого?

И еще, может кто подскажет, как сделать аутенфикацию с помощью сессий?
Мне надо чтобы после того, как юзер введет свой логин появляся файл сессии с его
логином внутри, после того как он не был активен некоторое время чтобы эта сессия удалялась...

Подскажите плиз!
 

vladax

Новичок
твоя задача решается по-другому.
ищи в поиске по форуму. если скажу, что раз 100 было таких постов, наверное, не ошибусь.
 

rotoZOOM

ACM maniac
Zormax так делать нельзя по такой причине, как множественный учет одного и того же пользователя.
Действительно поищи по форуму, было уже такое.
 

Zormax

Guest
Автор оригинала: vladax
твоя задача решается по-другому.
ищи в поиске по форуму. если скажу, что раз 100 было таких постов, наверное, не ошибусь.
По другому, это ты имел ввиду учет кто в онлайн?

Вот ты не задумывался почему раз 100 это уже ты видел???
Да потому, что если бы был нормально растолковывающий топик всю эту хрень. то не было бы стока постов...
Я полтора часа на своем диал-апе лазил по поиску и ничего подходящего не нашел, все ответы (большинство) сводятся к тому, что это уже было (прямо как ты говорят) и иди ты в FAQ в котором дал один лишь пример со счетом , типа "Вы вошли стока то раз"...

Что трудно рабочий кусок кода привести, уж как он работает сам как нить разберусь...

Ну это все флейм, а так спасибо за ответ тебе :)

-~{}~ 15.01.05 13:51:

Автор оригинала: rotoZOOM
Zormax так делать нельзя по такой причине, как множественный учет одного и того же пользователя.
Действительно поищи по форуму, было уже такое.
Все в сад (с)

А почему множественный учет?
Я хотел типа так:

После того как юзер введет свой логин и нажмет кнопку подтверждения, тока потом создается ссесия внутри которой переменная с его ником.

И какой же здесь множественный учет, если будет стоять проверка на существование переменной в ссесии?
 

SiMM

Новичок
user* online
> трудно рабочий кусок кода привести
Здесь не дают подачек. Тем более, для решения примитивных задач. Максимум - это идея.
 

bool

Новичок
Используй базу, а не файлы сесии. в ней храни имя юзера и время последнего обращения к скрипту. напиши функцию которая проверяет, если какой либо юзер не активен более определёного времени, удаляй.
 

4m@t!c

Александр
Zormax
как определить, кол-во пользователей ОНЛАЙН ты можешь узнать здесь - http://phpfaq.ru/na_tanke, а идея авторизации с помощью сессий есть здесь http://phpfaq.ru/sessions.
Картинок там нет, и там есть четкие ответы на твои вопрос, так что трафи твоего диалапа не пропадет зря.
 

Zormax

Guest
Автор оригинала: SiMM
user* online
> трудно рабочий кусок кода привести
Здесь не дают подачек. Тем более, для решения примитивных задач. Максимум - это идея.
Почему ты решил что я прошу подачки?
Я привел код и спросил первым вопросом о его работоспособности...

-~{}~ 15.01.05 14:06:

Автор оригинала: bool
Используй базу, а не файлы сесии. в ней храни имя юзера и время последнего обращения к скрипту. напиши функцию которая проверяет, если какой либо юзер не активен более определёного времени, удаляй.
Из-за малюсенького чата целую БАЗУ?
Ну уж увольте...
 

bool

Новичок
Если для чата, то как будет лучше. Навернека, тебе захочется узнать и имена тех, что в онлайне.
 

4m@t!c

Александр
bool
Я уже знаю, сколько посетителей будет- ни одного. Можно лишь сказать последнее время обращение к серверу и все, ты же сам и сказала это, когда описывал алгоритм.
 

Zormax

Guest
Автор оригинала: bool
Если для чата, то как будет лучше. Навернека, тебе захочется узнать и имена тех, что в онлайне.
Дело в том многуважаемые Гуру, что у меня не просто чат, а WAP-чат. И он уже полностью написан и работает...
И все фунциклирует, кроме одного не все юзеры нажимают перед выходом ссылку "Выход" (ну есть много тупых с мобилами в руках), не в счет тех, кого выкинуло из сети...

В том то идело, что чел зашел, в чате атоматом надпись: "Вошел: Вася"

Дальше траля-ля....
И вот этот Вася вышел варварским методом (не нажал ссылку "Выход") и поэтому не появится в чате сообщения что Вася вышел...
А другие думаю что он еще здесь и славно разговаривают с призраком :)))
А те юзеры, кто грамотно нажал ссылку "Выход" у тех автомат появится сообщение в чате: "Вышел: Петя"

Забыл сказать, что чат работает на текстовых файлах...
 

SiMM

Новичок
Автор оригинала: Zormax
у меня не просто чат, а WAP-чат
О да, это конечно существенное замечание. Наверно, WAP-чат использует какой-то хитрый, отличный от HTTP, протокол - что ж ты раньше не сказал?
И он уже полностью написан и работает...
Если бы он уже работал - вопроса бы не возникло, не так ли? Вообще-то прежде чем что-то написать, люди обычно проектируют это что-то.
И все фунциклирует, кроме одного не все юзеры нажимают перед выходом ссылку "Выход"
Скорее, это не они тупые, а кто-то другой. Они и не обязаны жать Выход.
Забыл сказать, что чат работает на текстовых файлах...
Это конечно существенно изменяет дело - ведь в текстовых файлах невозможно хранить время последнего запроса от пользователя - это даже детсадовцам известно.
 

bool

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

Zormax

Guest
SiMM
Я понимаю что ты истинный Гуру и сообщений у тебя куча, но ты уже грубишь в мой адрес...
Также как я понял ты видимо никогда не был так же наивен как я, а сразу начал на профессиональном уровне программировать и никогда не делал ошибок и не задавал глупых вопросов как я...
Это правда?

bool Спасибо. так и придется, сохранять где то в переменной (в файле) время последнего написания.
Если в течении скажем трех минут ничего не написано этим юзером, тогда ему выход...
 

rotoZOOM

ACM maniac
Zormax кто о чем, я о своем. Насчет множественного учета, если юзать сессии. Зайди експлорером на сайт. Потом закрой експлорер, далее опять открой експлорер и зайди опять на сайт. И у тебя в директории session_save_path() будет почему-то два сессионных файла :)))
Хотя открыто одно окошко.
Это все из-за времени жизни сессионных файлов.
 

SiMM

Новичок
Автор оригинала: Zormax
не задавал глупых вопросов как я...
Воспользуйся поиском по форуму :)
Если до тебя до сих пор не дошло - делаешь ты WAP или HTML - PHP по барабану. Работаешь ты с файлами или с БД - никого не волнует. Алгоритм прост и очевиден до безобразия, и найти его поиском (особенно после того, как дали ссылку) - не составляет труда (да и здесь его уже не раз озвучили). Конечно куда проще строить из себя обиженного мальчика и ждать готового кода, вместо того, чтобы сделать это самостоятельно.
 
Сверху