Logowanie tylko na jednym urządzeniu w tym samym czasie |
Logowanie tylko na jednym urządzeniu w tym samym czasie |
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ę 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. |
|
|
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. |
|
|
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ąć . Przy logowaniu wsadzam IP do bazy. Na kazdej podstronie zapytanie czy IP jest inne niz to w bazie. Jesli tak - index.php. Dzięki Ten post edytował iki 17.06.2017, 14:15:44 |
|
|
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
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 |
|
|
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.
-------------------- |
|
|
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 |
|
|
17.06.2017, 20:56:32
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 836 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. |
|
|
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.
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 04:21 |