Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Logowanie w tym samym czasie
MeGusta
post 22.08.2017, 11:44:36
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Witam,
Jak można zrobić aby użytkownik nie mógł się zalogować na dwóch kartach/przeglądarkach/komputerów na to samo konto? Po prostu aby sesja trwała tylko w tej karcie w której sie zalogujemy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Pyton_000
post 22.08.2017, 12:34:02
Post #2





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

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


Sprawdzasz czy sesja już istnieje i tyle. Tyle że musisz sobie gdzieś w BD zapisać relację user->session_id
Go to the top of the page
+Quote Post
MeGusta
post 22.08.2017, 12:50:51
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Przy logowaniu mam zapisywać wartość sesji i w index'ie sprawdzać czy sesja jest rowna tej sesji zapisanej do bazy przy logowaniu? Tak myślę, ale jak np. ktoś się zaloguje i otworzy stronę w dwóch kartach? nie będzie sie musiał logować drugi raz przecież i normalnie mu zadziała.
Go to the top of the page
+Quote Post
b4rt3kk
post 22.08.2017, 13:37:41
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(MeGusta @ 22.08.2017, 13:50:51 ) *
Przy logowaniu mam zapisywać wartość sesji i w index'ie sprawdzać czy sesja jest rowna tej sesji zapisanej do bazy przy logowaniu? Tak myślę, ale jak np. ktoś się zaloguje i otworzy stronę w dwóch kartach? nie będzie sie musiał logować drugi raz przecież i normalnie mu zadziała.


Ale przecież sesja jest jedna na jednego klienta, w tym przypadku na wszystkie otwarte karty w danej przeglądarce. Jeśli byłoby inaczej, to za każdym razem, otwierając coś w nowej karcie, musiałbyś się logować, a to by było niezwykle nieporęczne.

Chyba, że masz na myśli sytuację, że ktoś otwiera 10 kart, na każdej z nich panel logowania i próbuje się logować na każdej z nich. W takiej sytuacji po prostu zabezpieczasz panel logowania metodą/funkcją, która sprawdza, czy użytkownik nie jest już zalogowany. W przeciwnym przypadku następuje przekierowanie.

  1. if ($this->isUserLogged()) {
  2. // użytkownik jest już zalogowany, następuje przekierowanie
  3. // np. na stronę z jego kontem
  4. header("Location: url.php");
  5. }
  6.  
  7. // jeśli znajdujemy się w tym miejscu kodu, oznacza to, że użytkownik się nie zalogował
  8. // możemy wyświetlić mu formularz logowania
  9. echo $this->form();




--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
MeGusta
post 22.08.2017, 14:18:01
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Głównie chodzi tylko o jedna podstronę (dostepna po zalogowaniu) aby można ją było otworzyć w tym samym czasie na jednym koncie tylko raz i aby sobie nie odpalali jej na kilku kartach na raz.
Go to the top of the page
+Quote Post
Pyton_000
post 22.08.2017, 14:31:11
Post #6





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

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


A co ta strona robi?
Go to the top of the page
+Quote Post
b4rt3kk
post 22.08.2017, 14:34:52
Post #7





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(MeGusta @ 22.08.2017, 15:18:01 ) *
Głównie chodzi tylko o jedna podstronę (dostepna po zalogowaniu) aby można ją było otworzyć w tym samym czasie na jednym koncie tylko raz i aby sobie nie odpalali jej na kilku kartach na raz.


Czyli widzisz, jeśli w tym rzecz, to nie chodzi tylko i wyłącznie o karty w ramach tej samej przeglądarki, bo przecież można otworzyć ich kilka (ja np. mam 5 różnych przeglądarek zainstalowanych), a każda przeglądarka to osobna sesja.

Więc po pierwsze musisz wyeliminować możliwość wielokrotnego logowania, kiedy nastąpiło już zalogowanie (względnie wylogować użytkownika na innych urządzeniach, jeśli zalogował się na kolejnym).

A druga sprawa to możliwość jedynie 1-krotnego otworzenia danej podstrony. Tutaj proponowałbym żebyś dodał jakiś unikatowy hash, stanowiący id otwartej karty - z jakimś czasem życia, najlepiej równym czasowi życia sesji lub do wylogowania się użytkownika.

Jeszcze pytanie, co na tej podstronie ma się dziać? Bo jeśli wymaga ciągłego odświeżania to sprawa staje się nieco trudniejsza.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
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: 19.07.2025 - 04:37