首页 > 解决方案 > iPhone safari 上的 PHP setcookie() 失败(有时)

问题描述

我对 setcookie() 有一个奇怪的问题。它可以工作并且正在生产中,但有时它会失败并且仅在 iPhone 上。如果我们清除所有 cookie,一切都会恢复正常。这不是所有 iPhone 的问题,我无法重现该问题。但是偶尔,客户会报告问题。据我所知,它仅适用于 iPhone 上的 safari。

有谁知道如何解决这个问题或可以引导我走向正确的方向?

public function __construct()
{
    $this->removeUserCookie();
}

private function setUserCookie($user): void
{
    $encoded_user = base64_encode(json_encode($user));
    $expires = time() + 60 * 60 * 24;
    setcookie(self::COOKIE_NAME, $encoded_user, $expires, '/', $this->getDomain());
}

public function removeUserCookie(): void
{
    if (isset($_COOKIE[self::COOKIE_NAME])) {
        unset($_COOKIE[self::COOKIE_NAME]);
    }
    setcookie(self::COOKIE_NAME, null, time() - 3600, '/', $this->getDomain());
}

private function getDomain(): string
{
    //return $_SERVER['HTTP_HOST'];
    $exploded_domain = explode('.', $_SERVER['HTTP_HOST']);
    $domain = implode('.', array_slice($exploded_domain, -2, 2));
    return $domain;
}

任何帮助深表感谢。

标签: phpcookiessafari

解决方案


推荐阅读