php如何利用session进行用户退出?
PHPz
PHPz 2017-04-11 09:00:50
[PHP讨论组]

表示恨不能理解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");                                                       
 }                                                                                   
PHPz
PHPz

学习是最好的投资!

全部回复(8)
天蓬老师

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

伊谢尔伦
unset($_SESSION['member'])//完事
PHP中文网

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

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

大家讲道理

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

PHPz

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

ringa_lee

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

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

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

高洛峰

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

怪我咯

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号