2012-11-07 106 views
0

我想要做的是編寫一個自定義PHP會話類,該會話類在數據庫中存儲會話而不使用session_set_save_handler()自定義PHP會話類

這樣做的目的是讓我可以使用serialize()輕鬆存儲數據,並使用unserialize()將其返回。

我一直在尋找一整天,在這個問題上找不到任何東西。任何人都可以幫助我開始或將我鏈接到一個有用的教程?

謝謝。

+4

問題是,你不清楚你在找什麼。 – Ibu

+2

session_set_save_handler()爲什麼會阻止你使用serialize()? session_set_save_handler()的用途是自定義會話。唯一不使用它的方法是完全從頭開始創建自己的會話處理(意味着您不能使用全局'$ _SESSION' ...至少不能以有意義的方式使用。 – Cfreak

+0

@Cfreak那就是我尋找一個完整的自定義處理程序 – user18933

回答

1

你不需要內置的PHP會話,你可以自己設置cookie,讀取它並再次驗證,從這一點上你有一個功能完整的會話!

function createCookieString($id, $user, $created) 
{ 
    $cookieData = array(); 
    $hash = $this->hashSession($id, $user, $created); 

    $cookieData[] = $id; 
    $cookieData[] = $user; 
    $cookieData[] = $created; 
    $cookieData[] = $hash; 

    return implode(':', $cookieData); 
} 

function hashSession($id, $user, $created) 
{ 
    $cookieSalt = 'Your Cookie Salt'; //google what a salt is in hashing if neccecary 
    return md5($id.$user.$created.$cookieSalt); 
} 

function parseCookieString($string) 
{ 
    return explode(':', $string); 

} 

要設置cookie,只需使用php的setcookie函數。

您只需將會話存儲在數據庫中。它通常很簡單,只是一個ID,userID,創建(beeing時間戳)表,你不需要哈希在你的分貝,因爲它是一個可重用的祕密。

隨時問任何問題!

+0

謝謝,如果我喜歡它,我會給你一個答案。 – user18933