不同网站使用 Session 和 cookie 来跨网站的不同页面存储用户数据。 Session 和 cookie 都很重要,因为它们会跟踪访问者出于不同目的提供的信息。 两者的主要区别在于会话保存在服务器端,而 cookie 保存在用户的浏览器或客户端。 除此之外,两者之间还存在各种其他差异。 在本主题中,我们将了解Session 和 cookie 的详细描述以及两者的区别。

什么是会话/Session?

会话用于将信息临时存储在服务器上,以便在网站的多个页面上使用。它是用于一项活动的总时间。用户会话在他登录到特定的网络应用程序时开始,并在用户从应用程序注销或关闭系统时结束。
当我们在互联网上处理应用程序时,网络服务器不知道用户,因为 HTTP 协议不维护状态。用户在应用程序的一个页面(比如说主页)上提供的信息不会转移到另一个页面。为了消除这个限制,使用了会话。每当访问者首次进入网站时,会话就会开始。
用户信息存储在会话变量中,这些变量可以存储对象的任何类型的值或数据类型。
会话值非常安全,因为它们以二进制形式或加密形式存储,并且只能在服务器上解密。当用户关闭系统或从应用程序注销时,会话值会自动删除。要永久存储这些值,我们需要将它们存储在数据库中。
每个会话对于每个用户都是唯一的,并且可以在一个应用程序中使用任意数量的会话;没有限制。
用户在 sessionID 的帮助下被识别,它是保存在服务器内部的唯一编号。它被保存为 cookie、表单域或 URL。

会话/Session工作流程
可以借助下图理解会话的工作:
会话工作流程

  • 第一步,客户端通过 GET 或 POST 方法向服务器请求。
  • sessionID 在服务器上创建,并将 sessionID 保存到数据库或者文件中。 它返回带有 cookie 的 sessionId 作为对客户端的响应。
  • 存储在浏览器上的带有 sessionID 的 Cookie 被发送回服务器。 服务器将此 id 与保存的 sessionID 匹配并发送响应 HTTP 200。

为什么使用会话?
会话用于在服务器上更安全地存储诸如 UserID 之类的信息,而不能对其进行修改。
它还可以将价值形式的信息从一个网页转移到另一个网页。
对于不支持 cookie 的浏览器,它可以作为 cookie 的替代品,以更安全的方式存储变量。

  • Cookie 是存储在用户计算机上的小型文本文件。 Cookie 的最大文件大小为 4KB。它也被称为 HTTP Cookie、网络 Cookie 或互联网 Cookie。每当用户第一次访问网站时,网站都会以 Cookie 的形式向用户的计算机发送数据包。
  • Cookie 帮助网站在用户访问其网站时跟踪用户的浏览历史或购物车信息。
  • Cookie仅存储“字符串”数据类型。
  • 存储在 cookie 中的信息不安全,因为此信息以文本格式存储在客户端,任何人都可以读取。
  • 可以根据需要启用或禁用 cookie。
  • 用户生成的 cookie 仅显示给他们,其他用户无法看到这些 cookie。
  • Cookie 是在 HTTP 标头的帮助下在服务器和浏览器之间创建和共享的。
  • cookie 的保存路径由浏览器决定,因为 Internet Explorer 通常将它们存储在 Temporal Internet File Folder 中。
  • 当访问 YouTube 频道并搜索某些歌曲时,下次我们访问 YouTube 时,cookie 会读取我们的浏览历史并显示类似的歌曲或上次播放的歌曲。

使用 PHP创建 Cookie
要在 PHP 中创建 cookie,需要使用 setcookie() 函数,它必须出现在 <html> 标记之前。 该函数的语法如下:

语法:

setcookie(name, value, expire, path, domain, secure, httponly);

在上面的语法中,只需要一个 name 参数,其他都是可选的。

示例代码:

setcookie("Userid", "1005", "time()+3600");

cookie属性:

  • name:它定义了 cookie 的名称。
  • value:它定义了 cookie 的值。
  • expire:它指定cookie过期的时间。 如果未使用或设置为 0,cookie 将在会话结束时被删除。
  • path:它定义了 cookie 的服务器路径。 如果设置为“/”,cookie 将在整个域中可用。
  • domain:它定义了 cookie 的域名。 如果我们将其设置为“vsdiffer.com”,它将可用于 vsdiffer.com 的所有子域。
  • secure:指定 cookie 是否仅通过 HTTPS 传输。 如果设置为 True,则意味着只会为安全连接设置 cookie。
  • HTTPOnly:如果设置为 TRUE,cookie 将可以通过 HTTP 协议访问。

为什么要使用 Cookie?
HTTP 是一种无状态协议; 因此它不存储任何用户信息。 为此,我们可以使用 Cookie。 它允许我们将信息存储在用户的计算机上并跟踪应用程序的状态。

  • 会话是存储用户信息的服务器端文件,而 Cookie 是包含本地计算机上的用户信息的客户端文件。
  • 会话依赖于 cookie,而 cookie 不依赖于会话。
  • 当用户关闭浏览器或从应用程序注销时会话结束,而 Cookie 在设定的时间到期。
  • 会话可以存储用户想要的尽可能多的数据,而 Cookie 的大小有限为 4KB。

Cookies和Session的区别

会话/Session Cookie
会话/Session将变量及其值存储在服务器上临时目录中的文件中。 Cookie 以文本文件的形式存储在用户的计算机上。
当用户从应用程序注销或关闭其 Web 浏览器时,会话结束。 Cookie 在用户设置的生命周期内结束。
它可以存储无限量的数据。 它只能存储有限的数据。
可以在一个会话/Session中存储尽可能多的数据,但是有一个最大内存限制,一个脚本可以一次使用,它是 128 MB。 浏览器 cookie 的最大大小为 4 KB。
需要调用 session_start() 函数来启动会话。 不需要调用函数来启动 cookie,因为它存储在本地计算机中。
在 PHP 中,要设置会话数据,使用 $_SESSION 全局变量。 在 PHP 中,为了从 cookie 中获取数据,使用了 $_COOKIE 全局变量。
在 PHP 中,要销毁或删除存储在会话中的数据,可以使用 session_destroy() 函数,而要取消设置特定变量,可以使用 unset() 函数。 可以设置一个过期日期来删除 cookie 的数据。它将在特定时间自动删除数据。没有删除数据的特定功能。
与 cookie 相比,会话更安全,因为它们以加密形式保存数据。 Cookie 不安全,因为数据存储在文本文件中,如果任何未经授权的用户访问我们的系统,可以修改数据。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Session和Cookie的区别
本文链接:https://www.vsdiffer.com/vs/session-vs-cookies.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。