php - php 7.3 中 setcookie() 的正确语法是什么?
问题描述
PHP 7.3 中 setcookie() 的正确语法是什么?我通常像这样使用 setcookie() :
setcookie("genone", "genoneinfo", "$cookie_expiration_time","/","",1,1);
那行得通,但是如何添加相同站点选项?我试过这样,但它失败并出现 php 错误:
setcookie("genone", "genoneinfo", "$cookie_expiration_time","/","",1,1,['samesite'=>'Lax']);
错误:PHP 警告:setcookie() 最多需要 7 个参数,第 73 行给出 zzz.com/index.php 的 8 个参数,引用者:https ://zzz.com/
谢谢,托德
解决方案
PHP 7.3 为setcookie()引入了另一种语法:
添加了支持选项数组的替代签名。此签名还支持 SameSite cookie 属性的设置。
这意味着您只提供前两个参数,就像在旧版本中一样,并将剩余的参数放在一个选项数组中:
setcookie('genone', 'genoneinfo', [
'expires' => $cookie_expiration_time,
'path' => '/',
'domain' => '',
'secure' => true,
'httponly' => true,
'samesite' =>'Lax',
]);
根据文档中的描述,旧版本中的参数名称成为数组键:
一个关联数组,它可能具有expires、path、domain、secure、httponly和samesite等任何键。这些值的含义与对同名参数的描述相同。
推荐阅读
- ansible - Ansible:从列表中删除空值并将其分配给新列表
- azure-devops - Azure DevOps 自托管 Windows 构建代理失败 git 远程克隆 (128)
- react-native - 如何修复此错误:java.lang.Double 无法在 react-native 中转换为 java.lang.String?
- windows - 跨平台检查正在使用的端口
- generics - 如何提供泛型函数作为类型参数?
- azure-devops - 在发布管道的第一阶段更改所有 Web.*.config 文件
- mysql - 使用 MYSQL 提取嵌套 JSON 对象中的数组
- java - TrustManagerFactory - 忽略证书检查
- java - 如何在可扩展的 RecyclerView 中获取所选项目
- for-loop - 如何使用 ggplot2 在 for 循环中从数据框生成绘图标题?