我最近在尝试使用" 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()期间,我需要重新初始化数据库连接。
问题是,这是好的还是坏的做法? 这对我来说是全新的...... :)