在PHP配置文件(php.ini)中,有一組與Session相關(guān)的配置選項(xiàng)。通過(guò)對(duì)一些選項(xiàng)重新設(shè)置新值,就可以對(duì)Session進(jìn)行配置,否則使用默認(rèn)的Session配置。
Session的設(shè)置不同于Cookie,必須先啟動(dòng),在PHP中必須調(diào)用session_start()函數(shù),以便讓PHP核心程序,將與Session相關(guān)的內(nèi)建環(huán)境變量預(yù)先載入至內(nèi)存中。session_start()函數(shù)的語(yǔ)法格式如下:Bool session_start (void) //創(chuàng)建Session,開(kāi)始一個(gè)會(huì)話,進(jìn)行Session初始化
函數(shù)Session_start()有兩個(gè)作用:一是開(kāi)始一個(gè)會(huì)話,二是返回已經(jīng)存在的會(huì)話。這個(gè)函數(shù)沒(méi)有參數(shù),且返回值均為true。
如果使用基于Cookie的Session,在使用該函數(shù)開(kāi)啟Session之前,不能有任何輸出的內(nèi)容。因?yàn)榛贑ookie的Session是在開(kāi)啟的時(shí)候,調(diào)用session_start()函數(shù)會(huì)生成一個(gè)唯一的Session ID,需要保存在客戶端電腦的Cookie中,和set-Cookie()函數(shù)一樣,調(diào)用之前不能有任何的輸出,空格或空行也不行。如果已經(jīng)開(kāi)啟過(guò)Session,再次調(diào)用session_start()函數(shù)時(shí),不會(huì)再創(chuàng)建一個(gè)新的Session ID。因?yàn)楫?dāng)用戶再次訪問(wèn)服務(wù)器時(shí),該函數(shù)會(huì)通過(guò)從客戶端攜帶過(guò)來(lái)的Session ID,返回已經(jīng)存在的Session。所以在會(huì)話期間,同一個(gè)用戶在訪問(wèn)服務(wù)器上任何一個(gè)頁(yè)面時(shí),都是使用同一個(gè)Session ID。
如果不想在每個(gè)腳本都使用session_start()函數(shù)來(lái)開(kāi)啟Session,可以在php.ini中設(shè)置“ses-sion.auto_start=1”,則無(wú)須每次使用Session之前都要調(diào)用session_start()函數(shù)。但啟用該選項(xiàng)也有一些限制,則不能將對(duì)象放入Session中,因?yàn)轭?lèi)定義必須在啟動(dòng)Session之前加載。所以不建議使用php.ini中的session.auto_start屬性來(lái)開(kāi)啟Session。