• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 英语学习 > 正文

    [Cookie和Session机制的初步探讨] 机制探讨

    时间:2018-12-26 03:26:33 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要: 在网络技术迅猛发展的今天,人性化的网站建设越来越得到设计开发人员的重视,Cookie和Session机制的使用,可以大大提高网站运行的效率。但很多用户往往分不清Cookie和Session机制的区别和联系,本文就这两机制进行初步探讨,对Cookie和Session机制的概念、原理和用途做简要的区别。
      关键词: Cookie Session客户请求 变量传递
      
      1.Cookie概念、用途及工作原理
      Cookie技术最先被Netscape公司引入到Navigator浏览器中。之后,WWW协会支持并采纳了Cookie标准,微软也在Internet Explorer浏览器中使用了Cookie。现在,绝大多数浏览器都支持Cookie,或者至少兼容Cookie技术的使用。按照Netscape官方文档中的定义,Cookie是指在HTTP协议下,服务器或脚本可以维护客户端计算机上信息的一种方式。通俗地说,Cookie是一种能够让网站Web服务器把少量数据储存到客户端的硬盘或内存里,或是从客户端的硬盘里读取数据的一种技术。
      Cookie最根本的用途是能够帮助Web站点保存有关访问者的信息。更概括地说,Cookie是一种保持Web应用程序连续性(即执行“状态管理”)的方法。浏览器和Web服务器除了在短暂的实际信息交换阶段以外总是断开的,而用户向Web服务器发送的每个请求都是单独处理的,与其他所有请求无关。然而在大多数情况下,都有必要让Web服务器在您请求某个页面时对您进行识别。Cookie的作用就类似于名片,它提供了相关的标识信息,可以帮助应用程序确定如何继续执行。
      Cookie应用的几条限制。大多数浏览器支持最多可达4096字节的Cookie,如果要将为数不多的几个值保存到用户计算机上,这一空间已经足够大,但你不能用一个Cookie来保存数据集或其他大量数据。在实际应用中,你可能并不希望在Cookie中保存大量的用户信息,而只希望保存用户编号或其他标识符。之后,当用户再次访问你的站点时,你就可以使用该用户ID在数据库中查找用户的详细信息。浏览器还限制了在用户计算机上保存的Cookie数。大多数浏览器只允许每个站点保存20个Cookie。如果试图保存更多的Cookie,则最先保存的Cookie就会被删除。还有些浏览器会对来自所有站点的Cookie总数做出限制,这个限制通常为300个。最常遇到的Cookie限制是:用户可以设置自己的浏览器,拒绝接受Cookie。
      2.Session概念、用途及工作原理
      Session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息。Session是一种跟踪和识别用户的机制,最早出现在动态脚本语言ASP中,在PHP中的使用是从PHP4开始增加的一项功能。Session是指用户在浏览某个网站时,从进入网站第一个网页开始到浏览器关闭所经历的时间段。当它在服务端完成响应后,服务器就失去与客户端浏览器的联系。从这点而言,Session是一个特定的时间概念,它能够存储当前浏览器窗口打开的任何窗口的用户信息。
      当程序需要为某个客户端的请求创建一个Session的时候,服务器首先检查这个客户端的请求里是否已包含了一个Session标识,称为Session ID。如果已包含一个Session ID则说明以前已经为此客户端创建过Session,服务器就按照Session ID把这个Session检索出来使用(如果检索不到,可能会新建一个);如果客户端请求不包含Session ID,则为此客户端创建一个Session并且生成一个与此Session相关联的Session ID。Session ID的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个Session ID将被在本次响应中返回给客户端保存。保存这个Session ID的方式可以采用Cookie,这样在交互过程中浏览器可以自动地按照规则把这个标识发挥给服务器。一般这个Cookie的名字都是类似于SEEESION ID。
      恰恰是由于关闭浏览器不会导致Session被删除,迫使服务器为Session设置了一个失效时间,当距离客户端上一次使用Session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把Session删除以节省存储空间。
      3.Cookie和Session的区别与联系
      Cookie是客户端的存储空间,由浏览器来维持。具体来说,Cookie机制采用的是在客户端保持状态的方案,而Session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以Session机制有时需要借助于Cookie机制来达到保存标识的目的,但也有其他选择,比如说重写URL和隐藏表单域。
      对于Cookie来说,假设我们要验证用户是否登陆,就必须在Cookie中保存用户名和密码(可能是md5加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,将给数据库造成多余的负担。因为我们并不能只做一次验证。因为客户端Cookie中的信息是有可能被修改的。而Session就不同了,Session是存储在服务器端的,远程用户没办法修改Session文件的内容,因此我们可以单纯存储一个$admin变量来判断是否登陆,首次验证通过后设置$admin值为true,以后判断该值是否为true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。
      Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的Session ID,用该Session ID为标识符来存取服务器端的Session存储空间。而Session ID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一Session ID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
      4.Session和Cookie变量的创建
      下面,我们以php代码实例来简单了解一下Session和Cookie变量的创建,其使用方法我们就一目了然了。
      <?php
      Session_start();//开始一个会话,如果要使用Session程序最前面一定要加上这句
      $_Session[’user_ID’]=’123’;//给一个Session变量赋值,如果该变量不存在即创建
      echo$_Session[’user_ID’];//访问Session变量
      $_Session=array();//清空所有Session变量
      Session_destroy();//清除会话ID
      //Sessionend
      //Cookie start
      setCookie(’user_ID’,123);//创建一个Cookie变量user_ID=123
      echo $_Cookie[’user_ID’];//访问Cookie变量和变通变量一样
      setCookie(’user_ID’,0,time()-1);//删除Cookie变量
      //codie end该代码不可运行,只是将所有使用方法在这里列出,实际应该不同功能在不同页面使用。
      ?>
      5.结语
      具体来说,Cookie机制采用的是在客户端保持状态的方案。它是在用户端的会话状态的存贮机制,他需要用户打开客户端的Cookie支持。Cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力。而Session机制采用的是一种在客户端与服务器之间保持状态的解决方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以Session机制可能需要借助于Cookie机制来达到保存标识的目的。而Session提供了方便管理全局变量的方式。Session是针对每一个用户的,变量的值保存在服务器上,用一个Session ID来区分是哪个用户Session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用Cookie时,这个值也可能设置为由get来返回给服务器。就安全性来说:当你访问一个使用Session的站点,同时在本地建立一个Cookie,建议在服务器端的Session机制更安全些。因为它不会任意读取客户存储的信息。显然,Cookie和Session机制各有优点,我们使用它们的时候,要根据不同的需要采用不同的机制。
      
      参考文献:
      [1]胡忠望,刘卫东.“Cookie应用与个人信息安全研究”.计算机应用与软件,2007.3,第24卷,第3期.
      [2]侯金彪,胡凯,王文博.“php中Session变量的应用研究”.科技信息,2006.
      [3][美]R.Allen Wyke.Michael J.Walker著.Robert Cox信达工作室译.php开发人员手册[M].北京:人民邮电出版社,2001:207-210.
      [4]郑江波.“PHP中Session机制的研究与应用”.荆门职业技术学院学报,2007.3,第22卷,第3期.

    推荐访问:探讨 机制 Cookie Session

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章