Sau khi người dùng được xác thực, tôi đã tuần tự hóa đối tượng lớp và lưu trữ nó trong một phiên. Tuy nhiên, tôi không thể dường như in đầu ra của nó ngay cả sau khi sử dụng unserialize().
Tạo biến phiên:
if(!isset($_SESSION['myObj']) && empty($_SESSION['myObj'])) {
$myObj = new User($row['user_id'], $row['username'], $row['user_level']);
$_SESSION['username']= $myObj->usr_name;
$s_Obj = serialize($myObj);
$_SESSION['myObj'] = $s_Obj;
Truy cập từ một trang khác, không có đầu ra:
$sObj = $_SESSION['Obj'];
$myObj = unserialize($s_Obj);
echo $myObj->usr_name;
này hoạt động tuy nhiên, vì vậy không có gì sai với lớp học của tôi là. Tôi cũng đang sử dụng session_start()
trong cả hai trang. sử dụng
echo $_SESSION['username'];
Class:
<?php
class User{
public $usr_id;
public $usr_name;
public $usr_level;
public $last_access_login;
public function __construct($id, $usr_name, $usr_level) {
$this->usr_id = $id;
$this->usr_name = $usr_name;
$this->usr_level = $usr_level;
$this->last_access_login = date("F d Y H:i:s.",time());
}
}
?>
Edit:
Đây là vardump tôi
array
'myObj' =>
object(__PHP_Incomplete_Class)[1]
public '__PHP_Incomplete_Class_Name' => string 'User' (length=4)
public 'usr_id' => string '3' (length=1)
public 'usr_name' => string 'student' (length=7)
public 'usr_level' => string '3' (length=1)
public 'last_access_login' => string 'November 26 2011 20:12:38.' (length=26)
'url' => string '/researchportal/proposal' (length=24)
Bạn có sử dụng 'session_start()' trên tất cả các trang của mình không? Và 'User()' trông như thế nào? – mc10
'$ _SESSION ['myObj'] = $ myObj' là đủ, tôi nghĩ - PHP nên xử lý việc tuần tự hóa cho bạn. – lonesomeday
@lonsesomeday Tôi cũng đã thử điều đó, nhưng nó không hoạt động. – user478636