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:反序列化