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