PHP面试题精讲—Session会话完全解析!亲测有效!建议收藏!

举报
小雨青年 发表于 2022/03/28 23:36:59 2022/03/28
【摘要】 日拱一卒无有尽,功不唐捐终入海 💋 目录 1.SESSION 是什么?2. PHP中如何启用session?安装脚本中启用数据的存取生命周期 3.SESSION和COOI...

日拱一卒无有尽,功不唐捐终入海 💋
在这里插入图片描述

1.SESSION 是什么?

我们说的SESSION指的是SESSION对象,用于存储用户信息。

当web和服务器通信时,就会产生一个session对象,当会话过期之后,session对象就会被删除。

session是服务端保存用户身份的方法,目的是维持用户的身份。

session一般保存在服务器的文件中,和在客户端的cookie中。

2. PHP中如何启用session?

安装

session是PHP默认支持的,不需要额外安装扩展。

脚本中启用

session_start();

  
 
  • 1

注意,这个函数调用之前不能有任何输出。

数据的存取

所有SESSION都是放在$_SESSION这个超全局变量中的,我们在启用SESSION之后可以对session进行存取。

if (!isset($_SESSION['uid'])) {
  $_SESSION['uid'] = 100;
}

  
 
  • 1
  • 2
  • 3

生命周期

我们在session的数据的存取,生命周期由如下控制

  • 浏览器会话的结束
  • session.gc_maxlifetime 指定过了多少秒之后数据就会被视为“垃圾”并被清除

在这里插入图片描述

3.SESSION和COOIKE的关系?

这道题基本上是PHP初级的面试题。

一般你在网上去找答案,一般的是

1.cookie数据存放在客户的浏览器上,session数据放在服务器上。
2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。

这些是单方面从各自的角度思考问题,其实他们之间还是有联系的。

SESSION中有个配置是session.use_only_cookies,指定是否在客户端仅仅使用 cookie 来存放会话 ID,启用此设定可以防止有关通过 URL 传递会话 ID 的攻击,默认是启用状态的。

这也就是为什么禁用cooke之后浏览器的登录状态会掉,这是因为本地的cookie保存了会话用的ID,没有了ID当然是找不到自己了。

所以这就会导致另一个面试题!

4. 禁用SESSION的话COOKIE可用吗?

答案是不能

原因是默认的配置只允许本地的cooike存储session的会话ID,如果本地cooike禁用,那么本地就不能保存会话ID了!

在这里插入图片描述

5. 如何限制SESSION的过期时间严格30分钟?

  1. 设置cooike的过期时间为30分钟。
  2. 设置session的过期时间为30分钟。
  3. $_SESSION中给变量存储结构写入过期时间,并在每次访问之前校验。

6. 怎么多台服务器共享SESSION?

  1. 共享SESSION的原因是因为如果负载均衡多台服务器,同一个会话访问可能分散到多台服务器中。
  2. 那么解决问题的方案就是不保存在单台服务器中。
  3. 可以保存在 redis、memcached等缓存中。

在这里插入图片描述

总结

SESSION的面试题,一般会从下面几点去考察

  • 数据的存取
  • 会话的安全性

这个问题虽然是大家作为PHP开发中的一个小问题,但是如果大家能对问题有充分的认识,就会

百尺竿头更进一步!

希望所有看完本文的开发者都能找到满意的工作!

最后,求关注!点赞!留言评论!

文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。

原文链接:coderfix.blog.csdn.net/article/details/118864139

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。