PHP中设置一个严格30分钟过期Session面试题的4种答
今天,我在微博上提出了一个问题:如何在PHP中设置一个30分钟后过期的Session?这个问题看似简单,实则深藏玄机,能够很好地检验应聘者的基本功是否扎实。大家纷纷尝试回答,让我深受启发。
为何我会提出这个问题呢?我在网络上看到了有人讨论这个话题。我经常在面试中提及这个问题,想要考察应聘者对于PHP中Session处理的深入理解和实际应用的熟练程度。
关于这个问题的答案,让我们来一下。
第一种回答比较常见,即设置Session的过期时间。这种回答并不完全正确。在PHP中,Session的过期时间并不能保证在设定的时间后一定过期。这是因为PHP使用一定的概率来运行Session的gc(垃圾回收),并且使用文件的方式来保存Session数据。仅仅设置Session的过期时间并不能严格保证Session在30分钟后一定过期。
第二种回答是设置Session ID的载体,即Cookie的过期时间。这种回答也是不正确的。因为Cookie的过期时间是客户端(浏览器)来保证的,即使设置了Cookie过期,也只能保证在标准浏览器到期的时候不会发送这个Cookie(包含着Session ID)。如果通过构造请求,仍然可以使用这个Session ID的值。
第三种回答是使用memcache、redis等缓存工具来管理Session。这是一种正确的做法,但在面试中,出题者可能会继续追问,如果只能使用PHP本身,该如何实现呢?
第四种答案,符合题意的做法是:设置Cookie的过期时间为30分钟,并同时设置Session的lifetime也为30分钟。为每个Session值增加时间戳,并在每次访问之前判断时间戳。这样,就能确保Session在30分钟后过期,且能够及时处理过期的Session数据。
这个问题虽然是为了面试而设计的,但在实际场景中也有很多应用,比如设置30分钟过期的优惠劵等。
这个问题能够很好地考察应聘者对PHP中Session处理的深入理解和实际应用的熟练程度。在面试过程中,我会提示出一些陷阱,以检验应聘者的思考和解决问题的周密性。感谢大家的参与和讨论!
以上内容供参考,希望对你有所帮助。
编程语言
- PHP中设置一个严格30分钟过期Session面试题的4种答
- SQL Server中统计每个表行数的快速方法
- TinyMCE提交AjaxForm获取不到数据的解决方法
- Ajax 无刷新在注册用户名时的应用的代码
- Navicat查询结果不能修改的原因及解决方法
- php提示Failed to write session data错误的解决方法
- laravel框架之数据库查出来的对象实现转化为数组
- asp下去除数组中重复项的方法
- Thinkphp中import的几个用法详细介绍
- vue webpack重写cookie路径的方法
- 网页打开后自动执行木马
- asp下实现批量插入数据的方法
- 分享php分页的功能模块
- PHP通过文件路径获取文件名的实例代码
- php正则删除img标签的方法示例 -font color=red-原创
- js中动态创建json,动态为json添加属性、属性值的实