php中如何啟動Session會話


Session 的設置與 Cookie 不同,必須先行啟動,在PHP中必須調用 session_start()函數,以便讓 PHP 核心程序將和 Session相關的內建環境 變量預先載入到內存中。大理石平台精度等級

 

使用 session_start()函數啟動會話,語法格式如下的形式:

1

session_start(void);   // 創建  Session,開始一個會話,進行 Session 初始化

session_start()這個函數沒有參數,且返回值均為 TURE。該函數有兩個主要的作用,儀式開始一個會話,而是返回已經存在的會話。

當第一次訪問網站時,session_start()函數就會創建一個唯一的 Session ID ,並自動通過 HTTP 的響應頭將這個 Session ID 保存到客戶端 Cookie 中。同時,頁在服務器端創建一個以這個 Session ID 命名的文件,用於保存這個用戶的會話信息。當同一個用戶再次訪問這個網站時,也會自動通過 HTTP 的請求頭將客戶端 Cookie 中保存的 Session ID給帶過來,這時 session_start()函數就不會再去分配一個新的 Session ID,而是在服務器的硬盤中去尋找和這個 Session ID 同名的Session文件,將之前為這個用戶保存的會話信息讀出,在當前腳本中應用,達到跟蹤這個用戶的目的。所以在會話期間,同一個用戶在訪問服務器上任何一個頁面時,都是使用同一個 Session ID。

注意: 通常,session_start()函數在頁面開始位置調用,然后會話變量被登錄到數據 $_SESSION。

說明:如果使用基於 Cookie 的 Session,在使用該函數開啟 Session之前,不能有任何輸出的內容。因為基於 Cookie 的 Session 實在開啟的時候,調用 session_start()函數生成唯一的一個 Session ID,需要保存在客戶端計算機的 Cookie 中,所以使用 session_start()函數之前瀏覽器不能有任何輸出,即使是空格和空行也不行,否則會產生輸出字符串產生的錯誤。

如果不想在每個腳本中都使用 session_start()函數 來開啟 Session,可以再 php.ini 里面設置 session.auto_start = 1,就不需要每次使用 Session 之前都要調用 session_start()函數。但啟用這個選項也餓石油一些限制的,就是不能將對象放入 Session 中,因為類定義必須在啟動 Session 之前加載。 所以一般不建議使用session.auto_start來開啟 Session。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM