php中如何啟動Session會話

來源:互聯網
上載者:User
Session 的設定與 Cookie 不同,必須先行啟動,在PHP中必須調用 session_start()函數,以便讓 PHP 核心程式將和 Session相關的內建環境 變數預先載入到記憶體中。

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

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。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.