ppatrykp
7.04.2009, 12:33:37
witam, jak w temacie. Będę miał okienko, w którym otwieram panel do kamery IP i problem polega na tym, że takich paneli otwartych może być max np 10. Natomiast jeden użytkownik może mieć otwarte np jedno okno z panelem, nie więcej.
Proszę poradźcie, podpowiedzcie jak się za to zabrać.
pozdrawiam
Paweł
vokiel
7.04.2009, 13:13:44
Maksymalną liczbę otwartych okienek możesz zrobić po stronie serwera. Przy każdym otwarciu strony zpisywać do bazy godzine wejścia. Dodatkowo jak zapiszesz jakieś unikalne dane dla danego wejścia (przeglądarka + system + IP + jakis id sesji) to możesz później przy włączeniu drugiej instancji stronki sprawdzać czy dla tego usr jest już wpis. Jeśli dostęp do kamerki masz po zalogowaniu, wtedy nie ma problemu z identyfikacją danego użytkownika.
Gorzej jest z zamknięciem okienka, jest co prawda window.unload(). Możesz też co jakiś czas wysyłać ajaxem info o aktywności użytkownika - odświeżać wpis w bazie.
Pozdrawiam
ppatrykp
7.04.2009, 13:21:38
Twój pomysł jest dobry, lecz ma chyba jedną wadę, która jest dla mnie problemem. Ok ktoś pyka w otwarcie okienka, okienko się otwiera i zapisywane są dany przy otwarciu następnego już mogę to detekować ALE gdy ktoś zamknie to okno i potem znowu będzie chciał otworzyć to mu odmówi....
da się to jakoś rozwiązać?
vokiel
7.04.2009, 21:12:44
No właśnie tu przychodzi z pomocą funkcja window.unload(), przy wywołaniu której wysyłasz do bazy info, ze okienko zamknięto. Nie wiem co prawda jak to się ma do sytuacji gdy ktoś zamknie okienko przez np alt+f4.
Taką sytuacje można rozwiązać ajaxem.
Np:
1. Otwarcie okienka -> zapisanie do bazy id usr i termin waznosci okienka na 20sec
2. Co 20 sec ajax z otwartego okienka wysyla info przedluzenia czasu dla danego usr +20sec
3. Jesli usr zamknie okienko -> po 20sec znow moze otworzyc
4. Jesli okienko bedzie otwarte, ciagle w bazie bedzie istnial wpis, ze ten usr ma je otwarte
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.