關於session

最近接手一個已經上線的項目。這個系統只有登入沒有登出功能。為了保證session不過期,所以用了header的方式來保存session。

我接手後就要求既能登入又能登出。所以就需要在登出的時候清楚session。

登入是這樣寫的

function authenticate()

{

header('WWW-Authenticate: Basic realm="REGISTRATION FOR HR"');

header('HTTP/1.0 401 Unauthorized');

echo "You must enter a valid login ID and password to access\n";

exit;

}

 

在登錄出的時候用session_unset 加 session_destroy是可以清除掉session。但是無法清除保存在cookie的用戶名密碼。$_SERVER['PHP_AUTH_USER']是清除不掉的。

!isset($_SESSION['hr']) && !isset($_SERVER['PHP_AUTH_USER'])

若缺少後者的判斷,則會一直提示authenticate的提示框。即使輸入的帳號是正確的。

 

因此,決定放棄這種做法,手動保存session。

但是也出現了個問題。若使用session_unset 加 session_destroy清除掉session後,權限好像亂了。而logout的時候session沒了。但是重新登錄session的role好像依然保持著上一個登錄的用戶的role。最後解決:在login之前採用unset($_SESSION['role'])。釋放掉session。有點莫名其妙的感覺。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值