zoukankan      html  css  js  c++  java
  • session和 cookie之间扯不完的千丝万缕关系

    session简称S
    cookie简称C
    sessionid简称Sid


    S和C用来保持会话的,确认用户标识的。

    session文件主要存在session数组数据中$_SESSION,默认是暂用内存。

    第一次请求,服务器产生sid给cookie, cookie存在本地,第二次请求cookie发送sid给服务器。(服务器用Sid匹配存储的S文件,并得到对应ID的S存储的其他数据)。

    那么cookie什么时候过期?
    如果没有设置 cookie时间,默认session会话结束,一般指关闭浏览器(此时服务器的S信息任然保存,但是 cookie已不保存,尽管S还没过期但是cookie已过期),意味着cookie也过期(消失)。

    当然当长时间没请求时,默认会话是30分钟过期,服务器删除或者标识过期该Sid的S数据,尽管cookie还在但是S信息已过期,所以此时cookie发的sid过来也对应不上S数据,所以过期,当前会话结束。

    如果设置了 cookie过期时间,那么如果 cookie未超时,下次还会用这个会话 sid去服务器找Sid数据,如果此时服务器 sid文件过期或者已被删除,则会自行创建该sid的S数据(但是其他S数组数据要重新写S数组),并正常会话。(即只要C不过期,它所保留的sid尽管服务器S已经过期可以重新生成该SID额会话文件)。

    综上:
    cookie 如果设置了时间决定权大于session 的过期时间,如果C过期则意味着没有Sid,服务器重新生一个sid,如果C没过期服务器会用他所保留的sid创建会话,尽管服务器S早已过期。

    当然如果C和S其中任意一个过期失效则全部失效,S失效意味着 C的Sid在服务器没有对应文件,C失效意味着,C没有发送sid,则服务器重新生成sid.这种情况和上面设置了C时间的S过期不是同一个理解,注意区分。






  • 相关阅读:
    HDU 1525
    kmp模板
    hdu 4616 Game(树形DP)
    hdu 4619 Warm up 2(并查集活用)
    hdu 4614 Vases and Flowers(线段树加二分查找)
    Codeforces 400D Dima and Bacteria(并查集最短路)
    poj 2823 Sliding Window (单调队列)
    hdu 2196 Computer(树形dp)
    hdu 4604 Deque
    最短路径
  • 原文地址:https://www.cnblogs.com/linewman/p/9918833.html
Copyright © 2011-2022 走看看