是否可以在销毁之前保存会话数据以用于数据库目的?
例如,我在会话中有以下数据,
// start session
session_start();
// init session var
if (!isset($_SESSION['images'])) $_SESSION['images'] = array();
array
0 =>
array
'image_id' => int 1
'image_title' => string 'test 1' (length=6)
1 =>
array
'image_id' => int 2
'image_title' => string 'test 2' (length=6)
我希望在会话销毁或浏览器关闭时将其发送到数据库。
if(unset($_SESSION['images']))
{
// do something?
}
可行吗?
答案 0 :(得分:0)
您可以使用设置用户级会话存储功能的session_set_save_handler()手动管理会话。然后,您可以通过session_register_shutdown()处理会话关闭。
以下是对此功能的有趣测试:http://www.rooftopsolutions.nl/blog/160
答案 1 :(得分:0)
答案 2 :(得分:0)
您应该将session_start();
视为在浏览器上使用与服务器上的会话文件匹配的哈希创建单个cookie,服务器将在您的“会话”处于活动状态时将任何数据放入$ _SESSION,一旦你关闭浏览器,从你的浏览器中丢弃cookie,并最终(由cron调用的清理)会话文件从服务器中删除。
如果要存储一段时间或用户的持久数据,则应将其存储在数据库,缓存文件,内存缓存等中。
答案 3 :(得分:0)
if(unset($_SESSION['images']))
{
// do something?
}
这不符合您的意图(在取消设置变量时执行)。相反,它只是成功取消设置会话变量并执行// do something
部分。