会话是一种存储要在多个页面上使用的信息(在变量中)的方法。当用户访问网站并开始新会话时,服务器会创建一个唯一的会话 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 ?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。