Php 使用id检查会话数据,并在循环中更改id
我正在做一个小的服务器端项目,我需要使用存储在数据库中的会话id检查会话变量是否已设置 我遇到的问题是,我不想在检查变量是否设置后破坏会话。所以我需要一种方法来检查变量而不必启动会话,或者在会话启动时找到一种方法来更改为不同的会话id, 或者将会话复制到我可以销毁的其他会话 以下是我所拥有的:Php 使用id检查会话数据,并在循环中更改id,php,mysql,session,Php,Mysql,Session,我正在做一个小的服务器端项目,我需要使用存储在数据库中的会话id检查会话变量是否已设置 我遇到的问题是,我不想在检查变量是否设置后破坏会话。所以我需要一种方法来检查变量而不必启动会话,或者在会话启动时找到一种方法来更改为不同的会话id, 或者将会话复制到我可以销毁的其他会话 以下是我所拥有的: while(true) { $stmt=$db->prepare("SELECT sessionid FROM sessions"); $stmt->execute();
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);
}
完成了,哈哈
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);
}
参考: