session的工作原理 我一直对这个,不是特别明白,想请教懂这些的朋友例如,我进入一个后台管理系统,我只能看到自己的客户,这个应该是通过session来控制的吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 session是服务器端,临时创建的一个全局数组,当你注册一个session时,其他面页也可访问到你注册的变量. 其实,说的通俗一点,session就是一个大的全局变量,在进行web浏览时,会跟随用户的这样一种变量。主要用作变量的传递。给你推荐一本书,PHP网络编程技术与实例 思维科技编著。这上边就有关于session的小例子,特别容易懂! 恩,通过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的名字都是类似于SEEESIONID,而。比如weblogic对于web应用程序生成的cookie,JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是JSESSIONID。由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764另一种是作为查询字符串附加在URL后面,表现形式为http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如下面的表单<form name="testform" action="/xxx"><input type="text"></form>在被传递给客户端之前将被改写成<form name="testform" action="/xxx"><input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"><input type="text"></form>这种技术现在已较少应用,笔者接触过的很古老的iPlanet6(SunONE应用服务器的前身)就使用了这种技术。实际上这种技术可以简单的用对action应用URL重写来代替。在谈论session机制的时候,常常听到这样一种误解“只要关闭浏览器,session就消失了”。其实可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。恰恰是由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。 session 是存储于服务器端的用户私有的数据用户通过传递 sessionid 来通知 php 来使用这些数据按 php 默认方式运行时, session 数据极难被其他用户获取,从而保障了私密性当采用用户定义方式运行使,则需要程序员自行保障 session 原理就是服务器上写文件 这个不一定是用session来控制的 只不过是后台一种权限控制,可以用很多方法来实现 那我举个例子说说吧:比如一个用户登录后,取的用户名:$user = $_POST['username']; //假设它的名字叫"aaa"然后我再定义一个session名来保存它: $session['user'] = $user; // $session['user'] = "aaa"后面你随便在哪个文件中都可以用$session['user']了! 首先SESSION 对于每个用户是唯一的 ,例如 你第一次访问www.baidu.com时候 你的客户端浏览器就会生成一个 sessionID 一般会根据你主机名与你访问的域名生成,然后你以后访问时候都会用到这个SESSION,如果把浏览器关闭 SESSIONID就会中客户端注销;SESSIONID保存中客户端的COOKIE中,键值对方式 ,键中客户端,直中服务器端内存IE7 IE 8 中浏览器可以共用SESSION ,SESSION 是可以存储OBJECT类型的数据;SESSION 用法,例如 你需要保存一个购物的流程,SSO单点登录SESSION 默认时间为20分钟,你可以通过WEb.config 配置seession过期时间 你还是看我博客吧 还有很多 呵呵http://blog.csdn.net/qq289172257/article/details/7006346 php 正则 提取图片 java转到php,朋友们有什么建议? unexpected T_STRING 错误 求php mysql 事务处理 检测同一用户不能同时在线问题~~~~~!20回送 谁能支持个"人才网"的 程序,最好生成静态页, 别zend 字符串替换的问题 关于url编码转换问题。 odbc和jdbc PHP图片上传路径 只能上传我默认的路径 但是没法上传我的图片名字 求教 怎样从对象中取得某个元素 [调试疑问]工具调试和手动分析错误的区别
主要用作变量的传递。给你推荐一本书,PHP网络编程技术与实例 思维科技编著。
这上边就有关于session的小例子,特别容易懂!
另一种是作为查询字符串附加在URL后面,表现形式为http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。
为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如下面的表单
<form name="testform" action="/xxx">
<input type="text">
</form>
在被传递给客户端之前将被改写成
<form name="testform" action="/xxx">
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">
<input type="text">
</form>
这种技术现在已较少应用,笔者接触过的很古老的iPlanet6(SunONE应用服务器的前身)就使用了这种技术。
实际上这种技术可以简单的用对action应用URL重写来代替。在谈论session机制的时候,常常听到这样一种误解“只要关闭浏览器,session就消失了”。其实可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。恰恰是由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。
用户通过传递 sessionid 来通知 php 来使用这些数据
按 php 默认方式运行时, session 数据极难被其他用户获取,从而保障了私密性
当采用用户定义方式运行使,则需要程序员自行保障
只不过是后台一种权限控制,可以用很多方法来实现
比如一个用户登录后,取的用户名:$user = $_POST['username']; //假设它的名字叫"aaa"然后我再定义一个session名来保存它: $session['user'] = $user; // $session['user'] = "aaa"后面你随便在哪个文件中都可以用$session['user']了!
如果把浏览器关闭 SESSIONID就会中客户端注销;
SESSIONID保存中客户端的COOKIE中,键值对方式 ,键中客户端,直中服务器端内存IE7 IE 8 中浏览器可以共用SESSION ,
SESSION 是可以存储OBJECT类型的数据;SESSION 用法,例如 你需要保存一个购物的流程,SSO单点登录
SESSION 默认时间为20分钟,你可以通过WEb.config 配置seession过期时间
你还是看我博客吧 还有很多 呵呵
http://blog.csdn.net/qq289172257/article/details/7006346