我是Slim框架的新手。我正在尝试使用中间件功能进行一些身份验证。但是,虽然我可以在一条路线上设置cookie,但它会在页面刷新时消失。
$app->get('/demo', function () use ($app) {
try {
$app->setCookie('uid', 'blah', '2 Days');
print_r($app);
} catch (Exception $e) {
$app->response()->status(400);
$app->response()->header('X-Status-Reason', $e->getMessage());
}
});
$app->run();
执行print_r表示已设置cookie
[cookies] => Slim\Http\Cookies Object ( [defaults:protected] => Array ( [value] => [domain] => [path] => [expires] => [secure] => [httponly] => ) [data:protected] => Array ( [uid] => Array ( [value] => blah [domain] => [path] => / [expires] => 2 Days [secure] => [httponly] => ) [key] => Array ( [value] => blah [domain] => [path] => / [expires] => 2 Days [secure] => [httponly] => ) ) ) [body:protected] => [length:protected] => 0 ) )
或者至少setCookie正在提升价值。 但是,如果我然后去我的其他路线
$app->get('/attractions', function () use ($app) {
try {
print_r($app);
$data = R::find('attractions');
$app->render('attractions.php', array(
'page_title' => "Attractions",
'data' => $data
)
);
} catch (Exception $e) {
$app->response()->status(400);
$app->response()->header('X-Status-Reason', $e->getMessage());
}
});
然后饼干不在那里。同样在我的firebug控制台的日志中,没有显示我设置的cookie。
知道问题可能是什么?我在网上发现了几个帖子,如http://help.slimframework.com/discussions/problems/652-cant-seem-to-get-php-cookies-working
但到目前为止我无法弄清楚这个问题。我正在运行MAMP,我已经为该域设置了一个虚拟主机。
启用了Mcrypt php扩展程序。
有什么想法吗?
答案 0 :(得分:0)
我在使用带有Cookie域的Google Chrome时遇到了问题(对于' localhost')。我删除了cookie中的域名,问题已经消失。
答案 1 :(得分:-1)
我将所有代码都删除到准系统中,看起来好像正在设置标题。也可能是因为我在Slip app配置中设置了域名。我还在/ etc / hosts /和vhost中添加了一个.com到我的域的末尾,以防它与Chrome在localhost上处理cookie有关。