ugrás a tartalomhoz

Session megszűnése Subdomain esetén

alkony4 · 2016. Már. 14. (H), 20.48
Szervusztok!

Remélem jó posztba írok, és remélem még nem hangzott el a kérdés (sajnos nem találtam róla információt).
Azzal a problémával fordulok hozzátok, hogy subdomainen üzemelt oldalam esetében a session egy idő után egyszerűen megszűnik.
Mi lehet ennek az oka? Mi a megoldás rá?

Válaszotok előre is köszönöm!
 
1

Megszűnik

Poetro · 2016. Már. 14. (H), 21.41
Minden oldalon egy idő után megszűnik a session. Ugyanis általában egy sütiben van tárolva a munkamenet azonosító, és a sütik egy idő után lejárnak. A munkamenet hosszát be tudod állítani.
2

Az oka ennek az, hogy a

smokey · 2016. Már. 14. (H), 22.01
Az oka ennek az, hogy a sessionnek van egy lejárata. Ez azt jelenti, hogy van egy szerver beállítás, amivel meg tudod adni, hogy egy session mennyi ideig éljen. Ezt az értéket runtime (vagyis futás időben), PHP kódból is tudod változtatni. A session lejárat egyébként relatív mód lehet rossz és jó is. Tegyük fel, hogy esetedben rossz.

Három lehetőséget látok a probléma megoldására, ami igazából nem is biztos, hogy jó megoldás, viszont segít a helyzeteden (nem mondom, hogy csak ezek a megoldások léteznek):
- PHP segítségével módosítod a konfigurációs értékeket
- Beépíted a rendszeredbe az "Emlékezz rám" funkciót
- Pingeled a session-t, hogy ne járjon le (pl.: 2 percenként küldesz egy AJAX requestet a servernek, amivel értesítést küldesz arról, hogy a kliensed még ott van, attól függetlenül, hogy nem kattog az oldalon)

A beállításokat alapesetben két féle módon szokás módosítani (igen, a "php session expiration" keresés első találatát másoltam ide :D).

Az első beállítással megmondod a szervernek, hogy a munkameneteket legalább 1 órán keresztül őrizze meg (3600 sec = 60 min). Azért legalább, mert ha például 30 perccel a munkamenet megnyitása után érkezik egy kérés, akkor újra indul az 1 óra:

ini_set('session.gc_maxlifetime', 3600);
A második konfigolási lehetőség pedig az, hogy a kliensnek mondod meg, hogy 1 órán keresztül őrizze a sessiont. Ez viszont már azt jelenti, hogy a munkamenet pontosan 1 órán keresztül fog élni. 1 óra után kérdés nélkül megszűnik.

session_set_cookie_params(3600);
3

Nagyon szépen köszönöm a

alkony4 · 2016. Már. 14. (H), 22.48
Nagyon szépen köszönöm a választ így némileg jobban átlátom a helyzetet köszönöm.
Ellenben kiegészíteném egy olyannal az egészet hogy ha simán domainről fut egy oldalam az alábbi formába: valami.hu/elérési útvonal/etc akkor akár egy egész este is otthagyhatom nem szűnik meg a session, subdomain esetébe pedig az említett igen rövid időszakon belül megszűnik létezni.
Elképzelhető hogy a standard beállítások között is vannak eltérések? Tehát hogy máskép viselkedik vhost és lokális futtatás esetében?

Köszönöm az értékes válaszaitok.
4

Elképzelhető hogy a standard

smokey · 2016. Már. 14. (H), 23.30
Elképzelhető hogy a standard beállítások között is vannak eltérések?


Igen

Tehát hogy máskép viselkedik vhost és lokális futtatás esetében?


Egy kicsit zavarosnak tűnik a kérdés. Ebben az esetben mit értesz vhost, illetve lokális alatt? A "vhost"-ot nincs értelme egy lapon emlegetni a "lokális" szóval, legalább is ebben a környezetben.

A vhost az igazából egy szerver config node. A szerver fut egy gépen, aminek van IP címe, tudsz felvenni vhost-okat, ahol meg tudod mondani, hogy az "x.asd.com" hostra érkező kérés melyik könyvtárból dolgozzon; meg ezen kívül még sok minden mást lehet állítani, többek között a session expiration-t is.

A lokális pedig nézőpont kérdése. Egyszerűen: valami akkor lokális, ha azon a szerveren/gépen található, amin éppen dolgozol.
5

Elnézést a kései

alkony4 · 2016. Már. 15. (K), 01.20
Elnézést a kései válaszért.

Igen ezt kissé idióta módon fogalmaztam meg.
Alapvetően arra szerettem volna utalni hogy mondjuk a valami.hu/etc/etc/ elérésű oldalam esetében a session nem szűnik csak úgy meg, napokig otthagyhatom akkor se szűnik meg, ellenben a test.valami.hu esetében ugyan ez x időn belül már nincs így, tehát megszűnik a session. Ami érdekes mert sehol nem nyúltam hozzá se phpn belül a sessionokhoz komolyabban se a php beállításai esetében. Ezért is szolt a kérdés arra vonatkozóan, hogy elképzelhető e, hogy a subdomainen keresztül betöltött oldal másképp viselkedik mint ha simán a mina domainről tölteném e be ugyan azt?
Remélem picit érthetőbb így a kérdésem ><.
Ugyan még nem teljesen értem miből származhat ez az eltérés, de ha esetleg valaki tudja (főleg smokey, nagyon köszönöm az eddigi megtisztelő hasznos válaszaid) akkor megtudná mondani miként korrigálható is ez egyben?

A válaszokat előre is köszönöm.
6

Ugyanaz a rendszer fut a fő-

Hidvégi Gábor · 2016. Már. 15. (K), 02.39
Ugyanaz a rendszer fut a fő- és az aldomain-en?
7

Igen

alkony4 · 2016. Már. 15. (K), 11.24
Igen
9

A konfigurációja is

Hidvégi Gábor · 2016. Már. 15. (K), 17.23
A konfigurációja is megegyezik a két rendszernek? A sütemények lejárati dátuma megegyezik?
8

Tudnál egy próbát tenni a

smokey · 2016. Már. 15. (K), 14.45
Tudnál egy próbát tenni a következő módon?

Tegyük fel, hogy a domained "xyz.hu", és itt működik a session úgy, ahogy szeretnéd. Állításod szerint az "abc.xyz.hu" sudomainen előjön a probléma. Mi a helyzet a "www.xyz.hu" esetben?
10

Lehetnek ilyen különbségek.

inf · 2016. Már. 17. (Cs), 04.16
Lehetnek ilyen különbségek. Két helyen, egyrészt a cookie-nál, amit a kliensnek küld. Pl firebug-nál van egy cookies fül, aminél meg tudod nézni, hogy melyik mikor jár le. A másik a szerver oldali session tároló, ami bizonyos idő után törli a cookie-t, szóval ha a kliensen meg is van a cookie, a szerveren már nincs meg a hozzá tartozó tartalom. Ezt gondolom ini_get-el vagy hasonlóval le lehet kérni.