PHP中怎样在关闭网页时关闭session刷新时不关闭
3个回答
展开全部
其实难找是肯定,因为你可能不理解这具体的工作过程,再说他也不算很复杂只不过没有写或是没有人发出来而已,我给你说一下原理!
首先,网页都是离散型的,你打开一个页面当前对于服务器来说只有用session或是数据库进行记录,不过这个数据较短小还是使用session变量比较合适的!
打开一个首页,则服务器在接到请求是会生成一个sessionID去标记这一个客户,你可以使用session变量去完成客户打开了多少个页面的计数工作.比如打开一个页面可以使用session变量计数加上1,我想这个对于你不说不难的!
而客户关闭页面这个行为是客户端行为,所以你在关闭页面这前必须向服务器发送一个信息,这里当然要采用短小的AJAX去实现的.向服务器发送一个信息,而这个是要求有返回的,分会将session变量的数据减1后进行返回,根据返回,接到相应的数据后进行判断,若为0,则调用相应的设置方式要求设置.因为此时就是最后一个页面.
但这种方式可能实现不错,但效果却不行的!因为你要实现的还有以下几点.关闭时要阻击关闭,到AJAX返回数据后才可能进行判断,再进行关闭.这是第一个技术问题.
第二个,容易出错.因为我们能保证每一次请求都会将数据加1,但如果是刷新时,session变量要进行判断,如果不能判断,事实上是一个窗口,但服务器却会认为有两个.这样,到完全关毕时无法判断的!
第三,就是我们使用的若是_self的形式时一直打开是一个窗口,而服务器也要进行判断的.
第四,意外,就是意外关闭了其中一个窗口时怎么办?这种情况是无法处理的!
所以基本上来说,这种考虑一般是不去实现的!或是进行一个简单的实现的!一般都是在开始时要求设置,而后不做要求!这样用session一个变量就可以了!
有人说可以用长连接的形式让服务器去实现.其实这种方式就是让每一个页面跟服务器挂一个长连接.但也是有出错的时候,或者是点用服务器太大的资源的!所以很少有人这样实现!
一楼说的只是一个页面,那样是可以用JS实现的,但楼主说的是整站,也就是说只有一个页面且关闭时才会出现这个的效果.不知我理解的正确否?
首先,网页都是离散型的,你打开一个页面当前对于服务器来说只有用session或是数据库进行记录,不过这个数据较短小还是使用session变量比较合适的!
打开一个首页,则服务器在接到请求是会生成一个sessionID去标记这一个客户,你可以使用session变量去完成客户打开了多少个页面的计数工作.比如打开一个页面可以使用session变量计数加上1,我想这个对于你不说不难的!
而客户关闭页面这个行为是客户端行为,所以你在关闭页面这前必须向服务器发送一个信息,这里当然要采用短小的AJAX去实现的.向服务器发送一个信息,而这个是要求有返回的,分会将session变量的数据减1后进行返回,根据返回,接到相应的数据后进行判断,若为0,则调用相应的设置方式要求设置.因为此时就是最后一个页面.
但这种方式可能实现不错,但效果却不行的!因为你要实现的还有以下几点.关闭时要阻击关闭,到AJAX返回数据后才可能进行判断,再进行关闭.这是第一个技术问题.
第二个,容易出错.因为我们能保证每一次请求都会将数据加1,但如果是刷新时,session变量要进行判断,如果不能判断,事实上是一个窗口,但服务器却会认为有两个.这样,到完全关毕时无法判断的!
第三,就是我们使用的若是_self的形式时一直打开是一个窗口,而服务器也要进行判断的.
第四,意外,就是意外关闭了其中一个窗口时怎么办?这种情况是无法处理的!
所以基本上来说,这种考虑一般是不去实现的!或是进行一个简单的实现的!一般都是在开始时要求设置,而后不做要求!这样用session一个变量就可以了!
有人说可以用长连接的形式让服务器去实现.其实这种方式就是让每一个页面跟服务器挂一个长连接.但也是有出错的时候,或者是点用服务器太大的资源的!所以很少有人这样实现!
一楼说的只是一个页面,那样是可以用JS实现的,但楼主说的是整站,也就是说只有一个页面且关闭时才会出现这个的效果.不知我理解的正确否?
展开全部
建议新手用wamp等集成开发环境
省得麻烦 等以后熟悉了在单独安装
省得麻烦 等以后熟悉了在单独安装
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
session 在服务器上的管理,通常以文件形式保存,文件名就是 session id。
浏览器关闭的过程中,服务器上的 session 数据并没有被销毁,因为这时候没有发送任何请求,服务器那边不会知道是否要销毁 session 的数据。浏览器再次启动重新打开页面的时候,发送的 session id 还是原来的 id,虽然你说没用到 cookie,但是这个 id 就是通过 cookie 发送的。
你可以看看 php.ini 的设置,主要看这两项:
session.gc_maxlifetime
session.cookie_lifetime
浏览器关闭的过程中,服务器上的 session 数据并没有被销毁,因为这时候没有发送任何请求,服务器那边不会知道是否要销毁 session 的数据。浏览器再次启动重新打开页面的时候,发送的 session id 还是原来的 id,虽然你说没用到 cookie,但是这个 id 就是通过 cookie 发送的。
你可以看看 php.ini 的设置,主要看这两项:
session.gc_maxlifetime
session.cookie_lifetime
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询