【问题标题】:Who creates a session and how does cookie and any role in it?谁创建了会话,cookie 和其中的任何角色如何?
【发布时间】:2014-07-10 03:26:30
【问题描述】:

谁创建了会话,cookie 和其中的任何角色如何? 我在一家公司的面试过程中被问到这个问题,不知道答案。我想知道哪一方创建了会话,即客户端还是服务器端以及 cookie 在其中有什么作用。

如果有多个用户登录,服务器如何理解哪个会话提供给哪个客户端以及客户端的哪个用户?

【问题讨论】:

标签: php session cookies


【解决方案1】:

PHP 中的 cookie 和 session 有什么区别?

PHP 会话改进了 cookie,因为它们允许 Web 应用程序存储和检索比 cookie 更多的信息。 PHP 会话实际上使用 cookie,但它们增加了更多的功能和安全性。

会话将数据存储在服务器上,而不是像 cookie 这样的浏览器上

会话和 cookie 的主要区别在于会话数据存储在服务器上,而 cookie 将数据存储在访问者的浏览器中。会话使用会话标识符来定位特定用户的会话数据。此会话标识符通常以 cookie 的形式存储在用户的网络浏览器中,但需要更安全的敏感数据(如用户 ID、姓名等)将始终保留在服务器上。

会话比 cookie 更安全

那么,当 cookie 工作得很好时,为什么我们应该使用会话呢?好吧,正如我们已经提到的,会话更安全,因为相关信息存储在服务器上,而不是在客户端和服务器之间来回发送。第二个原因是一些用户要么关闭 cookie,要么拒绝它们。在这种情况下,会话虽然设计为使用 cookie,但实际上可以在没有 cookie 的情况下作为一种解决方法工作,您可以在此处阅读:PHP 会话可以在没有 cookie 的情况下工作吗?

与 cookie 不同,会话需要额外空间

与只存储在用户浏览器中的 cookie 不同,PHP 会话需要在服务器上的临时目录中 PHP 可以存储会话数据。对于运行 Unix 的服务器来说,这根本不是问题,因为 /tmp 目录旨在用于此类事情。但是,如果您的服务器运行的是 Windows 和早于 4.3.6 的 PHP 版本,则需要配置服务器 - 这是要做的: 在 Windows 服务器上创建一个新文件夹 - 您可以将其命名为 C :\温度。您要确保每个用户都可以读取和写入此文件夹。然后,您需要编辑 php.ini 文件,并将 session.save_path 的值设置为指向您在 Windows 服务器上创建的文件夹(在本例中,该文件夹位于 C:\temp 下)。最后,您需要重新启动 Web 服务器,以使 php.ini 文件中的更改生效。

会话必须使用 session_start 函数

使用会话时要记住的一件非常重要的事情是,将使用会话的每个页面都必须以调用session_start() 函数开始。 session_start() 函数告诉 PHP 要么开始一个全新的会话,要么访问一个现有的会话。

PHP 中的 session_start 如何使用 cookie

第一次使用 session_start() 函数时,它会尝试发送一个名称为 PHPSESSID 的 cookie,其值类似于 a30f8670baa8e10a44c878df89a2044b - 这是包含 32 个十六进制字母的会话标识符。因为 cookie 必须在任何数据发送到浏览器之前发送,这也意味着 session_start 必须在任何数据发送到 Web 浏览器之前调用。

link-1

link-2

link-3

link-4

【讨论】:

    【解决方案2】:

    服务器创建会话并设置存储在客户端浏览器中的 cookie。 cookie 包含一个会话标识符(字符串),允许用户访问服务器上的特定会话。此会话标识符对应于文件中的会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 2021-10-23
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多