Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Session Handler - Zarządzanie zasobami sesji [kwiateek]
itsme
post 22.03.2004, 20:41:21
Post #1





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




Uwagi, pytania zwiazane zwiazane z artykulem autorstwa kwiateek "Session Handler - Zarządzanie zasobami sesji" prosze pisac w tym temacie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
anas
post 22.12.2004, 19:41:54
Post #2





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 22.09.2002
Skąd: Gorzów Wlkp

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


Witam wszystkich

Wczoraj naszło mnie żeby przepisać klasę kwiatka do PHP5 z kilkoma modyfikacjami(np. uzycie adodb do połączenia z bazą). Wszystko szło jak należy do momentu kiedy miałem użyć tego co stworzyłem. Zastosowanie klasy nie przynosi rezultatów. Sesje nie są zapisywane - jedyne co mi wywala php, to taki warning:

Kod
Warning: Unknown: Your script possibly relies on a session side-effect which existed until php 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0


Pierwszy raz widzę coś takiego - ktoś ma pomysł co może powodować takie ostrzeżenie?

Oto kod klasy handlera:

  1. <?php
  2.  
  3. class SessionHandler
  4. {
  5. /**
  6. * Dane konfiguracyjne serwera bazy danych - do polączenia.
  7. * @var array $dbConfig - Ustawiane przez konstruktor @see __construct();
  8. * @access private
  9. */
  10. private static $dbConfig = array();
  11.  
  12. /**
  13. * Tabela z danymi sesyjnymi
  14. * @var string $sessionTable - Ustawiana przez konstruktor @see __construct();
  15. * @access private
  16. */
  17. private static $sessionTable; 
  18.  
  19. /**
  20. * Zmienna przechowujaca czas zycia sesji  
  21. * @var int $sessionLifetime - Ustawiana przez konstruktor @see __construct();
  22. * @access private
  23. */
  24. private $sessionLifetime;
  25.  
  26. /**
  27. * Zmienna przechowujaca instancje abstrakcji bazy, posluzy do komunikacji z
  28. baza.  
  29. * @var Creole $dbConnection
  30. * @access private
  31. */
  32. private static $dbConnection;  
  33.  
  34. /**
  35. * Konstruktor klasy SessionHandler
  36. * Przygotowanie polaczenia ze baza danych i okreslenie parametrow wstepnych
  37.  
  38. * @param array $dbConfig - Dane konfiguracyjne bazy.
  39. * @param string $sessionTable - nazwa tabeli przechowującej dane sesji. 
  40. * @param int $sessionLifetime - Maksymalny czas istnienia nieaktywnej sesji. 
  41. * @return void 
  42. * @access public 
  43. */  
  44. public function __construct($dbConfig = false, $sessionTable = false, $sessionLifetime = 0) 
  45. {
  46. if($dbConfig AND $sessionTable)
  47. {
  48. /*
  49. * Dane do polaczenia z baza danych.
  50. */
  51. $this->dbConfig['type']  = $dbConfig['type'];
  52. $this->dbConfig['host']  = $dbConfig['host'];
  53. $this->dbConfig['username'] = $dbConfig['user'];
  54. $this->dbConfig['password'] = $dbConfig['password'];
  55. $this->dbConfig['database'] = $dbConfig['database'];
  56.  
  57. /*
  58. * Pozostale dane konfiguracyjne - nazwa tabeli przechowujacej dane sesji
  59. * oraz czas okreslajcy zycie sesji.
  60. */
  61. $this->sessionTable = $sessionTable;
  62. $this->sessionLifetime = $sessionLifetime; 
  63.  
  64. /*
  65. * Stala przechowujaca sciezke do abstrakcji DB
  66. */
  67. define('DB_ABSTRACT_PATH', 'adodb/adodb.inc.php'); 
  68. }
  69. else 
  70. {
  71. // error_handler();
  72. }
  73. }
  74.  
  75. /**
  76. * Nawiązywanie połączenia bazodanowego
  77. * @return bool 
  78. * @access private 
  79. */ 
  80. private function dbConnect() 
  81. {
  82. if(require_once(DB_ABSTRACT_PATH))
  83. {
  84. $this->dbConnection = &ADONewConnection($this->dbConfig['type']); 
  85. $this->dbConnection->PConnect($this->dbConfig['host'], $this->dbConfig['username'],
  86. $this->dbConfig['password'], $this->dbConfig['database']);
  87. return true;
  88. }  
  89. else
  90. {
  91. return false;
  92. }
  93. }
  94.  
  95. /**
  96. * Inicjalizacja sesji 
  97. * @param string $sesion_savepath Lokalizacja zapisu sesji
  98. * @param string $session_name Nazwa sesji 
  99. * @return bool 
  100. * @access private 
  101. */ 
  102. public function _open($session_savepath, $session_name) 
  103. {
  104. if($this->dbConnect()) 
  105. {
  106. return true;
  107. }
  108. }
  109.  
  110. /**
  111. * Zakończenie sesji
  112. * @return bool 
  113. * @access private 
  114. */ 
  115. public function _close()
  116. {
  117. if($this->_gc())
  118. {
  119. return true;
  120. }
  121. else 
  122. {
  123. return false;
  124. }
  125. } 
  126.  
  127. /**
  128. * Odczytywanie danych sesyjnych
  129. * @param string $sessionID - Identyfikator sesji
  130. * @return mixed
  131. * @access public 
  132. */ 
  133.  
  134. public function _read($sessionID) 
  135. {
  136. //$stmt = $this->dbConnection->Prepare('SELECT sessionValue FROM ? WHERE sessionID = ?');
  137. //$rs = $this->dbConnection->Execute($stmt,array($this->sessionTable, $sessionID));
  138.  
  139. if($array = $this->dbConnection->GetAssoc(&#092;"SELECT sessionValue FROM \".$this->sessionTable.\" WHERE sessionID = \".$sessionID))
  140. {
  141. return($array['sessionValue']);
  142. }
  143. else 
  144. {
  145. return false;
  146. }
  147. }
  148.  
  149. /**
  150. * Zapisywanie danych sesji
  151. * @param string $sessionID Identyfikator sesji
  152. * @param string $sessionValue Wartości sesyjne
  153. * @return bool
  154. * @access public 
  155. */ 
  156.  
  157. public function _write($sessionID, $sessionValue) 
  158. {
  159.  
  160. $stmt = $this->dbConnection->Prepare('INSERT INTO ? VALUES(?,?,?,?)');
  161.  
  162. if($this->dbConnection->Execute($stmt,array($this->sessionTable, $sessionID, time(), time(), $sessionValue))) 
  163. {
  164. return true;
  165. } 
  166. else 
  167. {
  168. $stmt = $this->dbConnection->Prepare('UPDATE ? SET sessionTime = ?, sessionValue = ? WHERE sessionID = ?'); 
  169.  
  170. if($this->dbConnection->Execute($stmt,array($this->sessionTable, time(), $sessionValue, $sessionID))) 
  171. {
  172. return true;
  173. } 
  174. else 
  175. {
  176. return false;
  177. } 
  178. }
  179. } 
  180.  
  181. /**
  182. * Usuwanie danych sesji
  183. * @param string $sessionID - Identyfikator sesji
  184. * @return bool
  185. * @access public 
  186. */ 
  187.  
  188. function _destroy($sessionID) 
  189. {
  190. $stmt = $this->dbConnection->Prepare('DELETE FROM ? WHERE sessionID = ?'); 
  191.  
  192. if($this->dbConnection->Execute($stmt,array($this->sessionTable, $sessionID))) 
  193. {
  194. return true;
  195. } 
  196. else 
  197. {
  198. return false;
  199. } 
  200. } 
  201.  
  202. /**
  203. * \"Garbage collection\" - Usuwanie niepotrzebnych danych sesji
  204. * @return bool
  205. * @access public
  206. */ 
  207. function _gc() 
  208. {
  209. $sessionDeletetime = time() - $this->sessionLifetime;
  210. $stmt = $this->dbConnection->Prepare('DELETE FROM ? WHERE sessionTime < ?');
  211.  
  212. if($this->dbConnection->Execute($stmt,array($this->sessionTable, $sessionDeletetime))) 
  213. {
  214. return true;
  215. } 
  216. else 
  217. {
  218. return false;
  219. } 
  220. } 
  221. }
  222. ?>


a to sposób użycia:

  1. <?php
  2.  
  3. include(&#092;"SessionHandler.class.php\");
  4.  
  5. $dupa = 15;
  6.  
  7. $db_config['type'] = 'mysql';
  8. $db_config['host'] = 'host';
  9. $db_config['user']= 'user';
  10. $db_config['password'] = 'pass';
  11. $db_config['datebase'] = 'db';
  12.  
  13. // Tworzenie obiektu zarządzania sesją
  14.  
  15. $session = new SessionHandler($db_config, 'sessions', 300);
  16.  
  17. // Zastępowanie domyślnych funkcji metodami sesji
  18.  
  19. session_set_save_handler (array(&$session, '_open'), 
  20. array(&$session, '_close'), 
  21. array(&$session, '_read'), 
  22. array(&$session, '_write'), 
  23. array(&$session, '_destroy'), 
  24. array(&$session, '_gc')
  25.  );
  26.  
  27.  
  28. if($_GET['action'] == 'check')
  29. {
  30. echo $_SESSION['dupa'];
  31. }
  32.  
  33. ?>
  34.  
  35. <a href='session.php?action=check'>test</a>


Dodam, że w bazie danych też nie ma żadnych rekordów.

Co o tym myślicie - z góry dzięki za wskazówki.

pozdrawiam

anas
Go to the top of the page
+Quote Post

Posty w temacie
- It's_me   Session Handler - Zarządzanie zasobami sesji [kwiateek]   22.03.2004, 20:41:21
- - Ive   artykuł ciekawy ale wkurzają mnie te przykłady! bo...   22.03.2004, 21:03:32
- - Siner   Takie cos mnie zaistaresowało. Cytat....Tzn. że me...   23.03.2004, 08:03:53
- - It's_me   nie sadze aby ktos powiedzial ze sie czepiasz wlas...   23.03.2004, 08:06:09
- - wojtek   To moze i ja dodam klilka bledow, ktory znalazlem ...   23.03.2004, 17:37:07
- - kwiateek   Czytałem swój tekst przynajmniej kilkanaście razy ...   23.03.2004, 19:11:57
- - shima   Sugeruję użyć narzędzi do sprawdzania pisowni. Jes...   23.03.2004, 19:31:09
- - scanner   Artykuł został zaktualizowany. Poprawiono wszystki...   23.03.2004, 19:56:04
- - KirkoR   Dopiero zaczynam zabawę z programowaniem obiektowy...   10.04.2004, 16:26:06
- - kwiateek   CytatPierwsze: dlaczego sesje po wygaśnięciu nie z...   12.04.2004, 11:40:19
- - matid   Jakie dyrektywy muszą być ustawione w php.ini aby ...   12.04.2004, 16:28:16
- - kwiateek   CytatJakie dyrektywy muszą być ustawione w php.ini...   13.04.2004, 06:35:02
- - matid   O takich podstawach pamiętam, nie zadawałbym pytan...   19.04.2004, 19:31:24
- - kwiateek   CytatO takich podstawach pamiętam, nie zadawałbym ...   20.04.2004, 20:25:31
- - letus   Witam!. Uruchomiłem ten skrypt u siebie na serwerz...   7.05.2004, 20:27:31
- - matid   CytatPodaj link do tego phpinfa. Nie tyle do sameg...   7.05.2004, 20:38:02
- - kwiateek   CytatWitam!. Uruchomiłem ten skrypt u siebie n...   10.05.2004, 19:12:52
- - hup   zastosowanie klasy opsianej w artukule czas genero...   29.05.2004, 21:11:27
- - kwiateek   Cytat<?php $connect = ... $this->db_config['...   31.05.2004, 06:45:00
- - FastRed   Kod$this->db_config['password'] = $db_...   31.05.2004, 13:25:55
- - hup   komu dziala _gc? skad klasa "wie" jaki jest lifeti...   31.05.2004, 17:10:56
- - kwiateek   Cytatkomu dziala _gc? skad klasa "wie" jaki jest l...   31.05.2004, 20:17:21
- - DeyV   poprawione   31.05.2004, 20:35:47
- - hup   _gc dziala po zmianie: [PHP] pobierz, plaintext ...   31.05.2004, 22:10:59
- - Bartosław   Dzięki wielkie za ten artykuł! Jest super. Ale...   21.08.2004, 22:06:16
- - itsme   Cytat(Bartosław @ 2004-08-21 22:06:16)Dzięki ...   22.08.2004, 07:15:25
- - kwiateek   Cytat(Bartosław @ 2004-08-21 23:06:16)Dzięki ...   23.08.2004, 19:24:16
- - anas   Witam wszystkich Wczoraj naszło mnie żeby przepi...   22.12.2004, 19:41:54
- - Mery   U mnie pojawił się taki problem. Nie wiem czy nie ...   9.03.2005, 12:56:38
- - PUPI   Cytatbool gc ( int session_lifetime ); Funkcja ta...   10.03.2005, 01:05:59
- - Fallout   Witam Zostałem odesłany do tego skryptu, więc go ...   6.05.2005, 03:52:08
- - AxZx   witam dziekuje Kwiatkowi za udostepnie tej klasy ...   9.07.2005, 23:47:05
- - no_face   Widze, ze dosc ciekawa rozmowa byla tutaj prowadzo...   13.09.2007, 10:22:44
- - nospor   zeby tobie bana na manuala dali to mi sie wierzyc ...   20.03.2008, 12:05:20
- - _olo_1984   mam problem z tym session handlerem. Przerobiłem s...   18.07.2008, 08:38:38


Reply to this topicStart new topic
5 Użytkowników czyta ten temat (5 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 13:48