Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用samesite设置会话Cookie_Php_Cookies - Fatal编程技术网

PHP使用samesite设置会话Cookie

PHP使用samesite设置会话Cookie,php,cookies,Php,Cookies,我目前有一个PHP脚本,它将sametime cookie设置为: session_set_cookie_params($cookie_timeout, $cookieParams["path"], $cookie_domain, $session_secure, $cookie_httponly); 我想通过添加额外的参数($cookie\u samesite=“Lax”)将samesite=“Lax”添加到上述语句中 语句的新输出如下所示 1800,/,“.vasports.com

我目前有一个PHP脚本,它将sametime cookie设置为:

    session_set_cookie_params($cookie_timeout, $cookieParams["path"], $cookie_domain, $session_secure, $cookie_httponly);
我想通过添加额外的参数($cookie\u samesite=“Lax”)将samesite=“Lax”添加到上述语句中

语句的新输出如下所示

1800,/,“.vasports.com.au”,1,1,“Lax”

这是samesite参数的正确格式吗

注意:我还没有安装PHP7.3。因此我不能正确地测试这个。 我在“session\u set\u cookie\u params”中提到了PHPDoco。 我也查过了


经过进一步研究

  • 首先获取当前参数
  • 然后根据需要更改参数,在本例中[samesite]=“Lax”
  • 把饼干放好
  • 检查您的“set cookie:”标题,您现在应该会在末尾看到文本“SameSite=Lax”,如下所示

        set-cookie: ssid=b930bc608a911781f459a4f46b2c513d; expires=Wed, 16-Oct-2019 10:48:49 GMT; Max-Age=1800; path=/; secure; HttpOnly; SameSite=Lax
    

    从PHP7.3开始,您可以将一个选项数组抛出到支持SameSite的set_cookie_参数中

    session_set_cookie_params([
        'lifetime' => $cookie_timeout,
        'path' => '/',
        'domain' => $cookie_domain,
        'secure' => $session_secure,
        'httponly' => $cookie_httponly,
        'samesite' => 'Lax'
    ]);
    
    在PHP$cookie\u超时时, '路径'=>'/;SameSite=none',/$cookie\u域, “安全”=>$session\u安全, “httponly”=>$cookie\u httponly, “samesite”=>“Lax” ]);
    改编自SilverShadow answer,但修复了php的语法,他说他没有7.3版本,所以他在之前的另一个版本中寻找答案Version@nbk不,他说他无法测试它,因为7.3还没有安装。在7.3以下,不可能通过cookie参数,那么您需要更改标头。此外,这是我在搜索后登陆的页面,因此可能对其他人也是如此,首先获取cookie参数,然后再次设置它们是额外的开销。我认为这是7.3+atm的最佳方法。这是我需要的答案。但我最终还是升级到了PHP7.3,并对其进行了测试,以确认其工作正常。-感谢您的回复。同事们,关于PHP,我在PHP5.6上,为了在iFrame中设置cookie,我使用以下代码让我的页面在Chrome84上再次工作:session_set_cookie_params(3600*24,“/;SameSite=None”,$_SERVER['HTTP_HOST',true);将安全设置为“true”很重要。(最好关闭浏览器并清除缓存进行测试)这应该是可以接受的答案,因为PHP<7.3不支持带有参数数组的替代签名。
        set-cookie: ssid=b930bc608a911781f459a4f46b2c513d; expires=Wed, 16-Oct-2019 10:48:49 GMT; Max-Age=1800; path=/; secure; HttpOnly; SameSite=Lax
    
    session_set_cookie_params([
        'lifetime' => $cookie_timeout,
        'path' => '/',
        'domain' => $cookie_domain,
        'secure' => $session_secure,
        'httponly' => $cookie_httponly,
        'samesite' => 'Lax'
    ]);
    
    session_set_cookie_params([
        'lifetime' => $cookie_timeout,
        'path' => '/;SameSite=none', // <-- this way!
        'domain' => $cookie_domain,
        'secure' => $session_secure,
        'httponly' => $cookie_httponly,
        'samesite' => 'Lax'
    ]);