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 }
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 }