Witam
Przerabiam książkę i jest tam taka klasa, która trochę zmieniłem. Lecz po uruchomieniu wyskakuje mi wiele błędów. Co robię nie tak, że mam tyle błędów. Np. W 164 LINI wyskakuje taki błąd

Undefined variable: objDB in C:\wamp\www\lookbook\class\class.UserSession.php on line 164

linia ta zawiera taki kod:
  1. $row=$objDB->select($sql);

a gdy zamienie to na:
  1. $row=Datebase::select($sql);

to działa dobrze. Gdzie jest tu błąd skoro w konstruktorze stworzyłem taki obiekt.
?
a to reszta błędów:

1.Undefined index: HTTP_USER_AGENT in C:\wamp\www\lookbook\class\class.UserSession.php on line 27
2.PHPSESSID in C:\wamp\www\lookbook\class\class.UserSession.php on line 28
3.HTTP_USER_AGENT in C:\wamp\www\lookbook\class\class.UserSession.php on line 158
4.Undefined variable: objDB in C:\wamp\www\lookbook\class\class.UserSession.php on line 164
5.Call to a member function select() on a non-object in C:\wamp\www\lookbook\class\class.UserSession.php on line 164


  1. <?php
  2.  
  3. require_once('class.User.php');
  4. require_once('class.Datebase.php');
  5.  
  6. class UserSession extends User{
  7. private $php_sesion_id;
  8. private $native_session_id;
  9. private $dbhandle;
  10. private $logged_in;
  11. private $session_tieout = 600;
  12. private $session_lifespan =3600;
  13.  
  14. public function __construct() {
  15. $objDB= new Datebase();
  16. //$dbhandle=$objDB->connect();
  17.  
  18. array(&$this, '_session_open_method'),
  19. array(&$this, '_session_close_method'),
  20. array(&$this, '_session_read_method'),
  21. array(&$this, '_session_write_method'),
  22. array(&$this, '_session_destroy_method'),
  23. array(&$this, '_session_gc_method')
  24. );
  25.  
  26. $strUserAgent = $GLOBALS["HTTP_USER_AGENT"];
  27. if ($_COOKIE["PHPSESSID"]){
  28. $this->php_sesion_id=$_COOKIE["PHPSESSID"];
  29. $sql = "SELECT session_id FROM session_user
  30. WHERE session_id_ascci = '" . $this->php_session_id .
  31. "' AND ((now() - session_when_start) < ' " . $this->session_lifespan . " seconds')
  32. AND session_user_agent='" . $strUserAgent . "'
  33. AND ((now() - session_last_impress) <= '".$this->session_timeout." seconds'
  34. OR session_last_impress IS NULL)";
  35.  
  36. $result=$objDB->select($sql);
  37. if($objDB->dbNumRows==0) {
  38. $failed =0;
  39. $sql ="DELETE FROM session_user
  40. WHERE (session_id_ascci = '". $this->php_session_id . "')
  41. OR (now() - session_when_start) > $maxlifetime)";
  42. $result =$objDB->delete($sql);
  43.  
  44. $sql="DELETE FROM session_user
  45. WHERE session_id
  46. NOT IN (SELECT session_id FROM session_user)";
  47. $result=$objDB->delete($sql);
  48. unset($_COOKIE["PHPSESSID"]);
  49. };
  50. };
  51. session_set_cookie_params($this->session_lifespan);
  52. return $objDB;
  53. }
  54.  
  55. public function Impress() {
  56. if ($this->native_session_id) {
  57. $sql="UPDATE session_user
  58. SET session_last_impress = now()
  59. WHERE session_id = " . $this->native_session_id;
  60. $result = $objDB->update($sql);
  61. }
  62. }
  63.  
  64. public function IsLoggedIn() {
  65. return($this->logged_in);
  66. }
  67.  
  68. public function GetUserID(){
  69. if ($this->logged_in){
  70. return($this->user_id);
  71. } else {
  72. return(false);
  73. }
  74. }
  75.  
  76. /*public function GetUserObject() {
  77.   if($this->logged_in){
  78.   if (class_exists("User")) {
  79.   $objUser = new User($this->user_id);
  80.   return($objUser);
  81.   } else {
  82.   return(false);
  83.   }
  84.   }
  85.   }*/
  86.  
  87. public function GetSessionIndentifier() {
  88. return($this->php_sesion_id);
  89. }
  90.  
  91. public function Login($strUsername, $strUserPassword){
  92. $strUserPasswordSHA1= sha1($strUserPassword);
  93. $sql="SELECT user_id FROM user
  94. WHERE user_name = '$strUsername'
  95. AND user_password = '$strUserPasswordSHA1'";
  96.  
  97. $row=$objDB->select($sql);
  98. if ($objDB->dbNumRows>0) {
  99. $this->user_id=$row['session_user_id'];
  100. $this->logged_in =true;
  101. $sql="UPDATE session_user
  102. SET session_logged = true, session_user_id = " . $this->user_id . "
  103. WHERE session_id = " . $this->native_session_id;
  104. $objDB->update($sql);
  105. return(true);
  106. } else {
  107. return(false);
  108. }
  109. }
  110.  
  111. public function LogOut() {
  112. if ($this->logged_in== true) {
  113. $sql="UPDATE session_user
  114. SET session_logged = false, session_user_id = 0
  115. WHERE session_id = " . $this->native_session_id;
  116. $objDB->update();
  117. $this->logged_in=false;
  118. $this->user_id=0;
  119. return(true);
  120. } else {
  121. return(false);
  122. }
  123. }
  124.  
  125. public function _get($nm) {
  126. $sql="SELECT wartosc_zmiennej
  127. FROM zmienna_sesji
  128. WHERE identyfikator_sesji = " . $this->native_session_id . "
  129. AND nazwa_zmiennej = '" . $nm . "'";
  130. $row=$objDB->select($sql);
  131. if ($objDB->dbNumRows>0) {
  132. returnunserialize($row["wartosc_zmiennej"]);
  133. } else {
  134. return(false);
  135. }
  136. }
  137.  
  138. public function _set($nm, $val) {
  139. $strSer = serialize($val);
  140. $sql="INSERT INTO zmienna_sesji(identyfikator_sesji, nazwa_zmiennej, wartosc_zmiennej)
  141. VALUES(" . $this->native_session_id . ", '$nm', '$strSer')";
  142. $objDB->insert($sql);
  143.  
  144. }
  145.  
  146. private function _session_open_method($save_path, $session_name){
  147. return(true);
  148. }
  149.  
  150. private function _session_close_method() {
  151. //mysql_close($this->dbhandle);
  152. return(true);
  153. }
  154.  
  155. private function _session_read_method($id) {
  156. $strUserAgent= $GLOBALS["HTTP_USER_AGENT"];
  157. $this->php_session_id = $id;
  158. $failed=1;
  159. $sql="SELECT *
  160. FROM session_user
  161. WHERE session_id_ascii = '$id'";
  162. $row=Datebase::select($sql);
  163. if ($objDB->dbNumRows>0) {
  164. $this->native_session_id = $row['session_id'];
  165. if ($row['session_logged']=="t") {
  166. $this->logged_in=true;
  167. $this->user_id = $row["session_user_id"];
  168. } else {
  169. $this->logged_in = false;
  170. }
  171. } else {
  172. $this->logged_in = false;
  173. $sql="INSERT INTO session_user(session_user_ascii, session_logged, session_user_id, session_when_start, session_user_agent)
  174. VALUES ('$id','f',0,now(),'$strUserAgent')";
  175. $objDB->insert($sql);
  176.  
  177. $sql="SELECT session_id from \"session_user\"
  178. WHERE session_id_ascii = '$id'";
  179. $row=Datebase::select($sql);
  180. $this->native_session_id = $row["session_id"];
  181.  
  182. }
  183. return("");
  184. }
  185.  
  186. private function _session_write_method($id, $sess_data) {
  187. return(true);
  188. }
  189.  
  190. private function _session_destroy_method($id) {
  191. $sql="DELETE FROM session_user
  192. WHERE session_id_ascii = '$id'";
  193. $result=Datebase::delete($sql);
  194. return($result);
  195. }
  196.  
  197. private function _session_gc_method($maxlifetime) {
  198. return(true);
  199. }
  200. }
  201.  
  202.  
  203. ?>