/首页
/开源
/关于
老旧话题:重新看看PHP的session
发表@2018-09-13 09:15:21
更新@2023-01-21 22:47:40
这基本上算是个老旧的话题了,几乎所有phper在第一次面试的时候都会被问到关于session的问题,如果不出意外,往往是如下三板斧: 1. php的session是什么东西 2. php的session存在什么地方、时候过期 3. php的session和cookie有什么区别 这三个问题堪称是关于php session三大基础问题了,要是掌握不好,直接导致面试挂掉,令人唏嘘不已。 就以上三个问题简单回顾一下: 1. session翻译成中文,大抵就是会话。我们知道http协议是一个无状态的协议,用极为粗暴的土话表示无状态就是说“你压根不知道这个http请求是哪个犊子发起的”或者“你永远不知道这个http请求的那头到底是上次那个哈士奇还是上上次那个胖子”,所以为了解决这个问题,php引入session来额外标记“到底谁发起的这个http请求”。在php中,php会为每个不同的用户生成一个随机的session id,每个人拥有的session id都是不同的。用户在与服务器产生的每一次交互中,都是利用session id来辨别的用户。让php产生session是一件很容易的事情,直接调用session_start()函数就可以了,如下图就是产生的session文件: ![](https://ti-node.com/static/upload/6399157113708347392) 其中sess是文件前缀,后面的“njjf8l3lh****ff6”就是你的session id了。但是现在session文件内容是空的,如果我们用如下代码,就可以产生session文件的内容: ```php