2011-04-13 150 views
0

我刚刚遇到问题。我将会话标识存储在cookie中,以便在用户离开某个网站并再次返回时检索篮子信息。我的问题是,作为一项测试,我清除了所有会话但保留了Cookie,但现在页面只是继续加载。php - 检查服务器上是否存在会话文件

我的问题是,有没有办法首先使用PHP来获取我的tmp目录,然后测试存储的会话ID是否有效。

问候,

菲尔

编辑

我目前使用

if(isset($_COOKIE[$cookieKey])) { 
    session_id($_COOKIE[$cookieKey]); 
} 
// create a new or carry on the existing session 
session_start(); 

这是给我的问题

+0

PHP会每隔一段时间清理一次“陈旧”的会话,没有理由为什么你应该依靠检查某个特定会话的存在。 – 2011-04-13 09:45:59

+0

'$ cookieKey'从哪里来?你偶然试图分享几个用户之间的会话吗? – 2011-04-13 10:13:22

+0

不,通过共享SSL共享会话 – 2011-04-13 11:25:13

回答

1

这是不可靠的和不必要的。相反,加在你的代码检查,以找出$_SESSION超全局是否为空或(甚至更好)具有适当的键:

<?php 
if(!isset($_SESSION['foo'])){ 
    // User is not fooed yet 
    $_SESSION['foo'] = 33; 
} 
find_records_by_foo($_SESSION['foo']); 

更新:不管你想与cookies和会话ID做什么,我的答案仍然适用。完成cookie检查后,使用isset()进行会话测试。