Example #1
0
 public function newSession()
 {
     $db = Database::singletone()->db();
     $sth = $db->prepare("SELECT COUNT(*) AS cnt FROM phph_sessions WHERE session_id = :session_id");
     $sth->bindParam(":session_id", $this->_sid);
     $sth->execute();
     $r = $sth->fetchColumn(0);
     $sth = null;
     if ($r == 0) {
         $this->_sid = md5(uniqid(Utils::getEncodedClientIP()));
         $this->_method = SESSION_METHOD_GET;
         $sth = $db->prepare("INSERT INTO phph_sessions (session_id, user_id, session_time, session_start, session_ip) " . "VALUES (:session_id, :user_id, :session_time, :session_start, :session_ip)");
         $sth->bindParam(":session_id", $this->_sid);
         $sth->bindParam(":user_id", $this->_uid);
         $sth->bindValue(":session_time", time());
         $sth->bindValue(":session_start", time());
         $sth->bindValue(":session_ip", Utils::getEncodedClientIP());
         $sth->execute();
         $sth = null;
     } else {
         $sth = $db->prepare("UPDATE phph_sessions SET user_id = :user_id, session_time = :session_time, session_ip = :session_ip " . "WHERE session_id = :session_id");
         $sth->bindParam(":session_id", $this->_sid);
         $sth->bindParam(":user_id", $this->_uid);
         $sth->bindValue(":session_time", time());
         $sth->bindValue(":session_ip", Utils::getEncodedClientIP());
         $sth->execute();
         $sth = null;
     }
     $sth = $db->prepare("SELECT COUNT(*) AS cnt FROM phph_session_history WHERE session_id = :session_id");
     $sth->bindParam(":session_id", $this->_sid);
     $sth->execute();
     $r = $sth->fetchColumn(0);
     $sth = null;
     if ($r == 0) {
         $sth = $db->prepare("INSERT INTO phph_session_history (session_id, user_id, session_start, session_ip) " . "VALUES (:session_id, :user_id, :session_start, :session_ip)");
         $sth->bindParam(":session_id", $this->_sid);
         $sth->bindParam(":user_id", $this->_uid);
         $sth->bindValue(":session_start", time());
         $sth->bindValue(":session_ip", Utils::getEncodedClientIP());
         $sth->execute();
         $sth = null;
     } else {
         $sth = $db->prepare("UPDATE phph_session_history SET user_id = :user_id, session_ip = :session_ip " . "WHERE session_id = :session_id");
         $sth->bindParam(":session_id", $this->_sid);
         $sth->bindParam(":user_id", $this->_uid);
         $sth->bindValue(":session_ip", Utils::getEncodedClientIP());
         $sth->execute();
         $sth = null;
     }
     if ($this->_uid != ANON_USER) {
         $this->getUser()->updateIPRecord();
         $this->getUser()->updateLastLogin();
     }
     $c_domain = Config::get("cookie_domain");
     $c_path = Config::get("cookie_path");
     $sid_name = Session::getSIDCookieName();
     $uid_name = Session::getUIDCookieName();
     setcookie($sid_name, $this->_sid, time() + 31536000, $c_path, $c_domain);
     setcookie($uid_name, $this->_uid, time() + 31536000, $c_path, $c_domain);
     // expire in 1 year
 }
Example #2
0
 public function newSession()
 {
     $sdbo = DB_DataObject::Factory('phph_sessions');
     if (PEAR::isError($sdbo)) {
         die($sdbo->getMessage());
     }
     $r = $sdbo->get($this->_sid);
     if (PEAR::isError($r)) {
         die($r->getMessage());
     }
     if ($r == 0) {
         $this->_sid = md5(uniqid(Utils::getEncodedClientIP()));
         $this->_method = SESSION_METHOD_GET;
         $sdbo->session_id = $this->_sid;
         $sdbo->user_id = $this->_uid;
         $sdbo->session_time = time();
         $sdbo->session_start = time();
         $sdbo->session_ip = Utils::getEncodedClientIP();
         $r = $sdbo->insert();
         if (PEAR::isError($r)) {
             die($r->getMessage());
         }
     } else {
         $sdbo->user_id = $this->_uid;
         $sdbo->session_time = time();
         $sdbo->session_ip = Utils::getEncodedClientIP();
         $r = $sdbo->update();
         if (PEAR::isError($r)) {
             die($r->getMessage());
         }
     }
     $hdbo = DB_DataObject::Factory('phph_session_history');
     if (PEAR::isError($hdbo)) {
         die($hdbo->getMessage());
     }
     $r = $hdbo->get($this->_sid);
     if (PEAR::isError($r)) {
         die($r->getMessage());
     }
     if ($r == 0) {
         $hdbo->session_id = $this->_sid;
         $hdbo->user_id = $this->_uid;
         $hdbo->session_start = time();
         $hdbo->session_ip = Utils::getEncodedClientIP();
         $r = $hdbo->insert();
         if (PEAR::isError($r)) {
             die($r->getMessage());
         }
     } else {
         $hdbo->user_id = $this->_uid;
         $hdbo->session_ip = Utils::getEncodedClientIP();
         $r = $hdbo->update();
         if (PEAR::isError($r)) {
             die($r->getMessage());
         }
     }
     if ($this->_uid != ANON_USER) {
         $idbo = DB_DataObject::Factory('phph_user_ip');
         if (PEAR::isError($idbo)) {
             die($idbo->getMessage());
         }
         $idbo->keys("user_id", "ip");
         $idbo->ip = Utils::getEncodedClientIP();
         $idbo->user_id = $this->_uid;
         $r = $idbo->find();
         if (PEAR::isError($r)) {
             die($r->getMessage());
         }
         if ($r == 0) {
             $idbo->user_id = $this->_uid;
             $idbo->last_visit = time();
             $idbo->ip = Utils::getEncodedClientIP();
             $r = $idbo->insert();
             if (PEAR::isError($r)) {
                 die($r->getMessage());
             }
         } else {
             $idbo->last_visit = time();
             $r = $idbo->update();
             if (PEAR::isError($r)) {
                 die($r->getMessage());
             }
         }
         $udbo = DB_DataObject::Factory('phph_users');
         if (PEAR::isError($udbo)) {
             die($udbo->getMessage());
         }
         $r = $udbo->get($this->_uid);
         if (PEAR::isError($r)) {
             die($r->getMessage());
         }
         if ($r != 0) {
             $udbo->user_lastlogin = time();
             $r = $udbo->update();
             if (PEAR::isError($r)) {
                 die($r->getMessage());
             }
         }
     }
     $c_domain = Config::get("cookie_domain");
     $c_path = Config::get("cookie_path");
     $sid_name = Session::getSIDCookieName();
     $uid_name = Session::getUIDCookieName();
     setcookie($sid_name, $this->_sid, 0, $c_path, $c_domain);
     setcookie($uid_name, $this->_uid, time() + 31536000, $c_path, $c_domain);
     // expire in 1 year
 }