ThinkPHP关于session无法清除的一个小问题

首先,问题是这样的,接触ThinkPHP没多久,在做用户登录以及注销的时候遇到了一个小问题,那就是用户可以正常登陆,但是点击注销链接后,理论上应该是session被清空,但是却仍然还是自动跳转到了首页(登录页判断了session是否设置,设置了则跳转到首页),说明session没有被清空。

经过一段时间的排查,最终确定问题出在out,也就是用户注销这个方法上。

上面是我原来写的用户注销方法,代码很简单,就是清除session,然后一个成功提示。

为此我做了个自动刷新的网页,方便实时查看登陆以及注销用户后,session的状态。

通过这个页面的帮助,很快就找到了问题所在。

用户注销不会清空session,但是如果在成功提示的时候,再次刷新网页的话,session才会被清空,也就是success提示的网页需要刷新一次才能执行代码并清除session,于是查看了一下成功提示页面的源代码,使用的是location.href方式跳转网页。

估计没人会想到问题就出在这个成功提示代码上面,百度搜索了一下,基本能够得出大概关于localtion.href会加载缓存的结果。

关于这个问题的解决方案,目前有两种:

1、修改ThinkPHP默认提示模板,使用meta refersh 或者其它会重新发起请求的js跳转网页。

2、使用ThinkPHP控制器的Redirect方式跳转网页。

由于刚开始学习ThinkPHP没多久,还是有点生疏,但是学习过程中难免遇到各种各样的问题,唯有抱着求知和细心的态度才能不断前进。

如果各位有遇到和我相同的问题,希望这篇文章能帮到你们,也希望个人多多支持,互相交流!