Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sesje - kilka logowan jednego usera
shycat
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


Witam, mam na mojej stronie autoryzacje uzytkownikow oparta na sesjach... i mam tutaj taki "problem", ktory w sumie umiem rozwiazac, ale zastanawiam sie nad jakims prostszym rozwiazaniem - jakas dedykowana funkcja php czy cos... problem polega na tym, ze uzytkownik loguje sie z jednego komputera, po chwili ktos loguje sie na konto tego samego usera z innego komputera... ktory przypuscmy ma taki sam adres IP i taka sama przegladarke... w jaki sposob mozna zrobic, zeby po ponownym logowaniu uzytkownik nr 1 zostal "wylogowany".

Moj pomysl jest taki, zeby w bazie danych utworzyc tabele 'sesja' (czy cos (IMG:style_emoticons/default/tongue.gif) ) skad bedzie pobierany SESSID i porownywany z tym z ciasteczka... jest jakis latwiejszy sposob?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
azerty
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.03.2011

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


Skoro komputer jest taki sam, ma to samo IP, ale komputer jest inny, to masz problem logiczny. Przekombinowane to troche. Ale nigdy nie wylogowuj jednego - zawsze wszystkie sesje zakoncz i pokaz informacje uzytkownikowi.
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


W bazie przechowuj wartość liczbową, którą zapisujesz do ciasteczka a następnie zwiększasz o 1 w bazie. Przy każdej akcji usera porównujesz jego ciacho z wartością z bazy i jeśli w ciachu jest mniejsza niż w bazie to mu niszczysz sesję. W ten sposób każdorazowe logowanie na to samo konto zniszczy sesję poprzednią. Nie jest to super zabezpieczenie bo user może edytować swoje ciacho, ale zawsze coś. Dla większego bezpieczeństwa możesz na przykład zakodować wartość w ciachu używając base64_encode i rozkodować do sprawdzenia.

Ten post edytował sadistic_son 4.03.2011, 01:35:58
Go to the top of the page
+Quote Post
shycat
post
Post #4





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


chodzilo mi o jakas dedykowana funkcje... ale skoro takiej nie ma (lub po prostu nie wspomnieliscie o niej), to moj pomysl wydaje mi sie (nie chwalac sie) lepszy... bo w sumie i tak za kazdym razem sa pobierane dane z tabeli dot uzytkownikow... wiec dodatkowa kolumna sesid, w ktorej bedzie hash aktualnej sesji i potem porownanie - jest lepszym sposobem niz pakowanie dodatkowego cookies'a...

ps. to, ze to samo IP i ta sama wersja przegladarki to nie jest zaden blad logiczny, ani tez nie jest to przekombinowane. Przyklad - 2-ch uzytkownikow tej samej sieci Lan, posiadajacych ta sama wersje przegladarki - np. zaktualizowanego FF'a...

ps2. ... base64 to zadne zabezpieczenie... z reszta nie sluzy tez do ich tworzenia (IMG:style_emoticons/default/wink.gif) ... juz o wiele lepsze bylo by np. substr(md5('tajny_string (IMG:style_emoticons/default/smile.gif) '.$id)),4,8);

Ten post edytował shycat 4.03.2011, 01:54:05
Go to the top of the page
+Quote Post
zend
post
Post #5





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Do tabeli 'sesja' dorzuć kolumne z id użytkownika. Przy logowaniu sprawdzasz czy id użytkownika istnieje w tej tabeli, jeśli istnieje to usuwasz tamtą sesję, a tworzysz nową
Go to the top of the page
+Quote Post
shycat
post
Post #6





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


Zend - no, no, o cos takiego mi wlasnie chodzilo ofc (IMG:style_emoticons/default/wink.gif) ... z tym, ze ja mam tabele "uzytkownicy", gdzie sa po prostu dane uzytkownikow, takie tam pierdoly i tam dorzuce kolomne sesja, bo nie wiem czy jest sens robienia nowej tabeli "sesja" skoro tabela "uzytkownicy" jest sprawdzana z kazdym odswiezeniem
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jest sens. Bo mogą być również użytkownicy niezalogowani.

A tabele sesyjne zwykle się w MySQL opiera na silniku MEMORY, o zaletach sobie poczytaj. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
shycat
post
Post #8





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


Erix, poczytalem, hm, masz racje, nie znalem tego typu... wiec zwracam honor (IMG:style_emoticons/default/wink.gif) i w takim razie uzyje tabeli typu MEMORY
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 21:51