php如何利用session进行用户退出?

表示恨不能理解session的用法,我在做一个退出功能,把session的值给清空了,之后跳转到登陆页面,还是可以通过浏览器的后退回到登进去的状态,请问这个应该怎么做?

 public function loginout(){                                                         
    $_SESSION = array(); //清除SESSION值.                                               
       if(isset($_COOKIE[session_name()])){  //判断客户端的cookie文件是否存在,存在的话将其设置为过期.       
             setcookie(session_name(),'',time()-1,'/');                              
                }                                                                    
             session_destroy();  //清除服务器的sesion文件                                    
     $this->redirect("index");                                                       
 }                                                                                   
阅读 9.8k
8 个回答

每跳转一个页面先判断session是否存在如果session不存在就跳到登录页面,登录后将session保存,
如果有session继续进行操作,
如果点击退出登录就先清session,再跳到登录界面
希望能帮到你
具体session的用法可以百度

unset($_SESSION['member'])//完事

你点击浏览器后退的时候,浏览器直接从本地缓存取的页面的源代码,并不会真正访问那个url,访问不了php控制器,判断不了session。

解决办法是在相关页面加上ajax代码判断当前登陆状态,未登录就用js控制页面跳转

新手上路,请多包涵

一般是基类中判断是否登陆
浏览器回退是读取本地缓存
可以参考楼上的异步提交方案

你在做退出登录加一个 unset($_SESSION) 语句 这样 即使你在做回退也不会有登录状态。

1,如果单纯用session 退出,用户不点击退出,

a:写个脚本,读session 文件的创建时间,过期了,直接删除,不友好。
b:调整session的 session.gc_probability  和 session.gc_divisor 的值,都写为 100,加重服务器负担,对用户也不友好

2,用户点击退出,session_distory();

如果有需求可以在数据库加上一个字段is_login来控制,用户点击session_destoty()。然后ajax去更改状态

设置session的过期,如果想实现session过期时候前端作出相应变化可以考虑持续请求后端检查session是否过期。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题