Ari*_*lam 9 php session codeigniter
最近我开发了一个带有codeigniter的web应用程序.我在那里遇到了与会话相关的问题.
问题场景:
如果用户A登录到应用程序,则会话中设置用户ID.执行任务后,用户A关闭浏览器并离开计算机.不久之后,用户B来到并打开浏览器,看到应用程序处于登录状态.或者当用户B写下的URL,然后按Enter直接重定向到应用程序而无需使用前一交易日任何身份验证.
我使用以下配置进行会话:
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 1800;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如何通过关闭codeigniter中的浏览器或浏览器选项卡来销毁所有会话?
小智 7
编辑config.php文件并设置sess_expire_on_close为true.
例如
$config['sess_expire_on_close'] = TRUE;
Run Code Online (Sandbox Code Playgroud)
您可以使用javascript和异步请求.关闭窗口时,会调用window.onunload的处理程序
var unloadHandler = function(e){
//here ajax request to close session
};
window.unload = unloadHandler;
Run Code Online (Sandbox Code Playgroud)
要解决重定向问题,php方面你可以使用一个计数器
class someController extends Controller {
public function methodWithRedirection(){
$this->session->set_userdata('isRedirection', 1);
//here you can redirect
}
}
class homeController extends Controller{
public function closeConnection(){
$this->load->library('session');
if($this->session->userdata('isRedirection')!== 1){
//destroy session
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24842 次 |
| 最近记录: |