Yii2 Cookies未被删除

Yii2 Cookies未被删除,cookies,yii2,Cookies,Yii2,因此,我很难理解Yii2如何管理cookies的概念。我看到一些资源说通过以下方式设置cookies: Yii::$app->response->cookies->add(new Cookie([ 'name' => 'some_cookie_name', 'value' => 'some cookie value', 'domain' => ( YII_ENV_DEV )? '.dev.example.co.uk' : '',

因此,我很难理解Yii2如何管理cookies的概念。我看到一些资源说通过以下方式设置cookies:

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时:

Yii::$app->response->cookies->remove('some_cookie_name');
它不起作用。cookie仍保留在浏览器中

要确认,删除cookie后会有重定向

我正在查看的资源是:

请试试这个

创建cookie

 $cookie = new Cookie( [
                        'name'   => 'some_cookie_name',
                        'value'  => some cookie value,
                        'expire' => time() + 86400 * 365,
                    ] );
   \Yii::$app->getResponse()->getCookies()->add( $cookie );
$cookies = Yii::$app->response->cookies;
unset($cookies['some_cookie_name']);
or
$cookies->remove( 'some_cookie_name' );
移除cookie

 $cookie = new Cookie( [
                        'name'   => 'some_cookie_name',
                        'value'  => some cookie value,
                        'expire' => time() + 86400 * 365,
                    ] );
   \Yii::$app->getResponse()->getCookies()->add( $cookie );
$cookies = Yii::$app->response->cookies;
unset($cookies['some_cookie_name']);
or
$cookies->remove( 'some_cookie_name' );

请尝试删除cookie的以下代码:

Yii::$app->response->cookies->remove(new Cookie([
    'name' => 'some_cookie_name',
    'domain' => ( YII_ENV_DEV )? '.dev.example.co.uk' : '',
]));
作为

remove()
方法可以给出
yii\web\Cookie\string

如果在设置cookie时未定义
。默认使用当前域名(前缀中没有
)。所以当你想删除它的时候。你可以用这个:

Yii::$app->response->cookies->remove('some_cookie_name');
但是如果您在设置cookie时定义了
,那么您应该在remove方法中通过传递对象而不是字符串来定义它,如下所示:

Yii::$app->response->cookies->remove(new Cookie([
    'name' => 'some_cookie_name',
    'domain' => 'your-domain.com',
]));

以下方法效果最佳:

$cookies = Yii::$app->response->cookies;
$cookies->remove('username');
unset($cookies['username']);
引用自 在以下链接中找到YII framework2.o中的Cookies处理

这对我来说是可行的,如果你想从子域中删除cookie,你需要指定该域,该域应该删除该cookie

    unset($_COOKIE['cookie_name']);
    setcookie('cookie_name', null, -1, '/','your_domain.com');

请改进这个答案。为什么会有人点击这个链接?