我有这个用于登录的代码,我在会话变量中存储以下内容:
if($do == "login") {
session_start();
$_SESSION["valid"] = true;
$_SESSION["studentUniqueId"] = $user_row['studentUniqueId'];
$_SESSION["loginName"] = $loginName;
$_SESSION["timeout"] = $now;
}
会话文件看起来像这样:
有效| B:1; studentUniqueId | S:5:" 10001&#34 ;; LOGINNAME | S:13:" abc@gmail.com" ;;超时| S: 19:" 2015-07-01 18:26:32&#34 ;;
我正在销毁用户会话的注销代码:
if($do == "logout") {
session_start();
$_SESSION = array();
session_unset();
session_destroy();
}
注销后,会话文件包含:
有效| B:0;
即使我已经使用了session_destroy(),在注销后,我的服务器Temp目录上的有效| b:0; 存在会话文件,并且临时目录的大小也会大大增加。
我想在session_destroy()/ logout之后删除这些文件,这不是现在的方式。
我的代码是否有任何问题。
答案 0 :(得分:2)
编辑2 :(删除完整的会话数据,您可以使用以下代码)
ini_set('session.gc_max_lifetime', 0);
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);
修改1(原始):从PHP MANUAL
尝试此操作<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();
// Unset all of the session variables.
$_SESSION = array();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Use this too
ini_set('session.gc_max_lifetime', 0);
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);
// Finally, destroy the session.
session_destroy();
?>