php会话未保存变量

php会话未保存变量,php,session,request,slim,Php,Session,Request,Slim,我试图存储三个请求,然后在我的大学项目中比较它们。代码如下: $app->map(['GET'],'/dados/{id}/{corrente}/{tensao}/{potencia}', function (Request $request, Response $response, array $args) { if(!isset($_SESSION)) { session_start(); $_SESSION['req1'] = FALSE; $_SESSIO

我试图存储三个请求,然后在我的大学项目中比较它们。代码如下:

$app->map(['GET'],'/dados/{id}/{corrente}/{tensao}/{potencia}', function (Request $request, Response $response, array $args) {
if(!isset($_SESSION)) { 
    session_start();
    $_SESSION['req1'] = FALSE;
    $_SESSION['req2'] = FALSE;
    $_SESSION['req3'] = FALSE;
} 

require_once("db.php");

$req = array();

$id = $request->getAttribute('id');
$c = $request->getAttribute('corrente');
$v = $request->getAttribute('tensao');
$p = $request->getAttribute('potencia');

echo "id: $id, corrente: $c, tensão: $v, potência: $p \n";

array_push($req,$id,$c,$v,$p);

$query = $pdo->prepare('INSERT INTO teste_sustek VALUES (?,?,?,?)');
$query->execute([$id,$c,$v,$p]);

if (empty($_SESSION["req1"])){
    //first request
    $_SESSION["req1"] = $req;
    echo "first request \n";
    echo var_dump($_SESSION["req1"]);
} else if (empty($_SESSION["req2"])){
    //second request
    $_SESSION["req2"] = $req;
    echo "second request";
} else if (empty($_SESSION["req3"])){
    //compare them here
    $_SESSION["req3"] = $req;
    session_destroy();

    echo "third and last request";
} });
然而,当我通过Postman测试它时,我总是得到以下输出,就好像我的会话没有存储我的变量一样:

id:1,corrente:2,tensão:3,potência:4

第一个请求

数组4{[0]=>string11[1]=>string12[2]=>string13[3]=>


string1 4}

呼叫会话\u开始;在您的index.php中,编辑:我正在使用以下路径:您能解释一下为什么在路径中启动会话不起作用吗?更重要的是,您需要在测试$会话之前调用session\u start。但是,一旦您有多个操作,在公共位置启动会话就更容易了。@Tesserato当您定义放置了会话启动的路由回调时,您只是在定义它们,直到路由器决定应该执行哪个路由回调,它们才真正被执行。因此,执行的顺序可能与眼睛看到的略有不同。这意味着在代码中,在调用sessession\u start之前,您正在访问$\u会话。