會話是一種存儲要在多個頁麵上使用的信息(在變量中)的方法。當用戶訪問網站並開始新會話時,服務器會創建一個唯一的會話 ID 並將其存儲在用戶計算機上的 cookie 中。服務器還在服務器上創建一個文件來存儲該用戶的會話變量。
cookie中的會話ID用於識別用戶在服務器上的會話。當用戶導航到網站上的不同頁麵時,會話 ID 會通過 cookie 發送回服務器,並且服務器會檢索該用戶相應的會話變量。
會話對於存儲特定於單個用戶和單個瀏覽器會話的臨時數據非常有用。例如,您可以使用會話來存儲用戶的購物車商品或登錄狀態。
Cookie 是存儲在用戶網絡瀏覽器中的一小段數據。它可用於存儲用戶首選項或登錄信息等信息。當用戶訪問網站時,服務器可以向用戶的瀏覽器發送 cookie,然後瀏覽器將存儲該 cookie。當用戶稍後返回網站時,服務器可以訪問 cookie 並使用其中存儲的信息。
Cookie 對於存儲需要在多個會話中保留的 longer-term 數據非常有用。例如,您可以使用 cookie 來存儲用戶的首選語言或主題,以便用戶不必在每次訪問網站時都設置其首選項。
Cookie 作為文件存儲在用戶的計算機上,並且可以保留指定的時間長度,除非用戶選擇刪除它們。 Cookie 的大小有限,通常為 4KB 或更小。
PHP 會話:要在 PHP 中使用會話,首先需要使用 session_start() 函數啟動會話。該函數必須在任何輸出發送到瀏覽器之前調用,因此它通常放置在 PHP 腳本的頂部。
例子:以下示例顯示如何啟動會話並將值存儲在會話變量中:
PHP
<?php
session_start();
$_SESSION['favorite_color'] = 'blue';
echo "Session variables are set.";
?>
要訪問會話變量,您可以使用$_SESSION超全局數組。例如:
PHP
<?php
session_start();
echo "Your favorite color is: " . $_SESSION['favorite_color'];
?>
輸出:
第一次運行腳本時,會顯示以下內容
Session variables are set.
如果刷新頁麵或導航到其他頁麵並再次運行腳本,它將顯示以下內容
Your favorite color is: blue.
PHP cookies:要在PHP中使用cookie,您可以使用setcookie()函數。該函數接受三個參數:cookie 的名稱、cookie 的值和 cookie 的過期時間。過期時間是可選的,以秒為單位指定。如果您不指定過期時間,則 cookie 將在用戶關閉瀏覽器時過期。
例子:以下示例展示了如何在 PHP 中設置 cookie:
PHP
<?php
// 86400 = 1 day
setcookie('favorite_color', 'blue', time() + (86400 * 30));
echo "Cookie is set.";
?>
要訪問 cookie,您可以使用 $_COOKIE 超全局數組。例如:
PHP
<?php
echo "Your favorite color is: " . $_COOKIE['favorite_color'];
?>
請記住,cookie 存儲在用戶的計算機上,並且用戶可以隨時刪除,因此在嘗試訪問 cookie 之前,您應始終檢查 cookie 是否存在。您可以使用 isset() 函數來執行此操作。
PHP
<?php
if (isset($_COOKIE['favorite_color'])) {
echo "Your favorite color is: " . $_COOKIE['favorite_color'];
} else {
echo "You have not set a favorite color.";
}
?>
輸出:
第一次運行腳本時,它會顯示
Cookie is set.
如果刷新頁麵或導航到其他頁麵並再次運行腳本,它將顯示
Your favorite color is: blue.
如果等待30天(setcookie()函數中指定的過期時間),然後再次運行腳本,則會顯示
You have not set a favorite color.
PHP中session和cookie的區別:
下麵以表格形式對PHP中的session和cookie進行比較:
Sessions |
Cookies |
|
---|---|---|
範圍 | 隻能在創建它們的 PHP 腳本中訪問 | 可以由創建它們的域上的任何腳本訪問 |
堅持 | 存儲在服務器內存中,並在用戶關閉瀏覽器時刪除 | 作為文件存儲在用戶的計算機上,並且可以保留指定的時間長度,除非用戶刪除它們 |
尺寸 | 可以存儲盡可能多的數據,可以存儲在用戶的會話存儲空間(通常是幾兆字節) | 大小有限,通常為 4KB 或更小 |
安全 | 更安全,因為它們存儲在服務器上並且用戶無法訪問 | 安全性較低,因為它們存儲在用戶的計算機上並且可以由用戶訪問或修改 |
用例 | 存儲特定於單個用戶和單個瀏覽器會話的臨時數據 | 存儲需要跨多個會話持久保存的longer-term數據 |
會話和 cookie 對於在用戶的 Web 瀏覽器中存儲數據都很有用,但它們有一些關鍵的區別,使它們更適合不同的用例。
相關用法
- PHP session_abort()用法及代碼示例
- PHP session_cache_expire()用法及代碼示例
- PHP session_cache_limiter()用法及代碼示例
- PHP session_commit()用法及代碼示例
- PHP session_create_id()用法及代碼示例
- PHP session_decode()用法及代碼示例
- PHP session_destroy()用法及代碼示例
- PHP session_encode()用法及代碼示例
- PHP session_gc()用法及代碼示例
- PHP session_get_cookie_params()用法及代碼示例
- PHP session_id()用法及代碼示例
- PHP session_module_name()用法及代碼示例
- PHP session_name()用法及代碼示例
- PHP session_regenerate_id()用法及代碼示例
- PHP session_register_shutdown()用法及代碼示例
- PHP session_reset()用法及代碼示例
- PHP session_save_path()用法及代碼示例
- PHP session_set_cookie_params()用法及代碼示例
- PHP session_set_save_handler()用法及代碼示例
- PHP session_start()用法及代碼示例
- PHP session_status()用法及代碼示例
- PHP session_unset()用法及代碼示例
- PHP session_write_close()用法及代碼示例
- PHP session_unset() vs session_destroy()用法及代碼示例
- PHP set_file_buffer()用法及代碼示例
注:本文由純淨天空篩選整理自sakshinagare2004大神的英文原創作品 What are the difference between session and cookies in PHP ?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。