我正在做一个小的服务器端项目,我需要使用存储在我的数据库中的会话ID来检查是否设置了会话变量。
我遇到的问题是,在检查变量是否设置后,我不想破坏会话。所以我需要一种方法来检查变量而不必启动会话,或者在会话启动时找到更改为不同会话ID的方法, 或者将会话复制到我可以销毁的其他会话。
这就是我所拥有的:
while(true) {
$stmt=$db->prepare("SELECT sessionid FROM sessions");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC) {
session_id($row['sessionid']);
session_start();
if(!isset($_SESSION['value'])) {
$stmt=$db->prepare("DELETE FROM sessions WHERE sessionid=:sessionid");
$stmt->bindValue(':sessionid',$row['sessionid'],PDO::PARAM_STR);
$stmt->execute();
}
session_destroy();
}
sleep(5);
}
答案 0 :(得分:0)
完成它大声笑......
while(true) {
$stmt=$db->prepare("SELECT sessionid FROM sessions");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC) {
session_id($row['sessionid']);
session_start();
session_regenerate_id(false);
$newsessionid=session_id();
session_write_close();
session_id($newsessionid);
session_start();
if(!isset($_SESSION['value'])) {
$stmt=$db->prepare("DELETE FROM sessions WHERE sessionid=:sessionid");
$stmt->bindValue(':sessionid',$row['sessionid'],PDO::PARAM_STR);
$stmt->execute();
}
session_destroy();
}
sleep(5);
}
参考:http://uk1.php.net/manual/en/function.session-regenerate-id.php