Номер текущего окна

MadGreen

meninweb
Номер текущего окна

Не пинайте ногами: в поиске искал, но именно такой проблемы не нашел...
суть в следующем: пользователь авторизуется,
дальше открывает один из пунктов меню в новом окне браузера. Нужно отследить его URL в каждом из этих окон. Как определить что он открыл новое окно?
Смысл- сопоставить номер окна и адрес для отслеживания online состояния и исключения одновременного доступа нескольких пользователей к одному разделу.
 

MadGreen

meninweb
чтобы не "потерять" уже открытые пользователем.
То есть открыл он два разных раздела... допустим мы не следим за окнами. тогда по его логину я знаю что он работает с урл одного раздела, а другой теряю... в это время второй пользователь легко сможет войти в тот самый раздел...
а хранить в БД список открытых разделов с одного логина накладно - как обновлять урл после перехода?

-~{}~ 12.02.06 21:31:

ну или более общий вопрос: как закрыть раздел от всех пользователей пока один из них в нем?

-~{}~ 12.02.06 21:35:

дело в таймауте... если я буду знать номер текущего окна, я обновлю урл по переходу по меню - тогда другие пользователи не будут ждать.

иначе я не буду знать какой урл обновлять...
 

kruglov

Новичок
Начнем с того, что вы не можете 100% узнать, сидит ли пользователь за окном. Открыто ли оно. Не отвалилась ли у него сетка и пр.

Можно лишь запоминать время последнего обращения. И если обращений не было достаточно долго, считать пользователя отлогиненным.

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

MadGreen

meninweb
именно такова задумка: проверка по тайм ауту...
проблема лишь в идентификаторе текущего скрипта или номере окна...
пользователь может и не отвалился, он просто может сменить страничку...
неужели никто не сталкивался?

-~{}~ 12.02.06 21:49:

insidex
а можно по подробнее?
ну сессии и что?
 

kruglov

Новичок
MadGreen
Если он сменил страничку, значит наступит таймаут у предыдущей.
 

MadGreen

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

-~{}~ 12.02.06 22:12:

причем если тайм аут будет маленький (пользователь правит например страницу.. задумался и не переходит по ссылкам) другой получит доступ к этой странице и тоже может начать правку...
а если большой - все будут долго ждать, хотя в разделе уже никого нет...

-~{}~ 12.02.06 22:14:

JS использовать очень не желательно... других способов проверить работает пользователь в разделе или нет (если он, например, просто правит текст) я не вижу...
Остается достаточно большой тайм-аут... хотябы минут 5...

-~{}~ 12.02.06 22:16:

kruglov
Если можно переименуйте тему в "Блокировка одновременного доступа".
Так будет понятнее и может кто еще что подскажет...
Всем спасибо за ответы, но пока решения нет...
поиск тоже не помогает...

-~{}~ 13.02.06 21:39:

Люююди, ну не поверю что никто при написании той же CMS не блокировал одновременную правку новости несколькими пользователями... или правку чего-либо...
 

alexwans

Новичок
Блокировать надо строку в базе или файл лочить и проверять, а затем выдавать предупреждение для второго пользователя об этом, а не сесиями...
 

MadGreen

meninweb
Автор оригинала: alexwans
Блокировать надо строку в базе или файл лочить и проверять, а затем выдавать предупреждение для второго пользователя об этом, а не сесиями...
Сессии действительно не помогут... Лочить файлы или строки в БД тоже не универсально: слишком обрастет база... а файлы и так лочатся, но при таком подходе нужно хранить и лог пользователя работающего с файлом...

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