session无效 跳转问题
本帖最后由 rikeinei@163.co 于 2013-3-6 17:05 编辑我以前用过Java的filter(过滤器),在里面实现检测session是否有效,无效的话,则全局控制跳转回到 login 画面。
我是php和CI新手,请问在CI里如何全局控制跳转?钩子?还是在父类构造器里实现跳转?
我写了好久,用redirect和Js跳转,貌似都不太好控制啊,有高手能贴出代码参考一下吗? 望楼下高手能解答一下 用钩子是没问题的。
我以前用 MY_Controller 做控制。
另外,这个要看你是 AJAX 请求的还是其他方式的。 本帖最后由 rikeinei@163.co 于 2013-3-7 08:49 编辑
暂时没有用AJAX
我用的是 MY_Controller,在构造函数里面判断会话是否有效。也设置了redirect,但是出现了比较奇怪的现象
1,使用用户登陆 http://localhost/ci/login
2,输入用户名,密码,验证OK,直接redirect进入menu画面 http://localhost/ci/menu
3,点击logout,消除会话,redirect跳回登陆画面http://localhost/ci/login
4,在浏览器地址栏,直接输入 http://localhost/ci/menu,这个时候又进到http://localhost/ci/menu
这个时候画面的当前登陆用户名依然显示。(这里是否是浏览器的历史状态?按照道理说,这个时候会话应该已经无效了,里面什么东东都没有了)
5,手动刷新浏览器,这个时候才验证到会话无效,跳转到http://localhost/ci/login
我想在会话无效状态下,强行输入 http://localhost/ci/menu的时候,能够不用手动刷新浏览器,直接跳转回 http://localhost/ci/login,不知道怎么整。 rikeinei@163.co 发表于 2013-3-7 08:44 static/image/common/back.gif
暂时没有用AJAX
我用的是 MY_Controller,在构造函数里面判断会话是否有效。也设置了redirect,但是出现了比 ...
你这个问题就是浏览器缓存造成的,所以你刷新以后就没问题了。
一般来说,这样即使显示已登录页面,也不会有什么问题吧。。。。 Hex 发表于 2013-3-7 16:58 static/image/common/back.gif
你这个问题就是浏览器缓存造成的,所以你刷新以后就没问题了。
一般来说,这样即使显示已登录页面,也不 ...
这个,,, 怎么能说没有问题了,需要手动刷新本身就是问题
大神,如果使用PHP自带的session是否问题可以解决阿? rikeinei@163.co 发表于 2013-3-7 08:44 static/image/common/back.gif
暂时没有用AJAX
我用的是 MY_Controller,在构造函数里面判断会话是否有效。也设置了redirect,但是出现了比 ...
logout->destroy session ? 楼主所说的情况在某些服务器上是存在的,想当初sourceforge的空间服务器没有被封掉的时候,ci在上面部署的时候就会出现这种情况。我想归根结底还是由于CI的session库没有使用原生的session,而是自己写的。HEX兄按照ci的session库函数自己封装了一个使用原生session实现的版本,楼主不妨试一下。 yunnysunny 发表于 2013-3-11 09:47 static/image/common/back.gif
楼主所说的情况在某些服务器上是存在的,想当初sourceforge的空间服务器没有被封掉的时候,ci在上面部署的 ...
嗯,尝试一下了,多谢 rikeinei@163.co 发表于 2013-3-11 09:38 static/image/common/back.gif
这个,,, 怎么能说没有问题了,需要手动刷新本身就是问题
大神,如果使用PHP自带的session是否问题可 ...
好吧。。
这个是浏览器缓存造成的问题,也就是说浏览器不发送新的请求给服务器,都不请求服务器了,判断是否注销自然无效了。
我们要解决的问题是如何不是用缓存,而不是说Session有问题,所以我说没问题也是这个意思。
既然知道问题所在,我们就要想办法不是用缓存,这个就属于另外一个话题了。
一般使用发送特殊http header可以解决问题,另一个,可以在请求的URL后面加上随机数。
等等。
页:
[1]
2