存取目前 session 名稱
session_start()是session機制的開始,它有一定概率開啟垃圾回收,因為session是存放在文件中,PHP自身的垃圾回收是無效的,SESSION的回收是要刪文件的,這個概率是根據php.ini的配置決定的。session會判斷當前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE鍵值,這個值可以從php.ini找到: 1 session.name = PHPSESSID //默認值 session.use_cookies:默認值為"1",代表SessionID使用Cookie來傳遞,反之就是用Query_String來傳遞。 Session.name:這個就是SessionID儲存的變量名稱,可能是Cookie來傳遞,也可能是Query_String來傳遞,默認值是"PHPSESSID" Session.cookie_lifetime:這個代表SessionID在客戶端Cookie儲存的時間,默認值是“0”,代表瀏覽器一關閉,SessionID就作廢,就是因為這個原因,所以Session不能永久使用。 Session.gc_maxlifetime:這個是Session數據在服務器端儲存的時間,如果超過這個時間,那么Session數據就自動刪除。 session_name() session_name() 存取目前 session 名稱。 語法: string session_name(string [name]); 本函數可取得或者重新配置目前 Session 的名稱。若無參數 name 則表示單單獲取目前 Session 名稱,加上參數則表示將 Session 名稱設為參數 name。 如果建立時是這樣seesion_register("test");那么就可以用seesion_name("test")來找到這。session_id()這個函數是用來為會話進行編號就好像PHP數組一樣支持字符和數字標識。 1 <?php 2 3 /* set the session name to NowaMagic */ 4 $str = "NowaMagic"; 5 session_name($str); 6 7 echo session_name(); 8 9 ?> session_name() 與 session_id() 的區別 我們先自己運行一次程序,看看輸出結果: 1 <?php 2 session_start(); 3 echo session_name().'='.session_id(); 4 ?> 運行結果: 1 PHPSESSID=4d8d3ep8cakmvto6hvut3mphf4 現在可以明確了: session_name() 默認為 "PHPSESSID" 而 session_id() 是 一次HTTP 請求,服務器得到的 $_POST['PHPSESSID'] 或者 $_GET['PHPSESSID'] 或者 $_COOKIE['PHPSESSID'] 如果你在 session_start() 前調用了 session_name('SID'); 那么正常情況下(客戶端支持Cookie時), 會給客戶端發送 Set-Cookie: SID=(session_id 的值); 小結 一句話:默認值是PHPSESSID,你可以用session_name()修改。