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:
$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();
array(&$this, '_session_open_method'), array(&$this, '_session_close_method'), array(&$this, '_session_read_method'), array(&$this, '_session_write_method'), array(&$this, '_session_destroy_method'), array(&$this, '_session_gc_method') );
$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);
unset($_COOKIE["PHPSESSID"]); };
};
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);
}
}
?>