Session与cookie

来源:互联网 发布:simd编程 编辑:程序博客网 时间:2024/06/05 18:10

Cookie机制:是一种客户端机制,正统的cookie分发是通过扩展http协议来实现的,服务器通过在http响应头上添加一行特殊的标示,提示浏览器按照提示生成cookie,而纯粹的客户端脚本如javascript或VBscript也可以生成cookie,cookie的使用是由浏览器按照一定的原则自动发送给服务器的,浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的http请求头上发送给服务器。Cookie的内容包含:名字、值、过期时间、路径和域。路径和域以期构成cookie的作用范围,若不设置过期时间,则表示这个cookie的作用周期是浏览器的会话期间。这种cookie称为会话cookie,他不存储在硬盘上,而是在内存中。若设置过期时间,浏览器就会把cookie存储在硬盘上,并支持浏览器间共享。

Session是什么:session是指一个终端用户与交互系统进行通信的时间间隔,通常是指从注册进入系统到注销退出系统之间所经过的时间。具体到web中的session就是指从进入网站到浏览器关闭所经过的这段时间。一个session的概念需要包括特定的客户端,特定的服务器端及不中断的操作时间。

工作原理: 1、当一个session第一次被启用时,一个唯一的标示就被存储于本地的cookie中

                     2、首先使用session_start()函数,php从session仓库中加载已经存储的session变量。

                     3、当执行php脚本时,通过使用session_register()函数注册session变量。

                     4、当php脚本执行结束时,未被销毁的session变量会被自动保存到本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定。

Session解决方案:由于http协议自身的特点,用户每执行一次php脚本,都需要与web服务器重新建立连接。由于无记忆的特点,每次连接都无法获取上次的状态,这样一个php脚本中的值就无法传递给另一个脚本,即每一个脚本中的变量都是该脚本的局部变量,而通过session机制,就可以解决这个问题,因为session是服务器端的机制,因此session是提供在php中定义全局变量的方法。Session不是一个简单的时间概念,一个session中还包括特定的用户和服务器,一个session所定义的全局变量的作用范围,是指这个session所对应的用户所访问的所有php。服务器上它在web服务器上保持用户的状态信息供在任何时间任何页访问,

Session机制:是存储在服务器端的会话,相对安全,服务器使用类似于散列表(或者就是散列表)的方式,来存储信息。当程序需要为某个客户端请求创建一个session时,服务器首先检查这个客户端请求里是否已包含一个session标示(称为session id)如果已包含,则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用,如果检索不到,就创建一个,如果客户端请求不包含session id,则为此客户端创建一个session并且声称一个与此session关联的session id,session id的值应该是既不会重复,又不容易被找到规律被模仿的字符串,这个session id将被本次响应中返回给客户端。

Php中的session与cookie

由于session是以文本文件的形式存储在服务器端的,所以不怕客户端修改session的内容,实际上在服务器端的session文件,php自动修改session文件的权限,只保留了系统读和写的权限,而不能通过ftp修改,所以更安全。对于cookie,如果我们要验证用户名和密码是否正确,就需要在cookie中保存(可能是MD5加密后的字符串),并在每次请求页面时进行验证,而如果要把用户名和密码存储在数据库,每次都要进行查询,加重了服务器的负担。而session文件是存储在服务器的,用户无法修改,因此我们只需要用一个变量来标示是否已经登录,首次验证通过后,就可以设置这个值真,假如不是就返回登录页面,这样就可以减少很多数据库的操作,也避免了每次都要登录的问题。

0 0
原创粉丝点击