【发布时间】:2015-03-08 06:33:25
【问题描述】:
这是我的 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,但是在设置任何变量之前声明
session_start();可能是一个简单的情况。 -
你能确定调用方法调用 SessionCookie 和 CustomMiddleware 的顺序吗?查看了源代码github.com/codeguy/Slim/blob/master/Slim/Middleware/…,似乎没有设置cookie $_SESSION 被重置。
-
我找到了这一行:
ini_set('session.use_cookies', 0);。看起来cookies的使用被禁用了。 CustomMiddleware 在 SessionCookie 之前调用,但即使我在之后调用它,刷新后会话也不会持续 -
你解决了吗?我也有同样的问题。
标签: php session-cookies middleware slim