Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用id检查会话数据,并在循环中更改id_Php_Mysql_Session - Fatal编程技术网

Php 使用id检查会话数据,并在循环中更改id

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

我正在做一个小的服务器端项目,我需要使用存储在数据库中的会话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);
}
完成了,哈哈

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);
}
参考: