【问题标题】:Php setcookie not working on Android phonesphp setcookie 在安卓手机上不起作用
【发布时间】:2022-01-20 17:27:39
【问题描述】:

我有以下代码,我通常在其中设置 cookie。在从 chrome 更新新的 SameSite 之前,它工作正常。它停止工作。如您所见,我添加了SameSite,但是在Android 上使用Chrome 的一些用户在登录时遇到问题。我做了一些日志记录来尝试找出用户无法登录的原因,看起来像一些使用旧版本android和chrome的用户无法登录,因为下面的代码显然对他们不起作用。

$expire = time() + 4 * 7 * 24 * 60 * 60; // Making the cookie live for 4 weeks
$en_string = "some string";
setcookie("username", $en_string, $expire, "/; SameSite=None; Secure");
setcookie("login_key", "1", $expire, "/; SameSite=None; Secure");

我在apacheCentOS 上运行Php5 5.6.30。任何帮助我应该改变什么。 apache_response_headers() 的回复是

Array
(
    [X-Powered-By] => PHP/5.6.32    
    [Accept] => application/json
    [Set-Cookie] => username=some string; expires=Fri, 13-Nov-2020 05:20:25 GMT; Max-Age=2419200; path=/;samesite=strict
    [Expires] => Thu, 19 Nov 1981 08:52:00 GMT
    [Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    [Pragma] => no-cache
)

【问题讨论】:

  • 这不是setcookie 应该被使用的方式。这实际输出的 HTTP 标头是什么?
  • 添加了对问题的回复。

标签: php apache cookies


【解决方案1】:

我在 php 5.7.4 中看到了同样的问题。我看到的一个区别是,当我可以使用 setcookie 的第一个例程时,它可以工作。然后我包含另一个文件并执行另一个 setcookie,但它失败了。如果我确保所有 cookie 都设置在同一个例程中,那是一种解决方法。但这显然是某个地方的一个相当深的错误。

【讨论】:

    【解决方案2】:

    请检查您是否在代码中使用了session_start() 和/或header() 函数以及在哪里使用。他们可能会调用有关 cookie 的问题。

    另请参阅以下答案:

    注意! Cookies 可能在您的移动浏览器中被禁用。 要启用它(例如在 Chrome 中):

    • 点击右上角的“更多”,然后点击“设置”。
    • 点击“网站设置”,然后点击“Cookie”。
    • 打开或关闭 Cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      相关资源
      最近更新 更多