会话技术之Cookie 和 Session

为什么要使用会话技术

会话从字面上来说就是,就是两个人说话,也就是两个人交流,那么这里说的是计算机web端的交流,因为互联网是基于HTTP传输信息的,而http传输是无状态协议,缺少状态,意味着如果后续需要前面的内容,必须重传。也就是每一次连接都是独立的请求,这样就会给我们程序带来不便,比如我们要登陆一个网站购买商品时,是不是每次打开一个页面都需要登陆,答案是否定的,我可以给我的网址传一个参数,虽然这样能实现,但是没实质性作用,也不安全,任何人都可以登陆。这时就需要用到下面学到的技术Cookie 和 Session,主要用来实现用户登陆,跟踪用户等

Cookie

cookie 是一门浏览器技术,主要通过浏览器保存数据(主要保存在浏览器的某个文件中),因为cookie是以文件的形式保存在浏览器中,所以cookie也是区分浏览器的。因cookie是由服务器发送到浏览器的,所有保存在浏览器的数据,可以由服务器控制,保存什么、保存的状态等。每次浏览器发出请求时,都会携带cookie,意味着服务器每次都可以拿到cookie数据,每次请求间的cookie数据是共享的。这样就解决了我们的无状态问题,用setcookie() 来设置我们的cookie值

当你第一次设置cookie值的时候,首先服务器响应一个cookie值,在下一次请求时,如果存在cookie,它都会携带,所以当你第一次设置一个cookie的时候,他是不会携带的。

按自己的思路,简单的化了一个用cookie实现登陆的功能。删除cookie,可以让cookie时间过期,使用 setcookie('cookie名',time()-1);

Session

Session 技术与 Cookie 相似,都是用来储存用户信息的,最大不同是cookie是将数据存储在客户端电脑中,而session是把数据存在服务器系统下,不会被用户或者其他人操作,相比更安全。我们通过session_start() 开启会话,返回已经存在的会话。当设置一个session值时,将全部数据保存在服务器端,在客户端会保存由服务器为用户创建的一个Session标示符,成为Session ID,使用cookie技术保存Session ID
$_SESSION['name'] = "zhangsan";  删除名字为name值session:  unset($_SESSION["name"]) ,删除所有与Session $_SESSION = array(); session_destroy();
session 是基于cookie的,通常会有这样的面试题,禁用cookie 后session 能用么?答案 理论上是可以的,可以通过get传递 session ID,但是这样不够安全,现在所有的浏览器都不会禁止cookie,所以我们使用基于cookie的session就是可以的

Session 默认有效期是关闭浏览器,为什么session会消失,主要原因是浏览器端cookie内保存的 sessionID 失效了,因为session是基于cookie的,所以关闭浏览器会失效。

浏览器关闭,session是不会马上消失的。

如何延长session声明周期,解决方案:延长cookie 和 session 的生存时间

posted @ 2014-10-24 02:11  诚人小李  阅读(1676)  评论(4编辑  收藏  举报