Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Logowanie tylko na jednym urządzeniu w tym samym czasie
iki
post 17.06.2017, 13:24:27
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 16.01.2017

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


Dzień dobry
Borykam się z problemem, mianowicie: chciałbym uniemożliwić logowania się kilku osobom na jednym koncie w tym samym czasie. Szukałem informacji na ten temat jak to zrobić w Internecie, ale nigdzie ma takich informacji lub używam złych słów kluczowych. Wiem, że to jest możliwe, bo grałem kiedyś w grę biggrin.gif i w momencie gdy zalogowałem się na aplikacji, wylogowywano mnie z przeglądarki automatycznie. Taki efekt chciałbym osiągnąć, albo przynajmniej podobny.

Próbowałem to zrobić tak. W momencie logowania do bazy danych wysyłana jest informacja, że użytkownik jest zalogowany. Jeżeli ktoś inny próbuje się zalogować na konto, na które ktoś już jest zalogowany, wyskakiwałaby informacja że konto już jest używane przez inną osobę. W momencie wylogowywania się jest wysyłana informacja, że użytkownik już nie jest zalogowany i można zalogować się gdzieś indziej. Tylko problem jest taki, że po pierwsze kod mi nie działał i można było się zalogować, a po drugi sesja czasami sama się niszczy i wylogowuje użytkownika. Wtedy w bazie danych zostawałaby informacja, że jest zalogowany i w ogóle nie dałoby rady się zalogować.

Macie jakieś gotowe rozwiązania na ten problem? Jest mi to niezbędne do opublikowania strony www. smile.gif
Go to the top of the page
+Quote Post
ohm
post 17.06.2017, 13:30:45
Post #2





Grupa: Zarejestrowani
Postów: 618
Pomógł: 143
Dołączył: 22.12.2010

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


Najprostsze rozwiązanie
Tworzysz hash podczas poprawnego zalogowania, np. wg "login + ip + dane przeglądarki + ewentualnie jakies dane identyfikujące użytkonika", zapisujesz hash w bazie i ten hash przypisujesz do cookie użytkownika. Następnie przy każdej akcji sprawdzasz czy hash się zgadza z konkretnymi danymi (czyli po prostu walidacja hasha, jeśli chciałby ktoś używać danego cookie), jeśli się nie zgadza, niszczysz sesję i wywalasz użytkownika do logowania.
Go to the top of the page
+Quote Post
iki
post 17.06.2017, 13:38:21
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 16.01.2017

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


Hmm no rozumiem, rzeczywiście. Tylko, jestem niestety dość zielony w programowaniu php. Czy zadziałałoby, jeżeli zrobiłbym tak (zresztą zaraz zacznę to robić):
Podczas logowania pobieram ip użytkownika (tyle właściwie chyba by wystarczyło, bez przeglądarki) i tworzę ciąg znaków: $loginIP i wstawiam to do bazy danych. Na każdej podstronie sprawdzam, czy $loginIP jest takie samo jak w bazie tak? No rzeczywiście, zaraz to ogarnę.

EDIT
Super działa! Miałeś rację, wielkie dzięki. Jeśli uznacie, że ten temat jest błachostką się nikomu nie przyda możecie usunąć tongue.gif.
Przy logowaniu wsadzam IP do bazy. Na kazdej podstronie zapytanie czy IP jest inne niz to w bazie. Jesli tak - index.php. Dzięki smile.gif

Ten post edytował iki 17.06.2017, 14:15:44
Go to the top of the page
+Quote Post
Pyton_000
post 17.06.2017, 15:16:29
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


To faktycznie będzie działać, ale musisz wziąć pod uwagę zmienne IP smile.gif
Dodatkowo weź pod uwagę jeśli się ktoś nie wyloguje, wtedy nie będzie wjazdu. Musisz zapisywać sobie czas ostatniej aktywności, ustawić jakiś czas życia sesji np 10min, i jeśli ostatnia aktywność była > 10 min temu to automatem wylogować tamtego usera (usunąć jego sesję z serwera) i pozwolić zalogować nowego.

Jest dużo warunków które trzeba sprawdzać, a to tylko kilka z nich smile.gif
Go to the top of the page
+Quote Post
viking
post 17.06.2017, 15:25:07
Post #5





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Tylko jest to męczące w dobie wielu urządzeń - na przykładzie tego forum. Można zrozumieć w kluczowych aplikacjach typu bankowe ale nie dla zwykłych.


--------------------
Go to the top of the page
+Quote Post
iki
post 17.06.2017, 17:55:59
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 16.01.2017

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


Jeśli ktoś się nie wyloguje to nie ma problemu, żeby się zalogować bo to podczas logowania wrzucam do bazy danych IP nie zważając na poprzednie. No dobrze, ze zmiennym IP rzeczywiście problem... jak go rozwiązać.
viking, muszę zastosować to rozwiązanie, ponieważ moja strona będzie oferowała usługi dla osób na danym koncie. Jeżeli bym tego nie zastosował, z jednego konta mogłoby korzystać 100 osób smile.gif
Go to the top of the page
+Quote Post
Tomplus
post 17.06.2017, 20:56:32
Post #7





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Niektóre serwisy stosują zapisywanie adresów MAC komputerów aby weryfikować użytkowników.

A blokowanie wielu użytkowników w ten sposób nie ma wiele znaczenia, bo mogą zalogować się po czasie trwania sesji.
Także tutaj mogą być inne problemy, bo co gdy użytkownik np. z PC przeniesie się na swój telefon/tablet aby zakończyć działania/obserwacje na swoim koncie. A tutaj nagle dostanie komunikat że nie może się zalogować na własne konto z którego przed chwilą korzystał. Mówię tak tylko hipotetycznie.
Go to the top of the page
+Quote Post
Pyton_000
post 18.06.2017, 08:32:06
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pobranie MAC niestety nie jest takie proste, tutaj potrzebna już jest aplikacja po stronie klienta.
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: 28.03.2024 - 15:32