Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SessionHandling
Forum PHP.pl > Forum > PHP
thornag
Witam.

Chcialbym napisac jakis wlasny session handler po to by na przyklad moc uzywac zmiennych sesyjnych przy roznych domenach itp.

Czytalem o tym w ksiazce PHP5Zaawansowane programowanie, jednak tam zaprezentowana klasa jest jakas watpliwa (jak prawie cala ksiazka). Powod istnienia klasy jest moze wyjasniony dobrze ale jak ona sobie egzystuje juz nie.

Mam kilka pytan co do takiej koncepcji. Pierwsze z nich a chyba najwazniejsze i najbardziej ogolne to jaka roznica miedzy:
  1. <?php
  2. echo $_SESSION['var'];
  3. ?>


a
  1. <?php
  2. $ses = New Session();
  3. echo $ses->getVar('var');
  4. ?>


Drugie, czy przechowywanie danych sesji w bazie danych jest napewno optymalne i zalecane (tak sugeruja autorzy w/w ksiazki).

Trzecie, jak przy uzyciu takiej klasy moge uzywac sesji na wielu domenach.

Czy po zbudowaniu takiego handlera uzywa sie go po prostu jak sesji czy mozna go rozbudowac o np zajmowanie sie logowaniem i czy dla takiego wlasnie zajmowania jandler ma prawo istnienia.

Ogolnie rzecz ujmujac chcialbym ten temat jakos wszechstronnie rozkrecic zeby o zjawisku dowiedziec sie jak najwiecej.
Prph
Witam,

Pierwsze rozwiazanie i drugie wcale nie musi sie roznic. W zasadzie, to hendler sesji nie ma nic do tego, czy dostep do sesji masz tak:

  1. <?php
  2. echo $_SESSION['test'];
  3. ?>


czy tak:

  1. <?php
  2. $oSesja->get('test');
  3. ?>


A to za sprawa tego, ze handler to zbior funkcji lub metody klasy, ktore pozwalaja na zapis danych sesyjnych w inny sposob, niz standardowy - np. w bazie danych.

php pozwala na to dzieki funkcji session_set_save_handler.

Nakazujac php uzycia takiej formy zapisu nie tracisz na obsludze sesji, to jest: session_start(), session_close(), a takze do odczytu i zapisu danych:

  1. <?php
  2. $_SESSION['test'] = 'dziala';
  3. ?>


php zwyczajnie wywyluje odpowiednia funkcje podana do session_set_save_hendler().

A jak moglbys zabrac sie za obsluge sesji w kilku portalach?
Szczerze powiem, ze nie wiem dokladnie, bo nigdy tego nie probowalem. Ale Jedno jest pewnie - sesja musi byc trzymana w spolnej bazie danych.

Dodam jeszcze, ze przylad z ksiazki PHP5 Zaawansowane programowanie jest bardzo watpliwy winksmiley.jpg

Adrian.
thornag
Ok, to teraz sprawa optymalnosci bezpieczenstwa itp. Z tego co sobie tak mysle to jesli zapisywac by sesje w bazie a takze zmienne sesyjne to przy kazdym akcesie (po przeczytanie manuala do session_set_save_handler juz wiem ;P) typu $_SESSION['var'] skrypt bedzie wykonywal zapytanie.
Czy to napewno jest dobre rozwiazanie, rozumiem ze dane sesyjne php i tak zapisuje w zserializowanej postaci w plikach. Wydaje mi sie ze zeby zapisac owe dane w bazie i tak trzeba je zserializowac wiec i tak mamy zracy proces serializacji plus zapytanie ?
Prph
Witam,

Na temat optymalnosci takiego rozwiazanie bylo juz na forum i mozna o tym duzo pisac. Faktem jest, ze dochodzi zapytanie do bazy. Z drugiej strony zastosowanie bazy daje nam sporo mozliwosci. Po prostu trzeba to sprawdzic w praktyce. Sklepy internetowe trzymaja sesje w bazie (moj trzyma) i chodzi dobrze.

Adrian.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.