php中如何傳遞Session ID

伊谢尔伦
發布: 2023-03-07 16:56:01
原創
5140 人瀏覽過

php中如何傳遞Session ID

          一般透過在各個頁面之間傳遞的唯一的Session ID,並透過Session ID 提取這個使用者在伺服器中保存的Session 變數,來追蹤一個使用者。常見的 Session ID 傳送方法主要有兩種。

        第一種方法是基於Cookie 的方式傳遞Session ID,此方法比較最佳化,但無法經常使用,因為使用者可以在客戶端封鎖Cookie

#第二種方法則是透過URL 參數傳遞,直接將會話ID 嵌入到URL 中去。

相關專題推薦php session (包含圖文、影片、案例)

          在 Session 的實作中通常都是採用基於Cookie的方式,客戶端保存的Session ID 就是一個Cookie 。當客戶端停用 Cookie時,Session ID就無法再 Cookie 中儲存,也就無法再頁面之間傳遞,此時 Session失效。不過在 Linux 平台上可以自動檢查 Cookie 狀態,如果用戶端停用它,則系統會自動把 Session ID 附加到 URL 上傳送。而使用 Windows 系統則沒有此功能。

1.透過Cookie 來傳遞Session ID

如果客戶端沒有禁止Cookie,則在PHP腳本中透過session_start()函數進行初始化後,伺服器會自動傳送HTTP 標頭將Session ID 儲存到客戶端電腦的Cookie 中。類似如下的設定方式:

虛擬向 cookie 中設定 Session ID 的程序

setcookie(session_name(), session_id(), 0, '/')
登入後複製

第一個參數呼叫 session_name()函數,傳回目前 Session 的名稱作為 Cookie的識別名稱。可以再呼叫 session_name()函數時提供參數改變目前 Session 的名稱。

第二個參數呼叫 session_id()函數,傳回目前 Session ID 作為 Cookie 的值。也可以透過呼叫 session_id()函數時提供參數設定目前的Session ID。

第三個參數值為 0,透過在php.ini檔案中由 session.cookie_lifetime 選項設定的值。預設為0,表示 Session ID 將在客戶端的  Cookie 中延續到瀏覽器關閉。

第四個參數 “ / ”,也是透過PHP設定檔指定的值,在 php.ini 中由 session.cookie_path 選項設定的值。預設為 “ / ”,表示在cookie 中要設定的路徑在整個域內都有效。

2. 透過 URL 來傳遞 Session ID

如果客戶端瀏覽器支援 Cookie,就把 Session ID 作為 Cookie 儲存在瀏覽器中。但如果使用者禁止 Cookie 的使用,則瀏覽器中就不存在作為 Cookie 的 Session ID,因此在客戶端請求中不包含 Cookie 資訊。如果當呼叫  session_start()函數時,無法從客戶端瀏覽器取得作為 Cookie 的 Session ID,則又建立了一個新的 Session ID,也無法追蹤使用者狀態。 因此,每次使用者要求支援 Session 的 PHP腳本,session_start()函數在開啟 Session 時都會建立一個新的 Session,這樣就失去了追蹤使用者狀態的功能。

在PHP 中提供了追蹤Session 的另一種機制,如果客戶端瀏覽器不支援Cookie,則PHP 可以重寫客戶端請求URL,把

Session ID 加入到URL中。可以手動在每個超連結的 URL 中都新增一個 Session ID,這種方法工作量比較大,一般不建議使用這種方式。其範例的程式碼如下所示:

演示';
?>
登入後複製

相關學習推薦:PHP程式設計從入門到精通

以上是php中如何傳遞Session ID的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!