簡體   English   中英

在不使用 session_start() 的情況下檢查是否有會話

[英]Check if there is a session without using session_start()

我想檢查一個人是否有活動會話,並在他們有活動時將他們重定向到另一個頁面。 但是,我不想使用session_start() ,因為這會在個人 PC 上放置一個 cookie(我不想在人們未登錄時將 cookie 放在他們的 PC 上)。 有沒有辦法檢查現有會話,而無需在他們的 PC 上放置 cookie?

您可以檢查會話 ID cookie 是否存在,如果之前在您網站的其他地方設置過,客戶端會將其發回:

if (isset($_COOKIE[session_name()])) {
   ... most likely there's a session available to be loaded ...
}

為了增加安全性,您可以使用session_save_path()session_name()來檢查會話文件是否存在(假設您使用的是默認的基於文件的處理程序session_save_path() ,以建立一個傳遞給file_exists()的路徑

您可以檢查函數session_id() ,它將返回用戶的當前會話 ID,如果不存在會話,則返回空字符串:

if (empty(session_id())) {
  /* redirect or logic here here, example: */
  header('location:path/to/your/session/start/page');
  exit();
}

或者,您可以檢查會話 cookie/全局變量是否已設置( isset($_SESSION)isset($_COOKIE[session_name()] . session_id()此處的文檔session_id()

首先測試一下,但我認為session_id() != ""會在有會話時返回 true,否則返回 false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM