[英]$_SESSION is not global when using `SessionCookie` in slim framework?
[英]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.