首頁 後端開發 php教程 在PHP中進行會話處理(程式碼詳解)

在PHP中進行會話處理(程式碼詳解)

Jan 25, 2020 am 11:59 AM
php

在PHP中進行會話處理(程式碼詳解)

在PHP中會話處理是一個很重要的概念,它允許使用者資訊在網站或應用程式的所有頁面上保持不變。以下這篇文章就來帶大家學習PHP中會話處理的基礎知識,希望對大家有幫助。

PHP中什麼是會話(session)?

會話(session)是一種在不同網頁上保留資訊的機制,用於在使用者瀏覽網站或應用程式時識別使用者。

大家一定會有這樣一個疑問:為什麼網站需要會話?在討論這個問題之前,我們需要回過頭來看看HTTP協定是如何運作的。

HTTP協定是無狀態協定,這表示伺服器無法在多個請求之間記住特定使用者。例如,當您造訪網頁時,伺服器只負責提供所要求頁面的內容。因此,當您造訪同一網站的其他頁面時,網路伺服器會分別解釋每個請求,就好像它們彼此無關。伺服器無法知道每個請求都來自同一個使用者。

下圖簡要描述了HTTP協定。

 在PHP中進行會話處理(程式碼詳解)

 

在這個過程中,如果想要顯示特定使用者的訊息,則必須在每個請求中對使用者進行身分驗證。想像每次發出請求時,都需要進行在頁面上輸入使用者名稱和密碼進行身份驗證;這樣實在太繁瑣了,根本不實用。而,會話(session)在這個時間就派上用場了。

會話(session)允許使用者跨單一網站或應用程式的不同頁面共享訊息, 因此它有助於維護狀態。這使伺服器知道所有請求都來自同一用戶,從而允許網站顯示用戶特定的資訊和首選項。

下圖描述了HTTP協定如何與會話一起使用。

 在PHP中進行會話處理(程式碼詳解)

 

PHP如何進行會話處理?

1、啟動會話

每當想要處理會話變數時,就需要確保會話已經啟動。有幾種方法可以在PHP中啟動會話。

1)、使用session_start函數

這是最常被看到的方法,其中會話由session_start函數啟動。

 

 在PHP中進行會話處理(程式碼詳解)

很重要的是,session_start在將任何輸出傳送到瀏覽器之前,必須在腳本的開頭呼叫該函數。否則,你會遇到臭名昭著的Headers are already sent錯誤。

2)、自動啟動會話

如果需要在整個應用程式中使用會話,也可以選擇自動啟動會話而不使用session_start函數。

php.ini檔案中有一個設定選項session.auto_start,允許我們為每個請求自動啟動會話。預設情況下,它設定為0,我們可以將其設定1為啟用自動啟動功能。

 在PHP中進行會話處理(程式碼詳解)

 

2、取得會話ID

伺服器為每個新會話建立一個唯一的id。如果要取得會話ID,可以使用該session_id功能,如下列程式碼段所示。

 在PHP中進行會話處理(程式碼詳解)

 這應該給你目前的會話ID。該session_id函數很有趣,因為它也可以使用一個參數 - 一個會話ID。如果您要將系統產生的會話ID替換為您自己的會話ID,可以將其提供給session_id函數的第一個參數。

 

 在PHP中進行會話處理(程式碼詳解)

重要的是要注意,當您想要使用自訂會話ID啟動會話時,必須將session_id函數放在session_start之前呼叫。

3、建立會話變數

一旦啟動會話,$_SESSION就會使用對應的會話資訊初始化超全域陣列。預設情況下,它使用空白數組初始化,您可以使用鍵值對儲存更多資訊。

下面我們透過程式碼範例來看看如何初始化會話變數。

 

 在PHP中進行會話處理(程式碼詳解)

如上所示,我們使用session_start函數在腳本開頭啟動了一個會話;之後,初始化了幾個會話變數;最後,我們使用$_SESSION超全域存取了這些變數。

使用$_SESSION超全域將資料儲存在會話中時,它最終會儲存在會話啟動時所建立的伺服器上的對應會話檔案中。透過這種方式,會話資料在多個請求之間共用。

正如我們所討論的,會話資訊在請求之間共享,因此在一個頁面上初始化的會話變數也可以從其他頁面訪問,直到會話到期為止。通常,會話在瀏覽器關閉時到期。

4、修改和刪除會話變數

我們可以像修改常規PHP變數一樣修改或刪除先前在應用程式中建立的會話變數。

下面透過範例來看看如何修改會話變數。

 在PHP中進行會話處理(程式碼詳解)

 

在上面的腳本中,我們先檢查是否設定了$_session['count']變數。如果沒有設置,我們將設置為1,否則我們將增加1。因此,如果多次刷新此頁,可以看到計數器每次遞增一個!

另一方面,如果想要刪除會話變量,可以使用unset函數,如下面的程式碼片段所示:

 

 在PHP中進行會話處理(程式碼詳解)

#這樣,我們就無法再存取$_SESSION['logged_in_user_id']變數了。因為它已被unset函數刪除。

5、銷毀會話

在上面我們知道可以使用unset函數來刪除特定的會話變數;那麼如果要一次刪除所有與會話相關的數據,我們要怎麼辦?

其實很簡單,我們可以使用session_destroy函數。

下面我們來看看session_destroy函數是如何運作的。

 在PHP中進行會話處理(程式碼詳解)

 

說明:session_destroy函數刪除所有儲存在目前會話中的內容。因此,當儲存在磁碟上的會話資料被session_destroy函數刪除時,我們將從後續請求中看到一個空的會話變數。

附註:通常,在使用者登出時才會使用session_destroy函數

更多相關php知識,請造訪php教學

以上是在PHP中進行會話處理(程式碼詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles