cookie&session

 

什么是cookie?

 

1.cookie 是通过扩展http协议实现的 

2.cookie 主要包括 :名字,值,过期时间,路径和域;

3.存储形式:是以名/值对的形式保存下来的,创建 Cookie 时,需要指定 Name 和 Value。每个 Cookie 必须有一个唯一的名称

4. Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。

cookie的功能(用来做什么)

 

浏览器和Web 服务器除了在短暂的实际信息交换阶段以外总是断开的,而用户向 Web 服务器发送的每个请求都是单独处理的,与其他所有请求无关。然而在大多数情况下,都有必要让 Web 服务器在您请求某个页面时对您进行识别。例如,购物站点上的 Web 服务器跟踪每个购物者,以便站点能够管理购物车和其他的用户相关信息。因此 Cookie 的作用就类似于名片,它提供了相关的标识信息,可以帮助应用程序确定如何继续执行。

使用Cookie 能够达到多种目的,所有这些目的都是为了使 Web 站点记住你。

Cookie的创建

附:如果cookie不设置生命周期,则以浏览器关闭而关闭,这种cookie一般存储在内存而不是硬盘上.若设置了生命周期则相反,不随浏览器的关闭而消失,这些cookie仍然有效直到超过设定的过 时间。

 

 

 

 

什么是session

 

 

 

1.Session译为“会话”(又叫会话控制),其本义是指有始有终的一系列的动作或者消息。

 

2.Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

 

3.会话是啥?

 

我们可以理解为一问一答,这就是一次会话。(比如打招呼)

 

其实它就是在一次会话中解决2次HTTP的请求的关联,让它们产生联系,让2两个页面都能读取到找个这个全局的session信息。session信息存在于服务器端,所以也就很好的解决了安全问题。

 

session的工作原理(运行机制)

1.当我们开启一个session会话时(PHP:session_start()),会生成一个随机且唯一的session_id(PHP:PHPSESSID),此时,session_id存储在服务器的内存中。当我们关闭页面(即关闭浏览器)的时候,这个id会自动注销,当我们重新打开这个页面,会再次生成一个随机且唯一的session_id。

(注: session_start() 一个没有返回值的函数,运行后既不会报错,也不会显示成功信息)

2.每次我们访问一个页面,如果有开启session,也就是有session_start() 时,自动生成一个session_id 来标注是这次会话的唯一ID的同时,也会自动往cookie里写入一个名字为PHPSESSID的变量,它的值正是session_id,当这次会话没结束,再次访问的时候,服务器会去读取这个PHPSESSID的cookie是否有值有没过期,如果能够读取到,则继续用这个session_id,如果没有,就会新生成一个session_id,同时生成PHPSESSID这个cookie。由于默认生成的这个PHPSESSID cookie是会话,也就是说关闭浏览器就会过期掉,所以,下次重新浏览时,会重新生成一个session_id

Session的功能

 

session在Web技术中非常重要。为什么?

因为网页是一种无状态的连接程序,因此,我们无法得知用户的浏览状态。而通过session,我们就可以记录用户的有关信息,以供用户再次以此身份对Web服务器提交请求时做确认。

session和cookie的区别

(1) cookie数据存放在客户端,session数据放在服务器上,但是会在客户端的cookie中存入一个标识SessionID。

(2) session的存储空间无限制,cookie在不同的浏览器上是有所不同。

(3) cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:
   将登陆信息等重要信息存放为SESSION
   其他信息如果需要保留,可以放在COOKIE中

 

创建和使用session及相关函数

session_start();

session初始化操作,声明一个全局数组$_SESSION,映射寄存在内存的session数据。如果session文件已经存在,并且保存有session数据,session_start()则会读取session数据,声明并填入$_SESSION中,开始一个新的session生命周期。

说明:这个函数没有参数,且返回值为true,如果使用基于cookie的session,那么在session_satrt()之前不能有任何的输出,包括空白.

注册一个会话变量:

从PHP4.1以后,会话变量保存在超级全局数组$_SESSION中。要创建一会话变量,只需要在数组中设置一个元素。($_SESSION[your-session-name’]=value);

使用一个会话变量:

(echo $_SESSION[your-session-name’])

注销(销毁)一个会话变量:

unset($_SESSION[your-session-name’]);// !!! unset($_SESSION)不要用!!!

session_unset(); //多项释放。将所有登陆在session文件里的变量释放出来

$_SESSION=array();  //多项释放,释放所有登录在$_SESSION参数里的变量

session_destroy(); //结束当前会话,该操作会删除保存的在本地的sess_xxx文件,且执行该操作后,在其他页面将无法取得当前存储的session值。

session_set_cookie_params(‘一个unix时间戳’);//设置session的实效时间(不是所有浏览器都支持的,且必须在session_start()之前调用)

setcookie(session_name() ,session_id() ,,);//也可以通过cookie设置sessionid来控制session时间

posted @ 2017-05-14 13:25  寻梦1314  阅读(174)  评论(0编辑  收藏  举报