PHP[入门]P19-会话控制
这是我早期的 php 学习笔记,php 的学习版本版本是 5.6、7,🐟2020/05/06年从有道笔记导出至此。
会话控制
http协议:
特点:无状态 ,无连接的协议(脸盲)
状态码:200 请求成功
404 未知的页面
302,307 :重定向
400:语法错误
500:服务器错误
报文头部:请求行 空行 头部信息
头部信息:分为很多种,里面重要的是cookie信息
使用场景:
访问网站的不同页面的时候 ,为了避免用户身份的重复验证
就是用cookie session
cookie:
是保存在浏览器中的指定文件内的cookie值 是保存在本地的,这个值是用setcookie设置的,下次访问的时候,浏览器会自动将cookie值提交给当前所属的站点服务器,setcookie设置的作用域是'/',name整个站点都可以使用这个值.
-----------------
如果是第一次访问,没有请求跟返回的cookie值
在后台登录以后,设置cookie 以后 访问直接把cookie 或者session值返回给浏览器
当第二次请求,login.php.时候,浏览器已经将刚才的值存储起来,当第二次请求的时候,会把数据提交给服务器,执行第二次请求以后,服务器不会返回值给浏览器
第三次.....都是一样,只要浏览器中有这个cookie值并且没有过期 服务器就不会再返回值给浏览器,什么时候回有值返回给浏览器,
1.修改了cookie值
2.cookie过期
---------------
设置cookie:
setcookie('名','值','生存时间',域);
域:'/':当前站点都有效; 不传值:当前目录
读取:
$_COOKIE['名'];
销毁:
1.设置生存时间为之前时间(浏览器自动判断不会提交)
setcookie('名','值',time()-60,域);
2.unset($_COOKIE['name']);
特点:
使用COOKIE不安全,因为可以在浏览器中查看到
尽量不要使用cookie设置保存敏感信息
session:
session:值存在服务器中,将一个加密的串返回给浏览器,也放在浏览器的cookie中
开启:session_start();
注:在开启session前边不要有输出,把session_start()放在文件开始最前边
设置session:
$_SESSION['名'];
销毁:
1.unset($_SESSION['名']);
2.session_destroy() 函数
3.setcookie('PHPSESSID','','过期时间');
//因为值存在浏览器的cookie文件中,把时间设置为过期的,浏览器不会提交
函数:
session_name(); 获取到的是在浏览器中存的cookie的key
session_id(); 获取到的是在浏览器中存的cookie的value
面试题:
浏览器中禁用cookie以后,还能使用session么?
答:不能使用,因为session的真正的值保存在服务器中,但是也有value存在浏览器的cooki中,是依赖关系。但是解决方式有:
1.手动拼接URL
2.session.use_trans_sid = 1 可以在url中自动拼接
session.use_only_cookies = 0 是否依赖于浏览器中的cookie
自动登录:
使用setcookie()
-----------------
serialize:序列化
unserialize:反序列化