先說說,這個機制的用途吧,到現在為止戰地知道這個機制有兩個方面的用途:
首先,多伺服器共用session問題,這個大家應該都能夠理解的,當一個網站的使用者量過大,就會使用伺服器叢集,例如專門有一個登入用的伺服器。使用者通過登入伺服器登入之後,登入伺服器儲存了使用者的登入資訊session,而其他受訪問的伺服器,例如電影伺服器沒有這個session,那麼我們就要通過一個session的唯一標識來共用這個session了——具體session的共用超出了本文的範圍,請自行查閱資料。
第二個用途就是,驗證同一使用者的不同會話,這個比較難理解。這樣說吧,一個使用者並非通過瀏覽器來請求串連,而是通過socket或者其它方式來請求資料的時候,我們首先要對他進行使用者登入驗證,驗證成功之後,就下發一個sessionid給他,然後他每次請求的時候就攜帶這個sessionid,我們通過這個sessionid來判斷session是否已經存在,如果存在我們就認定使用者已經登入……
對於第一個問題,我們可以把sessionid儲存在資料庫中得以實現,這個方法比較安全而且應用廣泛,但是不是我們討論的範圍哦
第二個問題,其實已經很簡單了,看一下代碼
首先驗證的時候產生一個sessionid;
複製代碼 代碼如下:
<?php
Session_start();
$sessionId = session_id();//得到sessionid
//將session下發給用戶端
.........
?>
用戶端攜帶sessionid這個變數來請求資料
複製代碼 代碼如下:
<?php
Session_id(‘$sessionid');//注意這個時候session_id()這個函數是帶有參數的
Session_start();//這個函數必須在session_id()之後
?>
這個時候session已經是登入驗證時候的session了。
注意:在sessionServer.php中如果使用thinkphp等其他自動啟動session_start();函數的架構時,必須先調用session_destory()函數來清空session。