![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
jestem nowym użytkownikiem i nie wiem czy swój problem dobrze umieściłem jeśli nie to przepraszam i proszę o wyrozumiałość. Pokrótce opiszę swój problem którego rozwiązania niestety nie znalazłem na forum a może po prostu słabo szukałem (IMG:style_emoticons/default/sad.gif) Mianowicie chodzi o to że potrzebuję zrobić coś takiego żeby na jeden login i hasło nie można było się logować równocześnie. Czyli ja jestem zalogowany a kolega który zna mój login i hasło też chce się zalogować to ma dostać " Ktoś już jest zalogowany na Twój login" Od razu powiem że chcę to dodać już do istniejącej platformy opartej na PHP i MySql. A jeszcze jedno przy okazji chciałem się zapytać czy jest możliwość zrobienia czegoś takiego jak zliczanie ile razy się dany użytkownik zalogował i np po 10 razie żeby musiał zmienić hasło i np żeby 5 ostatnich haseł było przechowywane (IMG:style_emoticons/default/questionmark.gif) Dziękuję za jakiekolwiek podpowiedzi/rady ( oczywiście wujek google też będzie radą (IMG:style_emoticons/default/biggrin.gif) ) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Co do blokady drugiego logowania to wystarczy dodać pole (na przykład "last_activity") do bazy danych do tabelki z użytkownikami. Pole to będzie datą ostatniej aktywności użytkownika - trzeba by było updateować to pole przy każdym odświeżeniu strony (z założenia) ustawiając aktualną datę. Oczywiście mówię o sytuacji gdy użytkownik jest już zalogowany.
Wylogowanie powinno wylogować użytkownika oraz ustawić "last_activity" na jakąś starą datę (na przykład 1 stycznia 2000 00:00:00 (IMG:style_emoticons/default/tongue.gif) ). Logowanie: Przy logowaniu sprawdzasz czy dane są prawidłowe jak zwykle oraz dodatkowo czy pole last_activity nie jest starsze od "teraz" o czas trwania sesji (na przykład 15 minut - po tym czasie sesja się nie odnowi i użytkownik i tak zostanie wylogowany). Jeżeli te warunki są spełnione, logujesz użytkownika i ustawiasz "last_activity" na teraz. Próba logowania #2 i kolejna: Jeżeli last_activity jest młodsze niż "teraz" - 15 minut to wyrzucasz, że ktoś jest aktualnie zalogowany. Można do tego dodać zapamietywanie sesji, IP itp... dla bardziej zaawansowanych opcji. Co do pytania drugiego to też żaden problem - dodaj pole "licznik" do tabelki z uzytkownikami i zwiększaj je o 1 przy każdym logowaniu danego usera. Przy logowaniu sprawdzaj też czy pole licznik jest podzielne przez liczbę logowań po których następuję zmiana hasła (licznik % 5 == 0 - na przykład). Jeżeli wychodzi na to że jest logowanie wymagające zmiany hasła - generujesz nowe hasło - stare możesz trzymać w jakiejś innej tabelce czy w jakimś innym polu ewentualnie. Hasło możesz wysłać na mail itd... to już należy do Ciebie (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 658 Pomógł: 37 Dołączył: 4.06.2005 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to zrobił na bazie, albo do istniejącej dodał kilka pól takich jak np: status_login i tu cyfra 1 lub 0 , podczas logowania sprawdza która jest . Jeśli 1 to odmawia zalogowania. Status się zmienia po wylogowaniu na 0.
Tak samo bym zrobił ze zmianą hasła po każdym logowaniu pobiera cyferkę z bazy dodaje 1 i zapisuje, jeśli będzie 10 to przerzuca na strone gdzie trzeba zmienić hasło. Co prawda trzeba sie zastanowić czy takie zabezpieczenia są konieczne i czy nie utrudnią życia (IMG:style_emoticons/default/smile.gif) może wystarczy użyć md5 do "haszowania" haseł i logowanie przełączyć na https a nie na http? Decyzje pozostawiam Tobie. To mój pomysł na Twoje problemy Ten post edytował redelek 23.11.2011, 09:39:31 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Z wymuszaniem zmiany haseł właśnie chodzi o to aby utrudnić życie ponieważ nie chcę aby użytkownik przekazywał swój login i hasło innym i żeby miał świadomość tego że jak udostępni to będzie musiał zaraz zmieniać hasło ( może mało to jest user friendly ale ..) i myślę że rozwiązanie radelka chyba będzie prostszym odnośnie równoległego logowania.
A jeśli chodzi o przetrzymywanie użytych haseł to właśnie są one "haszowane" i nie za bardzo wiem jak zrobić mechanizm sprawdzający Ale oczywiście dziękuje wam za sugestie |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@redelek - mała sugestia (IMG:style_emoticons/default/smile.gif)
Co do twojej propozycji logowania z polem 0/1 - co w przypadku gdy użytkownik zaloguje się a następnie wyłączy przeglądarkę i nie wróci na tą stronę przez miesiąc? - Nikt już nie będzie mógł się zalogować bo pole będzie miało 1 a nie będzie aktualnie zalogowanego usera - stąd moja propozycja z datą (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to zrobił na bazie, albo do istniejącej dodał kilka pól takich jak np: status_login i tu cyfra 1 lub 0 , podczas logowania sprawdza która jest . Jeśli 1 to odmawia zalogowania. Status się zmienia po wylogowaniu na 0. Ale jeśli sesja wygaśnie samoczynnie to user nie będzie mógł się zalogować ponownie ,ponieważ dalej pole status będzie = 1 , wiec tutaj warto dodać pole last_active i porównywać z czasem trwania sesji użytkownika. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
no to faktycznie z systemem 0/1 może być problem ale może ja nie rozumiem albo jeszcze za mało kawy się napiłem jak użyć do tego znacznika czasu (IMG:style_emoticons/default/questionmark.gif)
musiała by się ta wartość non stop aktualizować Ten post edytował malpik_orginal 23.11.2011, 11:19:38 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Można w mechaniźmie sesji akualizować w bazie danych pola 'last_activity' i 'logged'. I sprawdzać warunki:
- jeżeli jest zalogowany i last_activity jest mniejsze niż (ustalona odgórnie) długość sesji - zabraniać wejścia - jeśli jest zalogowany, ale gość się nie wylogował, to robić update bazy (starego wpisu), uaktualniać w tym wpisie "logged" na OFF, apotem stworzyć nową sesję - jeśli nie jest zalogowany, to tworzyć nową sesję Oczywiście wszystko wiąże się z uaktualnieniami w bazie, i to w przeciągu trwania całej sesji, czyli update pola 'last_activity' musisz uaktualniać praktycznie przy otwarciu każdej nowej strony. Sephirus: raz na ileś akcji? Niezbyt dobre imho. Przykład: sesja ustawiona na godzinę - jeśli uaktualniasz nawet co drugą akcję, to user zaloguje się, pójdzie sobie na kawę i śniadanie (powiedzmy 30 minut), potem coś kliknie, znów nie będzie aktywny w serwisie przez kolejne powiedzmy 40 minut, i już mamy ponad 1h. Chyba że źle zrozumiałem. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 22.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
A co powiecie na wykorzystanie mechanizmu "kto jest on-line"
skoro jest coś takiego powinno się móc to wykorzystać ( nie wiem czy dobrze myślę ale skoro jest coś już gotowego to czemu tego w jakiś sposób nie wykorzystać ) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 12:51 |