将类对象放在会话变量中是好还是坏? (PHP)

时间:2015-09-16 07:08:22

标签: php class session

我最近在尝试使用" User.class"它处理登录和注销(以及其他一些功能)。登录很容易上班,但注销更糟糕,因为我没有维护我在开始时声明的$ user - 对象。这让我很难理解。

我有一个按钮,用于"退出",我想用我的班级来做"做东西"当我退出。一种方法是做一个经典的:

if(isset($_GET["logout"])) {
     //do stuff in db
     session_destroy();
     header("Location: index.php");
}

但由于我在该课程中使用了课程和功能,我想打电话给

if(isset($_GET["logout"])) {
      $user->logOut();
}

但这没有用。如上所述。

我发现我可以在登录后将对象保存在序列化的会话变量中。

if(isset($_GET["login"])) {
$user = new User($dbh, $_POST["uid"], $_POST["key"]);

$r = $user->login();
$_SESSION["userObj"] = serialize($user);

}
if(isset($_GET["logout"])) {
    $user = unserialize($_SESSION["userObj"]);
    $user->logOut();
}

而且,这是有效的。 但是我认为,我正在处理这个问题,并且对#34; User.class"页面,我有这个代码:

public function __sleep() {
    return array("login_id", "uid");
}

public function __wakeup() {
    include_once("conn.php");
    global $dbh;
    $this->db = $dbh;
    unset($dbh);
}

如您所见,我在另一个文件中有数据库连接,在__wakeup()期间,我需要重新初始化数据库连接。

问题是,这是好的还是坏的做法? 这对我来说是全新的...... :)

0 个答案:

没有答案