Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $_session W Własnym Session Handlerze
Forum PHP.pl > Forum > PHP
LukasMG
Napisałem sobie session handlera opartego na mysqlu i posiadam klasę odpowiadającą za zapis do bazy:
  1. <?php
  2.  
  3.         function _session_save($id, $value){
  4.                 $zapytanie = mysql_query('INSERT INTO `sessions`
  5.                                         (`id`, `session_start`, `session_value`, `ostatnia_aktywnosc`)
  6.                                         VALUES (\"'.$id.'\"\"'.time().'\"\"'.$value.'\"\"'.time().'\")
  7.                                         ');
  8.                 if($zapytanie){
  9.                 
  10.                         return true;
  11.                 }
  12.                 
  13.                 else{
  14.                 
  15.                 $zapytaniee = mysql_query('UPDATE `sessions` SET
  16.                                         `session_value` = \"'.$value.'\", `ostatnia_aktywnosc` = \"'.time().'\"
  17.                                         where `id` =  \"'.$id.'\"
  18.                                         ');
  19.                                         
  20.                                         
  21.                 if($zapytaniee){
  22.                 
  23.                         return true;
  24.                         
  25.                 }
  26.                 else{
  27.                 
  28.                         return false;
  29.                         
  30.                  }
  31.                 }
  32.          }
  33.  
  34. ?>


Wszytko fajnie działa, handler zapisuje sesje, zapisuje zmienną gdy używana jest funkcja session_register jednak gdy chcę użyc tablicy $_SESSION to handler wogóle nie przekazuje sterowania funkcji odpowiedzialne za zapis.
Użycie tablicy jest wogóle możliwe w własnym session handlerze?

UPDATE:

A najlepsze jest to gdy w skrypcie wogóle pojawi się tablica $_SESSION to sesja nie jest tworzona blink.gif

  1. <?php
  2.  
  3. $_SESSION['a'] = 'x';
  4.  
  5. ?>
Dabroz
Gdyby to było C, to mógłbyś przeładować operator [] w klasie, a potem zadeklarować zmienną... ale w php (a zwłaszcza 4) to nie wiem tongue.gif
LukaszLenart
Jak jest ustawiona register_globals w php.ini ?
LukasMG
Globalsy są na off. Ale myśle że nie tak tkwi problem

I znalazłem bład który psuł całym mechanizm...

W całej mej głupocie zapomniałem sprawdzic co zwraca mi funkcja mysql_error" title="Zobacz w manualu PHP" target="_manual...

Otóż zapytanie
  1. <?php
  2.  
  3. $zapytanie = mysql_query('INSERT INTO `sessions`
  4. (`id`, `session_start`, `session_value`, `ostatnia_aktywnosc`)
  5. VALUES (\"'.$id.'\"\"'.time().'\"\"'.$value.'\"\"'.time().'\")
  6. ');
  7.  
  8. ?>


zwraca błąd, ponieważ zserializowana wartość sesji zawiera znaki które rozsypują wyrażenie z cudzysłowiami.
Poprawnie powinno wszytko wyglądać:

  1. <?php
  2.  
  3. $zapytanie = mysql_query(&#092;"INSERT INTO `\".$this->table_name.\"`
  4. (`id`, `session_start`, `session_value`, `ostatnia_aktywnosc`)
  5. VALUES ('\".$id.\"', '\".time().\"', '\".$value.\"', '\".time().\"')
  6. &#092;");
  7.  
  8. ?>


Dziękuje wszytkich za zainteresowanie tematem. smile.gif
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.