在Silex / Symfony中同时删除和设置cookie

时间:2015-03-23 21:13:22

标签: php symfony cookies silex

是否可以删除cookie并在一个请求中设置一个名称相同但值不同的cookie?这是我到目前为止的代码,它本地适用于我,但不适用于实时服务器。 cookie是从查询字符串设置的,有时cookie可以在外部设置(不是HttpOnly),但在实时服务器上,我将获得一个重定向循环,并且两个cookie都将被设置。

if ($request->query->has('cookie')) {
    $setCookie = $request->query->get('cookie');
    $route = $request->getRequestUri();
    $host = $request->getHost();

    if (!$request->cookies->has('reference') || $request->cookies->get('reference') !== $setCookie){
        $exp = new \DateTime();
        $exp->modify('+3 months'); // cookie has three months to live
        $r = new RedirectResponse($route);
        $r->headers->clearCookie('reference');
        $r->headers->setCookie(new Cookie('reference', $setCookie, $exp, '/', $host));
        return $r;
    }
}

因此,如果用户访问www。*******。com /?cookie = newvalue,我需要任何当前名为'reference'的cookie和一个设置了值为'newvalue'的新cookie。

0 个答案:

没有答案