谁创建了一个会话,cookie和其中的任何角色如何?

时间:2014-06-24 09:17:24

标签: php session cookies

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

如果多个用户登录,服务器如何理解向哪个客户端和哪个客户端用户提供哪个会话?

2 个答案:

答案 0 :(得分:2)

PHP和PHP会话之间有什么区别?

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

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

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

会话比Cookie更安全

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

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

与仅存储在用户浏览器中的cookie不同,PHP会话需要服务器上的临时目录,PHP可以存储会话数据。对于运行Unix的服务器来说,这根本不是问题,因为/ tmp目录应该用于这样的事情。但是,如果您的服务器运行的是Windows和早于4.3.6的PHP版本,则需要配置服务器 - 这里是做什么:在Windows服务器上创建一个新文件夹 - 您可以将其称为C :\ TEMP。您希望确保每个用户都可以读取和写入此文件夹。然后,您需要编辑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,这也意味着必须在将任何数据发送到Web浏览器之前调用session_start。

<强> link-1

<强> link-2

<强> link-3

<强> link-4

答案 1 :(得分:0)

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