Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy strona jest otwarta na innym komputerze, jak sprawdzić?
gargamel
post 24.08.2010, 12:22:08
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Dokładnie jak w temacie.
Czy znacie jakiś sposób aby sprawdzić czy strona jest aktualnie otwarta na jakimś innym komputerze. Chodzi o to żeby kilku użytkowników na raz nie mogło mieć uruchomionej owej strony.
Wdzięczny będę za jakiekolwiek podpowiedzi smile.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Blame
post 24.08.2010, 12:25:33
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Przy logowaniu zapisujesz sobie do bazy ip, z którego użytkownik się zalogował. Jeśli jest inne to wywalasz go do logowania i system się powtarza winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
gargamel
post 24.08.2010, 12:29:24
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


a w jaki sposób miałoby się odbywać kasowanie ip z bazy gdy ten co oglądał wyłącza stronę ?
Go to the top of the page
+Quote Post
thek
post 24.08.2010, 13:10:08
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zależnie od systemu kontroli. Pomysłów może być wiele. Robisz timestamp, ip i stronę jako kolumny rekordu. Sprawdzasz czy dana strona ma już IP przypisane. Jeśli tak -> ktoś jej używa. Sprawdzasz czy to samo IP. Jeśli nie -> zablokowana przez kogoś. Jeśli dany user jest zalogowany ale czas jest dość duży, możesz ewentualnie "zdjąć" blokadę i uznawać że jest ona wolna. To takie zabezpieczenie przed: "zapomniałem się wylogować, a mam sesję ustawioną na kilka dni ważną" winksmiley.jpg Jeśli pojawiają się rekordy z tym samym IP, to usuwasz z niższym timestampem, bo to niejako historia nawigacji po stronie danego adresu IP.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
gargamel
post 24.08.2010, 13:24:01
Post #5





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Tak tylko problem który ja widzę wygląda następująco:

Ktoś wchodzi na stronę -> do bazy idzie info że na owej stronie ktoś siedzi (zagadnienie dotyczy tylko jednej strony w całym systemie - do samego systemu może być zalogowanych wielu użytkowników)
Ktoś drugi próbuje wejść na tą stronę -> strona pobiera info z bazy i się okazuje że ktoś już na owej stronie siedzi. I nie można strony wyświetlić.

Problem zaczyna się dopiero przy zdejmowaniu owej blokady. Nie chce narzucać czasu który może ktoś na stronie spędzić, bo to może uniemożliwić pracę osób które będą na niej... Mogę użyć opcji onunload i przy jej pomocy usunąć z bazy blokadę, ale wiadomo jak z nią jest. Niektóre przeglądarki blokują to i owo i opcja ta nie zadziała jak np komputer zostanie odcięty od prądu, tudzież uderzy weń wielki meteor, czy coś... (poprawcie mnie jeśli się mylę)...
Nie istnieje w php jakaś funkcja która wysyła do serwera zapytanie czy dana strona jest przeglądana przez kogokolwiek? To by mi rozwiązało cały problem ....
Go to the top of the page
+Quote Post
thek
post 24.08.2010, 13:32:37
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Takiej nie ma. Ale możesz zawsze wysyłać z AJAX dane kontrolne, które informują serwer, że strona jest u kogoś otwarta. Przykładowo co 2 minuty czy ile tam chcesz. Jeśli serwer nie dostaje odpowiedzi -> strona wolna. Innymi słowy jeśli timestamp strony w bazie jest niższy niż czas aktualny pomniejszony o limit czasu -> userowi coś padło i to blokujący-zombie.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
gargamel
post 24.08.2010, 14:35:59
Post #7





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


O to to to.. Coś takiego mi trzeba
To kolejne pytanie jak taka funkcja ma wyglądać i jak ją podpiąć? Bo z AJAXa to ja ani be ani me...
Chyba że to zagadnienie na oddzielny temat, to pytania nie było winksmiley.jpg
Go to the top of the page
+Quote Post
thek
post 24.08.2010, 14:58:14
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zobacz sobie jQuery i obsługę AJAX w nim, bo jest bardzo uproszczona i nie jest to kosmos wcale. Co jakiś czas (setInterval choćby) byś wysyłał odpowiednie info na serwer jaką stronę "blokujesz".


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
gargamel
post 24.08.2010, 15:06:41
Post #9





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Dobra, to będę tam szukał rozwiązania, w razi co będę zasypywał lamerskimi pytaniami ;] Puki co dzięki za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 01:06