Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是cookie和会话,它们之间的关系如何?_Javascript_Php_Session_Cookies - Fatal编程技术网

Javascript 什么是cookie和会话,它们之间的关系如何?

Javascript 什么是cookie和会话,它们之间的关系如何?,javascript,php,session,cookies,Javascript,Php,Session,Cookies,我正在努力专业地理解饼干和会话。 我知道,当浏览器连接到服务器时,服务器“要求”浏览器在客户端浏览器cookies文件夹中“粘贴”一个带有“phpsessid”的cookie 现在我们有了“phpsessid”,如果客户端进入服务器,浏览器会向服务器发送“phpsessid”,服务器会查看tmp文件夹,如果我们有匹配项,它会加载用户为此客户端拥有的所有数据,但我对这个过程有点困惑 如果有人能帮助我理解创建会话和cookie的过程,我将不胜感激。让我们来看一下: 和都是在浏览器发出的不同请求之间保

我正在努力专业地理解饼干和会话。 我知道,当浏览器连接到服务器时,服务器“要求”浏览器在客户端浏览器cookies文件夹中“粘贴”一个带有“phpsessid”的cookie

现在我们有了“phpsessid”,如果客户端进入服务器,浏览器会向服务器发送“phpsessid”,服务器会查看tmp文件夹,如果我们有匹配项,它会加载用户为此客户端拥有的所有数据,但我对这个过程有点困惑

如果有人能帮助我理解创建会话和cookie的过程,我将不胜感激。

让我们来看一下:

都是在浏览器发出的不同请求之间保留应用程序状态的方法。例如,感谢他们,您不必每次在上请求页面时都登录

曲奇饼 Cookie是少量数据(最大长度为4KB),以键=值对的形式保存数据:

name=value; name2=value2
通过或通过服务器使用进行设置

Cookie设置了过期日期时间,例如使用HTTP头:

Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
这将导致浏览器设置一个名为
name2
的cookie,其值为
value2
,该cookie将在大约9年后过期

Cookie被认为是高度不安全的,因为用户可以轻松地操纵其内容。这就是为什么您应该始终验证cookie数据的原因。不要以为你从饼干中得到的必然是你所期望的

Cookie通常用于保留登录状态,即从浏览器发送用户名和特殊哈希,服务器根据数据库检查用户名和哈希以批准访问

Cookie也经常用于会话创建

会议 课程略有不同。每个用户获得一个会话ID,该ID通过cookieGET variable发送回服务器进行验证

会话通常是短暂的,这使得它们非常适合在应用程序之间保存临时状态。一旦用户关闭浏览器,会话也会过期

会话被认为比cookie更安全,因为变量本身保存在服务器上。下面是它的工作原理:

  • 服务器打开会话(通过HTTP头设置cookie)
  • 服务器设置会话变量
  • 客户端更改页面
  • 客户端发送所有cookie以及步骤1中的会话ID
  • 服务器从cookie读取会话ID
  • 服务器匹配数据库(或内存等)列表中的会话ID
  • 服务器找到匹配项,读取当前在
    $\u会话上可用的变量
  • 如果PHP没有找到匹配项,它将启动一个新会话,并重复1-7中的步骤

    您可以将敏感信息存储在会话上,因为它保存在服务器上,但请注意,如果用户(比如)通过不安全的WiFi登录,会话ID仍可能被盗。(攻击者可以嗅探cookies,并将其设置为自己的,他不会看到变量本身,但服务器会将攻击者识别为用户)



    这就是要点。您可以在PHP手册中了解有关这两个主题的更多信息。

    您似乎已经知道发生了什么。您希望了解哪一部分?HTTP/cookie部分,或PHP如何加载会话存储?浏览器使用phpsessid保存的cookie,这是用于标识用于创建会话和cookie的客户端的phpsessid吗?浏览器的cookie包含PHP会话id,它告诉服务器“嘿,我知道这个chap”,然后服务器获取会话数据(例如从/tmp/开始)并恢复用户$\u会话我知道,但我在问,这是“phpsessid”吗在创建会话和cookie之前,是否使用此phpsessid来标识客户端?此phpsessid是否包含在cookie数据和客户端计算机以及服务器tmp文件夹中的会话文件中?这是否意味着必须打开cookie才能使会话正常工作?@Edmund:大多数情况下,是的。但是,您可以将其设置为会话ID通过GET变量传输(这意味着会话id需要附加到每个页面(
    hello.php?sid=cbe709ac7bed98f7ecb89713
    )@SurajJain如果不是“记住我”,它会Cookie,持续时间更长。其他问题:当用户关闭浏览器时,服务器如何收到此事件的通知,以便服务器删除此会话ID?或者它是否会在一段时间后自动过期?在2021年看到这一点,我感到困惑,你为什么说它将继续活动9年