Shr*_*hri 11 php cookies session
虽然这个问题有多个重复,但我找不到合适的解决方案.需要一些帮助.
我ini_set('session.cookie_lifetime', 0);在配置文件中使用过.
但它并没有帮助我在浏览器关闭时销毁会话.
应用电流:
1)在认证页面中,如果用户有效,则使用生成新的会话标识符 session_regenerate_id(true);
2)控制转到welcome.php,我开始使用新会话 session_start();
3)在注销页面代码中
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
Run Code Online (Sandbox Code Playgroud)
这可能对你有帮助
session_set_cookie_params(0);
session_start();
Run Code Online (Sandbox Code Playgroud)
您的会话 cookie 将被销毁...因此您的会话将一直有效,直到浏览器打开。请查看http://www.php.net//manual/en/function.session-set-cookie-params.php这可能对您有所帮助。
使用保持活着.
登录时:
session_start();
$_SESSION['last_action'] = time();
Run Code Online (Sandbox Code Playgroud)
每隔几(例如20)秒调用一次ajax:
windows.setInterval(keepAliveCall, 20000);
Run Code Online (Sandbox Code Playgroud)
服务器端keepalive.php:
session_start();
$_SESSION['last_action'] = time();
Run Code Online (Sandbox Code Playgroud)
在其他每一个动作上:
session_start();
if ($_SESSION['last_action'] < time() - 30 /* be a little tolerant here */) {
// destroy the session and quit
}
Run Code Online (Sandbox Code Playgroud)
有不同的方法可以做到这一点,但是服务器无法检测到浏览器何时关闭,因此很难破坏它。
使用当前时间创建新会话或向当前会话添加时间变量。然后在启动或执行操作时检查它以查看是否必须删除会话。
session_start();
$_SESSION["timeout"] = time();
//if 100 seconds have passed since creating session delete it.
if(time() - $_SESSION["timeout"] > 100){
unset($_SESSION["timeout"];
}
Run Code Online (Sandbox Code Playgroud)
使 javascript 执行一个将删除会话的 ajax 调用,并使用onbeforeunload()一个 javascript 函数在用户离开页面时调用最终操作。出于某种原因,这并不总是有效。
如果您总是希望用户在页面关闭后在启动时看到登录页面,您可以在启动时删除会话。
<? php
session_start();
unset($_SESSION["session"]);
Run Code Online (Sandbox Code Playgroud)
可能还有更多。
| 归档时间: |
|
| 查看次数: |
89763 次 |
| 最近记录: |