我目前有一个PHP脚本,可按以下方式设置Sametime Cookie:
session_set_cookie_params($cookie_timeout, $cookieParams["path"], $cookie_domain, $session_secure, $cookie_httponly);
我想通过在其中添加一个额外的参数($ cookie_samesite =“ Lax”)
来向上述语句添加samesite =“ Lax” session_set_cookie_params($cookie_timeout, $cookieParams["path"], $cookie_domain, $session_secure, $cookie_httponly, $cookie_samesite);
语句的新输出看起来像
1800,/,“ .vasports.com.au”,1,1,“松懈”
这是samesite参数的正确格式吗?
注意:我尚未安装PHP7.3。因此,我无法正确测试。 我已经将PHP doco称为“ session_set_cookie_params”。 我也检查了
答案 0 :(得分:2)
从PHP 7.3开始,您可以将一个options数组放入支持SameSite的set_cookie_params中。
session_set_cookie_params([
'lifetime' => $cookie_timeout,
'path' => '/',
'domain' => $cookie_domain,
'secure' => $session_secure,
'httponly' => $cookie_httponly,
'samesite' => 'Lax'
]);
答案 1 :(得分:0)
经过进一步研究...
$cookieParams = session_get_cookie_params();
$cookieParams[samesite] = "Lax";
session_set_cookie_params($cookieParams);
检查您的“ 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
答案 2 :(得分:0)
改编自SilverShadow答案,但修复了php <7.3的语法,
由于session_set_cookie_params()
直到7.3才能将数组作为单个参数,因此需要设置每个参数。
并自动检测php版本的正确选项,因此即使以后升级到7.3,也可以使用它:
// set as your own needs:
$maxlifetime = 0;
$path = '/';
$domain = '';
$secure = false;
$httponly = false;
$samesite = 'lax'; // here is what we need
if(PHP_VERSION_ID < 70300) {
session_set_cookie_params($maxlifetime, $path.'; samesite='.$samesite, $domain, $secure, $httponly);
} else {
// note I use `array()` instead of `[]` to allow support of php <5.4
session_set_cookie_params(array(
'lifetime' => $maxlifetime,
'path' => $path,
'domain' => $domain,
'secure' => $secure,
'httponly' => $httponly,
'samesite' => $samesite
));
}