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:
$row=$objDB->select($sql);
a gdy zamienie to na:
$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
<?php require_once('class.User.php'); require_once('class.Datebase.php'); class UserSession extends User{ private $php_sesion_id; private $native_session_id; private $dbhandle; private $logged_in; private $session_tieout = 600; private $session_lifespan =3600; public function __construct() { $objDB= new Datebase(); //$dbhandle=$objDB->connect(); ); $strUserAgent = $GLOBALS["HTTP_USER_AGENT"]; if ($_COOKIE["PHPSESSID"]){ $this->php_sesion_id=$_COOKIE["PHPSESSID"]; $sql = "SELECT session_id FROM session_user WHERE session_id_ascci = '" . $this->php_session_id . "' AND ((now() - session_when_start) < ' " . $this->session_lifespan . " seconds') AND session_user_agent='" . $strUserAgent . "' AND ((now() - session_last_impress) <= '".$this->session_timeout." seconds' OR session_last_impress IS NULL)"; $result=$objDB->select($sql); if($objDB->dbNumRows==0) { $failed =0; $sql ="DELETE FROM session_user WHERE (session_id_ascci = '". $this->php_session_id . "') OR (now() - session_when_start) > $maxlifetime)"; $result =$objDB->delete($sql); $sql="DELETE FROM session_user WHERE session_id NOT IN (SELECT session_id FROM session_user)"; $result=$objDB->delete($sql); }; }; return $objDB; } public function Impress() { if ($this->native_session_id) { $sql="UPDATE session_user SET session_last_impress = now() WHERE session_id = " . $this->native_session_id; $result = $objDB->update($sql); } } public function IsLoggedIn() { return($this->logged_in); } public function GetUserID(){ if ($this->logged_in){ return($this->user_id); } else { return(false); } } /*public function GetUserObject() { if($this->logged_in){ if (class_exists("User")) { $objUser = new User($this->user_id); return($objUser); } else { return(false); } } }*/ public function GetSessionIndentifier() { return($this->php_sesion_id); } public function Login($strUsername, $strUserPassword){ $strUserPasswordSHA1= sha1($strUserPassword); $sql="SELECT user_id FROM user WHERE user_name = '$strUsername' AND user_password = '$strUserPasswordSHA1'"; $row=$objDB->select($sql); if ($objDB->dbNumRows>0) { $this->user_id=$row['session_user_id']; $this->logged_in =true; $sql="UPDATE session_user SET session_logged = true, session_user_id = " . $this->user_id . " WHERE session_id = " . $this->native_session_id; $objDB->update($sql); return(true); } else { return(false); } } public function LogOut() { if ($this->logged_in== true) { $sql="UPDATE session_user SET session_logged = false, session_user_id = 0 WHERE session_id = " . $this->native_session_id; $objDB->update(); $this->logged_in=false; $this->user_id=0; return(true); } else { return(false); } } public function _get($nm) { $sql="SELECT wartosc_zmiennej FROM zmienna_sesji WHERE identyfikator_sesji = " . $this->native_session_id . " AND nazwa_zmiennej = '" . $nm . "'"; $row=$objDB->select($sql); if ($objDB->dbNumRows>0) { returnunserialize($row["wartosc_zmiennej"]); } else { return(false); } } public function _set($nm, $val) { $sql="INSERT INTO zmienna_sesji(identyfikator_sesji, nazwa_zmiennej, wartosc_zmiennej) VALUES(" . $this->native_session_id . ", '$nm', '$strSer')"; $objDB->insert($sql); } private function _session_open_method($save_path, $session_name){ return(true); } private function _session_close_method() { //mysql_close($this->dbhandle); return(true); } private function _session_read_method($id) { $strUserAgent= $GLOBALS["HTTP_USER_AGENT"]; $this->php_session_id = $id; $failed=1; $sql="SELECT * FROM session_user WHERE session_id_ascii = '$id'"; $row=Datebase::select($sql); if ($objDB->dbNumRows>0) { $this->native_session_id = $row['session_id']; if ($row['session_logged']=="t") { $this->logged_in=true; $this->user_id = $row["session_user_id"]; } else { $this->logged_in = false; } } else { $this->logged_in = false; $sql="INSERT INTO session_user(session_user_ascii, session_logged, session_user_id, session_when_start, session_user_agent) VALUES ('$id','f',0,now(),'$strUserAgent')"; $objDB->insert($sql); $sql="SELECT session_id from \"session_user\" WHERE session_id_ascii = '$id'"; $row=Datebase::select($sql); $this->native_session_id = $row["session_id"]; } return(""); } private function _session_write_method($id, $sess_data) { return(true); } private function _session_destroy_method($id) { $sql="DELETE FROM session_user WHERE session_id_ascii = '$id'"; $result=Datebase::delete($sql); return($result); } private function _session_gc_method($maxlifetime) { return(true); } } ?>