![]() |
![]() |
![]()
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? |
|
|
![]() |
![]()
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.
|
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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ą
|
|
|
![]()
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
|
|
|
![]()
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) |
|
|
![]()
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
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 09:00 |