我是一名有用的助手,能够翻译文本。
在控制器中获取cookie;
我有一个使用 PhalconPHP 编写的应用程序,并使用 phalcon 命令行工具构建。我想为用户实现“记住我”选项。但是,如果我理解正确,PhalconPHP 创建带有唯一会话 ID 和加密(我喜欢这个加密部分)的 cookie。因此,每当用户会话结束时,我就无法访问该 cookie。我该怎么解决呢?
实际上,我并没有销毁会话,只是在设置了会话和 cookie 后使用 cmd + Q 退出了浏览器。我已经尝试过带加密和不带加密的方式。
更明确地说:我没有收到任何错误信息。只是在关闭浏览器并重新打开后找不到 cookie。我得到了“未找到 cookie”的输出。
以下是代码示例,展示了我如何实现此功能:
我的 services.php
/**
* Start the session the first time some component request the session service
*/
$di->setShared('session', function () {
$session = new SessionAdapter();
//$session->setId('crowgadgets');
$session->start();
return $session;
});
/**
* Set crypt for cookie encryption
*/
$di->set('crypt', function () {
$crypt = new Crypt();
$crypt->setKey('-#1+%&/k5l6&olr$'); // Use your own key!
return $crypt;
});
/**
* Set cookie universal
*/
$di->setShared('cookies', function () {
$cookies = new Cookies();
//$cookies->useEncryption(true);
return $cookies;
});
在控制器中设置cookie;
$this->cookies->set('remember-me', $auth['id'], time() + 15 * 86400);
在控制器中获取cookie;
if ($this->cookies->has('remember-me')) {
$user_id = (string) $this->cookies->get('remember-me');
} else {
echo "no cookie found";
die();
}
$this->cookies->set('remember-me', $auth['id'], time() + 15 * 86400,"/");
- Mr. Engineer