• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sesja w PHP - parę pytanek c:

0 głosów
109 wizyt
pytanie zadane 10 czerwca 2018 w PHP, Symfony, Zend przez Q7V Gaduła (4,300 p.)
Cześć, stworzyłem sobie prosty formularz logowania i rejestracji. Teraz mam zamiar stworzyć różne możliwości dla zalogowanych użytkowników m.in. wylogowanie się, dodawanie treści itp.

Do tego celu operuję na zmiennych sesyjnych i tu rodzi się pierwsze pytanko - czy można jakoś obserwować ich wartości bez konieczności ich wypisywania? W sensie - są one gdzieś przechowywane na serwerze?

Drugie pytanko c: Ile domyślnie trwa sesja i czy tą wartość można modyfikować?

i... stosowania mechanizmu sesji jest w ogóle dobrym rozwiązaniem? Są ciasteczka, ale obsługiwane są z poziomu użytkownika i to na pewno jest groźne. :P

 

i czy sesja jest dla danego adresu IP? Bo używając trybu prywatnego w firefoxie - moja strona działa tak jakby sesja się zachowała i formularz logowania nie wyświetla się gdy zmienna sesyjna przybiera wartość 1 - nie wiem czy zrobiłem błąd i dlatego się nie wyświetla czy tak działa sesja. :D

3 odpowiedzi

+2 głosów
odpowiedź 10 czerwca 2018 przez Arkadiusz Waluk Ekspert (250,210 p.)

W sensie - są one gdzieś przechowywane na serwerze?

Tak, są to pliki na serwerze. Domyślnie chyba są w katalogach tymczasowych systemu, lokalizacje można zmienić ustawieniem w php.ini. Jednak ręczne grzebanie w nich jest bez sensu, całą obsługę masz w kodzie. A jeśli czegoś Ci brakuje to może znak, że sam wbudowany mechanizm sesji to w Twoim przypadku za mało.

Drugie pytanko c: Ile domyślnie trwa sesja i czy tą wartość można modyfikować?

Domyślnie 24 minuty, można modyfikować poprzez ustawienia w php.ini czy funkcje jak session_set_cookie_params().

stosowania mechanizmu sesji jest w ogóle dobrym rozwiązaniem?

To zależy do czego, ale ogólnie tak, nie jest to jakieś rozwiązanie niebezpieczne, sesje są powszechnie stosowane.

 Są ciasteczka, ale obsługiwane są z poziomu użytkownika i to na pewno jest groźne. :P

Sesja też zostawia ciasteczko po stronie użytkownika ze swoim id. Tyle że nie ma tam danych, te na podstawie id z ciasteczka trzymane są już po stronie serwera. Jak mówiłem: zależy, tam gdzie klient nie może czegoś modyfikować trzeba to trzymać po stronie serwera i wtedy użyć np. sesji.

i czy sesja jest dla danego adresu IP? 

Nie, jest oczywiście dla danego klienta - każdy dostaje swoje ciasteczko z id sesji i na tej podstawie jest identyfikowany. Gdyby było po IP to byłaby niezła zabawa zważając na to, że pod jednym zewnętrznym IP może się kryć w zasadzie dowolna liczba klientów :P

komentarz 10 czerwca 2018 przez Q7V Gaduła (4,300 p.)
A czy odświeżając stronę czas trwania sesji liczy się od nowa? c:

Dziękuje za bardzo rozbudowaną odpowiedź, to miłe że komuś chcę się pomagać. :)
komentarz 10 czerwca 2018 przez Arkadiusz Waluk Ekspert (250,210 p.)
Nie, przy odświeżeniu nie powinien się liczyć od nowa. Można to ręcznie wymusić ustawiając od nowa ciasteczko z nową ważnością.
+2 głosów
odpowiedź 10 czerwca 2018 przez Comandeer Mentor (462,240 p.)

W sensie - są one gdzieś przechowywane na serwerze?

Tak, są

Drugie pytanko c: Ile domyślnie trwa sesja i czy tą wartość można modyfikować?

Można. Ta zmienna konfiguracyjna zawiera również aktualny czas trwania sesji.

... stosowania mechanizmu sesji jest w ogóle dobrym rozwiązaniem? Są ciasteczka, ale obsługiwane są z poziomu użytkownika i to na pewno jest groźne. :P

Ale mechanizm sesji też się opiera na ciastkach. Z tym, że w ciastku przechowuje jedynie identyfikator sesji, a całą resztę danych – na serwerze. Nic nie stoi na przeszkodzie, by w taki sam sposób zaimplementować własny mechanizm sesji. 

+1 głos
odpowiedź 10 czerwca 2018 przez Mariusz08 Nałogowiec (48,520 p.)

Do tego celu operuję na zmiennych sesyjnych

Mam nadzieję, że w sesji przechowujesz tylko te najważniejsze rzeczy (bez żadnych flag logged, nicku itp.)

 czy można jakoś obserwować ich wartości bez konieczności ich wypisywania? 

$userId = $_SESSION['userId'];

Tak.

  Ile domyślnie trwa sesja i czy tą wartość można modyfikować?

Nie pamiętam ile dokładnie, domyślnie trwa sesja, ale tą wartość można modyfikować w pliku php.ini

  stosowania mechanizmu sesji jest w ogóle dobrym rozwiązaniem?

Jest dobrym rozwiązaniem.

 Bo używając trybu prywatnego w firefoxie - moja strona działa tak jakby sesja się zachowała i formularz logowania nie wyświetla się gdy zmienna sesyjna przybiera wartość 1 - nie wiem czy zrobiłem błąd i dlatego się nie wyświetla czy tak działa sesja. :D

 Nie wiem jak jest w FF, ale w Chrome jak wejdę w tryb incognito to nie jestem nigdzie zalogowany (żadne google, youtuby, ani fora) więc chyba jakiś błąd FF.

Podobne pytania

0 głosów
1 odpowiedź 187 wizyt
pytanie zadane 3 stycznia w PHP, Symfony, Zend przez LeeVay Użytkownik (740 p.)
0 głosów
3 odpowiedzi 137 wizyt
pytanie zadane 29 grudnia 2016 w PHP, Symfony, Zend przez Ditrix Mądrala (5,440 p.)
0 głosów
2 odpowiedzi 421 wizyt
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

66,494 zapytań

113,266 odpowiedzi

239,865 komentarzy

46,631 pasjonatów

Przeglądających: 118
Pasjonatów: 2 Gości: 116

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...