3
這是我的index.php修身SessionCookie中間件不工作
<?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();'的簡單情況。 – Alex 2015-01-09 20:53:00
你可以確定調用方法調用SessionCookie vs CustomMiddleware的順序嗎?看着源代碼https://github.com/codeguy/Slim/blob/master/Slim/Middleware/SessionCookie.php#L132,似乎如果沒有設置cookie $ _SESSION被重置。 – litechip 2015-01-09 21:19:54
我發現這一行:'ini_set('session.use_cookies',0);'。看起來像cookies的使用被禁用。 CustomMiddleware在SessionCookie之前調用,但即使我之後調用它,在我刷新 – ali 2015-01-09 21:40:03