Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Podwójna inkrementacja wartości zmiennej
wnovak
post 23.08.2011, 21:33:34
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.04.2005

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


Witam,

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
  1. class UserSession {
  2. private function __construct() {
  3. $this->getSession();
  4.  
  5. $this->_arUserVars['prevPages']++;
  6.  
  7. if ($this->_arUserVars['prevPages'] > 15) {
  8. //chce wykonać jakąś akcję
  9. $this->_arUserVars['prevPages'] = 0;
  10. }
  11. }
  12. }
  13. public function __destruct() {
  14. $_SESSION['sUser'] = serialize($this->_arUserVars);
  15. }
  16. private function getSession() {
  17. $this->_arUserVars = unserialize($_SESSION['sUser']);
  18. }
  19. }


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??
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 17:23