我目前有一个 PHP 脚本,用于设置相同时间的 cookie,如下所示:
session_set_cookie_params($cookie_timeout, $cookieParams["path"], $cookie_domain, $session_secure, $cookie_httponly);
Run Code Online (Sandbox Code Playgroud)
我想通过添加一个额外的参数 where ($cookie_samesite="Lax") 将 samesite="Lax" 添加到上述语句中
session_set_cookie_params($cookie_timeout, $cookieParams["path"], $cookie_domain, $session_secure, $cookie_httponly, $cookie_samesite);
Run Code Online (Sandbox Code Playgroud)
语句的新输出看起来像
1800, /, ".vasports.com.au", 1, 1, "松懈"
这是相同站点参数的正确格式吗?
注意:我还没有安装 PHP7.3。因此我无法正确测试。我已经将 PHP doco 称为“session_set_cookie_params”。我也检查过
小智 25
从 PHP 7.3 开始,您可以将选项数组放入支持 SameSite 的 set_cookie_params 中。
session_set_cookie_params([
'lifetime' => $cookie_timeout,
'path' => '/',
'domain' => $cookie_domain,
'secure' => $session_secure,
'httponly' => $cookie_httponly,
'samesite' => 'Lax'
]);
Run Code Online (Sandbox Code Playgroud)
在 PHP <7.3 上,您可以添加 SameSite 参数,将其添加到“路径”参数中。
session_set_cookie_params([
'lifetime' => $cookie_timeout,
'path' => '/;SameSite=none', // <-- this way!
'domain' => $cookie_domain,
'secure' => $session_secure,
'httponly' => $cookie_httponly,
'samesite' => 'Lax'
]);
Run Code Online (Sandbox Code Playgroud)
改编自 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
));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14526 次 |
| 最近记录: |