簡體   English   中英

Slim SessionCookie中間件無法正常工作

[英]Slim SessionCookie middleware not working

這是我的index.php

<?php
$app = new \Slim\Slim(
    array(
        'templates.path' => dirname(__FILE__).'/templates'
    )
);

// Add session cookie middle-ware. Shouldn't this create a cookie?
$app->add(new \Slim\Middleware\SessionCookie());

// Add a custom middle-ware
$app->add(new \CustomMiddleware());

$app->get(
    '/', 
    function () use ($app) {
        $app->render('Home.php');
    }
);

$app->run();
?>

這是我的自定義中間件:

<?php
class CustomMiddleware extends \Slim\Middleware {
    public function call() {
        // This session variable should be saved
        $_SESSION['test'] = 'Hello!';

        $this->next->call();
    }
}
?>

這是我的模板( Home.php

<?php
var_dump($_SESSION['test']);
?>

將輸出NULL,因此不保存會話變量。 此外,當在導航器中打開cookie列表時,我沒有看到任何。 為什么會話的cookie沒有保存? 我驗證並確保執行SessionCookie類的call()函數。

如何在Slim\\Middleware\\SessionCookie之前首先添加CustomMiddleware

像這樣的東西:

require 'Slim/Slim.php';

Slim\Slim::registerAutoloader();

class CustomMiddleware extends Slim\Middleware
{
    public function call() {
        // This session variable should be saved
        $_SESSION['test'] = 'Hello!';

        $this->next->call();
    }
}

$app = new Slim\Slim();

$app->add(new CustomMiddleware());

$app->add(new Slim\Middleware\SessionCookie());

// GET route
$app->get('/', function () use ($app)
{
    $app->render('home.php');
});

$app->run();

和你的home.php模板文件:

<?php echo($_SESSION['test']); ?>

對我來說,它完美無瑕。 但是如果我在CustomMiddleware之前添加Slim\\Middleware\\SessionCookie$_SESSION['test']的輸出仍為NULL

這就是中間件的工作原理:

中間件

因此,您的響應將永遠不會獲得任何$_SESSION值,因為您在調用SessionCookie之前設置了$_SESSION

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM