Cookie和Session机制的初步探讨

来源 :考试周刊 | 被引量 : 0次 | 上传用户:wsmkt
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 在网络技术迅猛发展的今天,人性化的网站建设越来越得到设计开发人员的重视,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期.
其他文献
摘要: 数学解题的过程,是将我们面临的数学问题的结构与我们已经获得了的结构相比较,调整合同的过程。其中调整是至关重要的一步,本文试图从调整问题的结构以适应固有的知识结构与调整固有的结构以适应问题的结构——双向调整来达到目的。  关键词: 不等式 数式结构 双向调整    必修5(苏教版)在利用不等式的知识点进行的课程资源开发中,只给定了一个基本不等式 ≤ (a≥0,b≥0),教育学生的目标是培养学
期刊
长期以来,在我国中学英语教学中,词汇教学既是中学英语教学的重点,又是中学英语教学的难点。而随着新课程的改革,英语教材的内容更趋复杂,难度更大了。而相反的是,学生的基础越来越薄弱,这无疑给我们的教学带来更大的困难。众所周知,语言这种东西如果一段时间不接触,就会变得陌生。中学生正是由于记不住英语单词,使得学习兴趣锐减,厌烦情绪大增,学困生面越来越大,两极分化日趋严重,甚至不少学生放弃英语,逃避英语,视
期刊
摘要: 《二泉映月》原是阿炳(华彦钧)所创作的二胡独奏曲,由储望华先生于上世纪70年代将其改编为钢琴曲。该曲在原作基础上既吸取了中国传统民间音乐的精华,又有所发展创新。本文从此曲的源流及创作背景出发,通过对它的改编和演奏风格的分析,旨在探索今天中国钢琴音乐作品创作的发展道路。  关键词: 华彦钧 改编 演奏风格 探索 发展    在世界文化趋于多元化发展的今天,如何保留、发扬本国的民族文化特色的精
期刊
摘要: 高中历史新课程实验正全面推进,本文就高三历史教师如何转变理念,把握新课程理念的精髓,夯实基础,立足知识体系的重新构建,提升高考历史复习的实效方面,谈谈高三历史复习教学中的一些体会,以提高备考实效。  关键词: 高三复习 更新理念 策略    为了适应知识经济时代发展的需要,在世纪之交,我国启动了一系列的教育教学改革。基础教育课程改革即是其中的重要组成部分。新课改的实验、新课程的实施、新理念
期刊
摘要: Proteus是一款功能强大的EDA软件,它所配备的仿真元件库使其在电子设备的动态仿真方面具有其他仿真软件不可比拟的优越性。它在软件使用方面,简单易学,尤其是在单片机教学中的应用,可在不需要任何硬件投入的前提下,使得单片机教学变得形象生动,并在教学中取得了良好的效果。本文通过展示Proteus在单片机教学中的应用实例,就其优点和实用性进行了一定的探究。  关键词: Proteus 单片机
期刊
众所周知,我国目前信息技术教学主要采用“任务驱动”教学法。“任务驱动”是一种建立在建构主义教学理论基础上的教学法,要求在教学过程中,以完成一个个具体的任务为线索,把教学内容巧妙地隐含在每个任务之中,让学生自己提出问题,并经过思考和教师的点拨,自己解决问题。尽管“任务驱动”教学法能促进学生自主学习的能力,但任务是由教师提出,学生的任务是接受和完成,因而其思维受到一定的限制,倾向于思维定势,缺乏自主性
期刊
摘要: 本文从预应力教材和实习指导书的编制、预应力教学方法、预应力实训室筹建、实训教师的培养和实训安全管理等几个方面阐述对预应力技术工种培训教学和技能鉴定。  关键词: 预应力实践教学 实训基地 指导教师培养    前言  预应力混凝土自1928年法国学者弗莱西奈(R.E.Dill)研究成功后,1945年开始大量推广,是土建工程的一种高新结构技术。上世纪90年代以来,我国公路建设事业迅猛发展,随着
期刊
摘要: 新课程改革注重知识的发生、发展过程,培养学生用数学的观点观察社会、思考问题,增强应用数学的意识,重视联系实际和数学应用意识。教师应加强数学应用教学,多让学生自主学习,重视课外实践,促进学生逐步形成和发展数学应用意识,提高实际应用能力。  关键词: 数学应用 生活经验 学以致用    新课程改革注重知识的发生、发展过程,培养学生用数学的观点观察社会、思考问题,增强应用数学的意识,真正让学生体
期刊
摘要: 适应我国基础教育课程改革的需要,正确认识生物学实验教学的地位和作用,重组生物学实验教学内容,加强学生的生态伦理观念教育,应成为高等师范院校生物科学专业教学改革的重要内容之一。  关键词: 生物学实验 生态伦理 教学    高等师范院校生物科学专业,肩负着为基础教育培养生物学教师的任务,正确认识我国中学生物学教学的现状,认识生物学实验教学的地位和作用,适应中学生物学教学改革的需要,在生物科学
期刊
摘要: 第二十九届奥运会顺利召开,让世界看到一个飞速发展的中国。随着中国在世界大舞台扮演的角色越来越重要,中国人对于英语学习的关注和热情也空前高涨。而在经历了十几年的学习历程之后,很多人学到的英语却被以英语为母语的人称为Chinglish。本文将从日常出现的Chinglish现象入手,着力分析Chinglish的表现形式和形成原因,进而分别从教学和学习两个方面给出合理建议,以期能对读者学到原汁原味
期刊