因此,我正在努力解决如何在Yii2中管理cookie的概念。我已经看到一些资源说通过以下方式设置cookie:
revealViewController!.rearViewRevealWidth=self.view.frame.size.width-100 //customize the width/space
这很好,但是在使用以下方法删除cookie时
Yii::$app->response->cookies->add(new Cookie([
'name' => 'some_cookie_name',
'value' => 'some cookie value',
'domain' => ( YII_ENV_DEV )? '.dev.example.co.uk' : '',
'expire' => time() + (60*60*24*30) // Expire in 30 days time
]));
它不起作用。 Cookie仍保留在浏览器中。
要确认,删除cookie后会有重定向。
我正在关注的资源是:http://www.yiiframework.com/doc-2.0/guide-runtime-sessions-cookies.html#cookies
答案 0 :(得分:1)
请试试这个
创建cookie
$cookie = new Cookie( [
'name' => 'some_cookie_name',
'value' => some cookie value,
'expire' => time() + 86400 * 365,
] );
\Yii::$app->getResponse()->getCookies()->add( $cookie );
删除Cookie
$cookies = Yii::$app->response->cookies;
unset($cookies['some_cookie_name']);
or
$cookies->remove( 'some_cookie_name' );
答案 1 :(得分:1)
尝试使用此代码删除Cookie:
Yii::$app->response->cookies->remove(new Cookie([
'name' => 'some_cookie_name',
'domain' => ( YII_ENV_DEV )? '.dev.example.co.uk' : '',
]));
作为https://stackoverflow.com/a/37573913/1828764。
remove()
方法可以提供yii\web\Cookie | string
。
如果您在设置Cookie时未定义domain
。默认使用当前域名(前缀中没有.
)。所以当你想删除它。只是你可以用这个:
Yii::$app->response->cookies->remove('some_cookie_name');
但是如果在设置cookie时定义domain
,那么你应该通过传递一个对象而不是一个字符串来在remove方法中定义它,如下所示:
Yii::$app->response->cookies->remove(new Cookie([
'name' => 'some_cookie_name',
'domain' => 'your-domain.com',
]));
答案 2 :(得分:0)
以下效果最佳:
$cookies = Yii::$app->response->cookies;
$cookies->remove('username');
unset($cookies['username']);
参考 YII framework2.o中的Cookie处理在以下链接中找到 http://www.bsourcecode.com/yiiframework2/cookies-handling-in-yii-framework2-0/
答案 3 :(得分:0)
这对我有用,如果您想从子域中删除Cookie,则需要指定该域,这应该删除该Cookie
unset($_COOKIE['cookie_name']);
setcookie('cookie_name', null, -1, '/','your_domain.com');