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,所以session变量没有保存。此外,在导航器中打开 cookies 列表时,我没有看到任何内容。为什么不保存会话的cookie?我验证并确保 SessionCookie
class 的 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
。
这是我的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,所以session变量没有保存。此外,在导航器中打开 cookies 列表时,我没有看到任何内容。为什么不保存会话的cookie?我验证并确保 SessionCookie
class 的 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
。