PHP基础2-Cookie和Session

Cookie诞生的缘由

我们都知道Http都是无状态的,但是通常我们需要识别访问服务器的是哪个用户.比方说:限制用户权限,会员识别等等,我都需要区别对待。鉴于此,我们需要知道状态的存在,于是Coolie诞生了。

什么是 Cookie?

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP能够创建并取回 cookie 的值。

通常,我们Cookie是在浏览器的,就算同一个用户在不同浏览器所生成的cookie值也是不同的。

 

但是由于特殊手段,我们可以做到伪造身份去访问服务器,所以会产生跨域攻击的可能性,这就是传说中的跨站请求伪造(CSRF)的一种方式。

我们简单点,怎么存?

<?php

setcookie('name', 'value', time() + 3600,'/path','192.168.1.1');

怎么取?

echo $_COOKIE['name'];

PHP其实已经把这些值当做头,在请求的时候全部加上了,这一切都是自动的,你说爽不爽!

 

再来说下Session

PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

上图中的PHPSESSID就是用来获取Cookie信息的key值。

session默认是关闭的,所以我们要先开始session 执行:session_start();然后通过$_SESSION获取session的值。不想用了,可以调用 session_destroy();彻底终结,也可以unset你想去掉的某个字段。

我们可以通过phpinfo()函数来查找session的存储方式和位置。

面试问:cookie失效了,session还有用吗?session还是会再服务器存储着,但是,你不知道存的是什么,没办法区分相应的用户,所以,也等于是失效了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章