使用 PHP 編寫網路程是很方便的,因為很多網路功能都已經內置。
其中一樣方便的東西就是 Session 。
利用 Session 可以網頁之間傳送資料而不用擔心給使用者察覺(因為都在伺服器那邊進行),甚至連一整個物件(Object)都可以傳過去。
不過由於物本身可以含有二進位(Binary)的資料,所以先要經過 serialize 的程序,然後再在目標頁面 unserialize 以取得物件。
但今天遇到一個問題,在接收頁面的物件 unserialize 之後,全部變成 INCOMPLETE OBJECT ,那根本不能使用。
原來,只是犯了一個很基本的錯誤:
// 傳送一方
session_start();
class obj{
function obj(){};
}
$object = new obj();
$_SESSION['object'] = serialize($object);
// 接收一方
session_start();
$object = unserialize($_SESSION['object']);
問題出在那?
其實很簡單....
session_start();
class obj{
function obj(){};
}
$object = unserialize($_SESSION['object']);
只要在還原物件前訂義物件就好了...
就這個小小的失誤,害我浪費了個多小時。