Mam pewien problem z obsługą sesji. Otóż po zalogowaniu użytkownika chciałbym liczyć ilość otwartych przez niego stron. Mam napisaną klasę do obsługi sesji. Wszystko generalnie działa ok, nie przeładowuje żadnych funkcji do obsługi sesji. Po prostu w konstruktorze klasy wywołuje session_start(); i pobieram odpowiednie zserializowane tablice, zapisuje je w zmiennej składowej. W destruktorze mam funkcję serializujacą i zapisującą w sesji dane z obiektu. Klasa jest singletonem więc nie można utworzyć więcej jak jednego obiektu. Więc jeśli mam tą zmienną i ją inkrementuje to zamiast o 1 jej wartość zwiększa się o 2. Co jest najzabawniejsze, jeśli w testowym skrypcie na serwerze, po prostu wywołałem session_start() to ta wartość zwiększała się o 1, mimo iż w samym skrypcie nigdzie się do niej nie odnosiłem.
Klasa, trochę uproszczona zostawiłem tylko istotne fragmenty kodu
class UserSession { private function __construct() { $this->getSession(); $this->_arUserVars['prevPages']++; if ($this->_arUserVars['prevPages'] > 15) { //chce wykonać jakąś akcję $this->_arUserVars['prevPages'] = 0; } } } public function __destruct() { } private function getSession() { } }
Jeśli po zainicjowaniu całej sesji tą klasą w innym pliku wpiszę session_start(); print_r($_SESSION); - to 'prevPages' zapisany w sesji będzie się inkrementował, dlaczego?
Ktoś wie o co chodzi??