2015-01-12 4 views
0

Я сохраняю объект USER внутри сеанса, сначала сериализуя, чем пытаюсь использовать его на одной странице, чтобы проверить его, но он не извлекает данные, которые инициализировали все пусто.PHP потерял данные внутри объекта после unserialize

$user = new User(); 
echo '<br/>' . $user->getUsername(); // Gives me corerct data 
userSession(serialize($user)); // Stored into session 

$userObj = unserialize($_SESSION['userObj']); // Still get an object of type User 
echo $userObj->getUsername(); // This returns blank unlike the first call 

Если кто-нибудь может мне помочь, будем признательны, спасибо!

userSession Код

function userSession($userObj){ 
    session_start(); 
    $_SESSION['userObj'] = $userObj; 
} 

ДЛЯ КЛАСС

class User{ 
    protected $pdo; 
    private $id, $username, $banned, $email, $first_name, $last_name, $mobile_phone, $city, $address, $postal_code, $user_type, $active; 
// Create a user 
    public function __construct(){ 
     $con = new Connection(); 
     try{ 
      $this->pdo = $con->getConnection(); 
     }catch (PDOException $e){ 
       echo $e->getMessage(); // Store to file 
     } 
    } 
+0

является ли вы 'session_start()' всегда перед любым вызовом вашего пользовательского объекта? –

+2

Можете ли вы показать код для 'userSession()' - это большой недостающий шаг, который может иметь эффект. – mopo922

+0

Показать код для методов serialize/unserialize –

ответ

0

Вместо сериализации полного User класса, попробуйте сериализации только данные и используя одни и те же данные, чтобы создать новый объект после ,
В принципе, вы должны добавить User->getData() и User->setData(), где можно было бы вернуть все данные, которые имеют отношение к формату, который вы можете сохранить (JSON, сериализуемый массив), а другой позволит вам создать новый объект User и загрузите эти данные.

Смежные вопросы