PHP中,session(會話)是一種在服務器上存儲用戶數據的方法,這些數據可以在多個頁面請求或訪問之間保持。Session提供了一種方式來跟蹤用戶狀態,比如登錄信息、購物車內容等。當用戶首次訪問網站時,服務器會創建一個唯一的會話ID,并將其發送給用戶的瀏覽器(通常通過cookie)。之后的請求中,用戶的瀏覽器會將會話ID發送回服務器,這樣服務器就可以識別并恢復用戶的會話數據。
Session的基本使用步驟
- 啟動會話:使用session_start()函數來啟動一個新會話或者恢復現有會話。
- 設置會話變量:通過$_SESSION全局數組來存儲會話數據。
- 訪問會話變量:同樣使用$_SESSION數組來訪問會話數據。
- 銷毀會話:使用session_destroy()來銷毀當前會話中的所有數據,或者使用unset()來刪除特定的會話變量。
PHP累加器
<?phpsession_start();
$_SESSION['views'] += 1;
echo?"瀏覽量:"?. $_SESSION['views'];?>
unset() 函數用于釋放指定的 session 變量:
<?phpsession_start();
if(isset($_SESSION['views']))
{unset($_SESSION['views']);
}
?>
實例:
<?phpsession_start(); //啟動會話$_SESSION['username'] = '無極'; //設置會話$_SESSION['login_time'] = time();echo?"設置session變量.<br>";if?(isset($_SESSION['username'])) {$username?= $_SESSION['username'];$login_time?= date('H:i:s', $_SESSION['login_time']); // 格式化登錄時間echo?"Hello, $username! 現在是 $login_time.";} else?{echo?"Session variable 'username' is not set.";}
會話安全:確保會話ID不會被輕易猜測或偽造,可以通過配置PHP的session.cookie_httponly和session.cookie_secure選項來增強安全性。
會話過期:可以設置會話的過期時間,通過session.gc_maxlifetime配置項來設置會話數據的最大存活時間。
跨域問題:默認情況下,由于瀏覽器的同源策略,會話cookie不能跨域共享。如果需要跨域共享會話數據,需要額外的配置或使用其他技術(如JWT)。