2011-11-26 16 views
5

उपयोगकर्ता प्रमाणीकृत होने के बाद, मैंने कक्षा ऑब्जेक्ट को क्रमबद्ध किया और इसे सत्र में संग्रहीत किया। हालांकि, मैं unserialize() का उपयोग करने के बाद भी अपने आउटपुट मुद्रित प्रतीत नहीं कर सकता।

सत्र चर बनाना:

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; 

एक अलग पेज से एक्सेस करना, कोई उत्पादन:

$sObj = $_SESSION['Obj']; 
$myObj = unserialize($s_Obj); 
echo $myObj->usr_name; 

हालांकि यह काम करता है, तो वहाँ मेरी कक्षा के साथ कुछ भी गलत नहीं है। मैं दोनों पृष्ठों में session_start() का भी उपयोग कर रहा हूं।

echo $_SESSION['username']; 

कक्षा उपयोगकर्ता:

<?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()); 
    } 
} 
?> 

संपादित करें:

यह मेरा vardump है

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) 
+0

क्या आपने अपने सभी पृष्ठों पर 'session_start() 'का उपयोग किया था? और 'उपयोगकर्ता()' कैसा दिखता है? – mc10

+0

'$ _SESSION ['myObj'] = $ myObj' पर्याप्त होना चाहिए, मुझे लगता है - PHP को आपके लिए क्रमबद्धता को संभालना चाहिए। – lonesomeday

+0

@lonsesomeday मैंने यह भी कोशिश की, लेकिन यह काम नहीं किया। – user478636

उत्तर

7

inital पेज:

$s_Obj = serialize($myObj); 
$_SESSION['myObj'] = $s_Obj; 

$_SESSION['myObj'] = $myObj; 

अगला पृष्ठ होना चाहिए:

$sObj = $_SESSION['Obj']; 
$myObj = unserialize($s_Obj); 

$myObj = $_SESSION['myObj']; 

इसके अलावा, session_start() करने के लिए अपने कॉल करने से पहले अपनी कक्षाओं की घोषणा की कोशिश की जानी चाहिए।

+0

मैंने यह गलती भी तय की। लेकिन अभी भी यह काम नहीं कर रहा है। – user478636

+0

@ user478636 अपडेट किए गए कोड के बारे में कैसे? – mc10

+0

var_dump के साथ विश्लेषण करने का प्रयास करें। क्या आपने कभी var_dump ($ _ सत्र) करने का प्रयास किया था; ? – Marko

2

आपकी अनसुलझा वस्तु को __PHP_Incomplete_Class_Name के उदाहरण के रूप में अनसुलझा किया जा रहा है क्योंकि आप इसे बिना शर्त तरीके से उपयोगकर्ता वर्ग की परिभाषा शामिल नहीं कर रहे हैं। Object Serialization देखें। इससे पहले कि आप इसे रद्द करने का प्रयास करें, आपको उपयोगकर्ता वर्ग की परिभाषा को शामिल करना होगा।

संबंधित मुद्दे