Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]ip online
shreker
post 9.09.2011, 22:03:56
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


potrzebuję wyświetlić ip wszystkich użytkowników będących online, dla jednego jest to proste, ale jak to zrobić dla wielu ?
Go to the top of the page
+Quote Post
jacobson
post 9.09.2011, 22:23:19
Post #2





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


Sadze ze dla wielu bedzie wygladalo w 99% tak samo jak dla jednej. Osoba zarejestrowana wpisywana jest do bazy danych do tablicy np "zalogowani" (a po wylogowaniu kasowana). I nastepnie nalezy wyswietlic wszystkie ip.
Go to the top of the page
+Quote Post
shreker
post 9.09.2011, 22:26:46
Post #3





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


nie chodzi mi tylko o zalogowanych użytkowników będących online, ale o wszystkich użytkowników online będących w danej chwili
Go to the top of the page
+Quote Post
jacobson
post 9.09.2011, 22:44:13
Post #4





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


Hmmm no prawda to jest ciezka sytuacja jednak zarowno dla jednej jak i dla wiekszej ilosci osob, poniewaz musisz okreslic warunki tego czy uzytkownik jeszcze jest na stronie. Np jezeli nie poruszal sie po podstronach przez 2 minuty znaczy ze juz go tam nie ma i mozna go usunac. Wydaje mi sie ze moznaby to zrobic tak samo jak mowilem wczesniej z tym ze skrypt ktory dziala caly czas. Przy kazdej akcji sie wykonuje. Uzytkownik wchodzi na strone i jego ip zostaje wpisane do sesji razem z jakims timestampem. Kazda operacja uzytkownika "odnawia" jego timestamp na aktualny.
Ja to widze mniej wiecej tak. W taki sam sposob mozna tylko na bazie (ale wedlug mnie takie operacje beda troche obciazajace bez przerwy monitorowac ozytkownikow)
Go to the top of the page
+Quote Post
shreker
post 9.09.2011, 22:48:22
Post #5





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


może ktoś gdzieś się spotkał z podobnym problemem, ewentualnie natknął się na podobne skrypty, rozwiązania ?
Go to the top of the page
+Quote Post
Rid
post 9.09.2011, 22:59:59
Post #6





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Może to okaże się pomocne.
Go to the top of the page
+Quote Post
shreker
post 9.09.2011, 23:05:48
Post #7





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


questionmark.gif? a w czym miało by mi to pomóc, co ma ochrona sesji wspólnego z tematem ?
Go to the top of the page
+Quote Post
Rid
post 9.09.2011, 23:12:38
Post #8





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Jest opisane jak przypisac ip do sesji.Zobacz jak wygląda licznik strony,i zamiast liczby ,do sesji przypisywać IP.

Ten post edytował Rid 9.09.2011, 23:13:05
Go to the top of the page
+Quote Post
pedro84
post 9.09.2011, 23:46:01
Post #9





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Sesje przechowujesz w bazie, przechowujesz tam też czas ostatniej akcji i IP.


Łopatologicznie można też zrobić to na pliku .txt.

Ten post edytował pedro84 9.09.2011, 23:46:23


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
shreker
post 11.09.2011, 21:35:10
Post #10





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


witam, problem już rozwiązałem. zrobiłem to mniej więcej tak:
1. zapisuję do bazy przy wejściu usera - ip, browser, nazwę usera i time() - jeżeli jest to "nowy user"
2. funkcja sprawdza czy ip, user i browser już są w bazie
3. jeżeli użytkownik już był to - update time() w bazie
4. jeżeli usera nie było (czyli jest po raz pierwszy - to insert nowego usera do bazy
5. porównuję time() z czasem z bazy
6. jezeli jest czas>(time()-180) to dodaję jako online, jeśli nie to nie
7. wyświetlam rezultat whil'em

co o tym sądzicie, może ktoś ma jakieś ciekawe pomysły ?
ps. ma to pewną wadę (przekłamanie) - mianowicie wchodząc na stronę automatycznie mój adres jest dodawany do bazy (czyli jestem online), natomiast po zalogowaniu jako admin pokazuje mi dwa adresy online - adres z przed zalogowania i drugi taki sam po zalogowaniu.

Go to the top of the page
+Quote Post
Diablos
post 12.09.2011, 13:48:52
Post #11





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


Przyda Ci sie punkt 8, czyli usun z bazy wszystkie IP osób które nie odswiezyly strony od X czasu, chyba ze chcesz zbierac takie dane.
Poza tym warto te wszsytkie operacje zrobic jako oddzielna funkcje/procedure w SQL.

Ten post edytował Diablos 12.09.2011, 13:50:28
Go to the top of the page
+Quote Post
!*!
post 12.09.2011, 13:59:35
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat
ps. ma to pewną wadę (przekłamanie) - mianowicie wchodząc na stronę automatycznie mój adres jest dodawany do bazy (czyli jestem online), natomiast po zalogowaniu jako admin pokazuje mi dwa adresy online - adres z przed zalogowania i drugi taki sam po zalogowaniu.


To po co wykonujesz operacje dodawania do bazy dwa razy?

A jak chcesz coś bardziej dokładnego zainteresuj się websocets w html5. Wtedy będziesz mieć listę IP "na żywo". http://html5demos.com/web-socket

Ten post edytował !*! 12.09.2011, 14:04:44


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
shreker
post 12.09.2011, 17:54:20
Post #13





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


Cytat(Diablos @ 12.09.2011, 14:48:52 ) *
Przyda Ci sie punkt 8, czyli usun z bazy wszystkie IP osób które nie odswiezyly strony od X czasu, chyba ze chcesz zbierac takie dane.
Poza tym warto te wszsytkie operacje zrobic jako oddzielna funkcje/procedure w SQL.


jasne masz, rację ... zapomniałem to po prostu dopisać, tyle że u mnie jest to pomiędzy punktem 6 i 7 :-)
natomiast co do funkcji to oczywiści jest to wszystko zapisane jako jedna funkcja, odpalana na początku skryptu.


Cytat(!*! @ 12.09.2011, 14:59:35 ) *
To po co wykonujesz operacje dodawania do bazy dwa razy?

A jak chcesz coś bardziej dokładnego zainteresuj się websocets w html5. Wtedy będziesz mieć listę IP "na żywo". http://html5demos.com/web-socket


nie wykonuję operacji podwójnego dodawania do bazy.
funkcja jest uruchamiana na początku skryptu, czyli: wchodząc na stronę moje ip jest automatycznie dodane do bazy, natomiast drugi raz zostaję dodany po zalogowaniu (ip i nazwa usera). oczywiście można to zrobić w ten sposób, ze jeżeli są dwa takie same adresy ip to jeden zostaje automatycznie usunięty, tylko wtedy też nie mam pewności że akurat nie wejdzie w tym samym momencie na stronę ktoś o takim samym ip (np. sieci osiedlowe - adres wspólny).
Go to the top of the page
+Quote Post
!*!
post 12.09.2011, 18:48:41
Post #14





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Czyli jednak dodajesz 2 razy. Zrób to w ten sposób:

Wchodzisz na stronę > zapisujesz IP, UA, czas rozpoczęcia sesji do bazy > logujesz się i tyle. Zmieniasz tylko status z 0 na 1, gdy zalogowany.

Ten post edytował !*! 12.09.2011, 18:49:52


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
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: 19.07.2025 - 06:46