PHP面试考点---8. 会话控制

8. 会话控制

简述cookie和session得区别及各自的工作机制,存储位置等,简述cookie的优缺点;(会话控制技术,工作原理和优缺点);

(为什么要使用会话控制技术? 因为用户端和服务端是通过http协议来传输的,而http协议是无状态的,也就是说同一个用户请求两次http协议不会认为这是一个人发出的,会认是独立的操作,没有办法保持用户的登录状态,cookie和session可以保持用户登录的状态);

 

会话控制技术:

Cookie: 存储在客户端的文件,保存客户的信息;

设置: setcookie($name,$value,$expire,$path,$domain)

名称, 值, 生存时间,路径, 域名

获取:$_COOkIE[‘name’]

删除:setcookie($name,’’,time()-1)让它过期

Cookie的优点缺点:

Cookie是存储在客户端的,效率会高一些,但是不够安全,而且用户禁用cookie就没办法操作了;

Session: 存储在服务器,是基于cookie的;

操作: session_start();

$_SESSION[] = 1; 设置

$_SESSION = []; 删除

Session_destroy();删除,也会删除对应的session文件

配置(php.ini):

Session.auto_start: 是否自动开启session

Session.cookie_domain: 存储sessionid的cookie的有效域名

Session.cookie_lifetime: 生存时间(=0是不过期)

Session.cookie_path:默认路径

Session.save_path:session在服务器当中的保存路径

Session.name:session的键名默认phpsessid

 

Session的垃圾回收机制

Session.gc_probability = 1 //操作次数

Session.gc_divisor = 100 //session的start次数

Session.gc_maxlifetime = 1000 //最大生存周期

每100次session_start会清除最后一次修改大于1000的session文件

 

Session的优点缺点:信息安全,占用服务器资源,分布式问题(可以使用redis解决),

 

传递sessionId的问题:

如果cookie别禁用可以使用传递的方式

<a href=’1.php?<?php echo SID;?>’>next</a>

当cookie开启的时候SID为空,禁用的时候SID为sessionId;

 

Session的存储问题:

如果是分布式的话可以把session存储在redis中,避免存在一个服务器轮询到下个服务器找不到session的情况;

修改session.set_save_hendler()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值