首页 > 解决方案 > 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/

谢谢,托德

标签: phpsetcookie

解决方案


PHP 7.3 为setcookie()引入了另一种语法:

添加了支持选项数组的替代签名。此签名还支持 SameSite cookie 属性的设置。

这意味着您只提供前两个参数,就像在旧版本中一样,并将剩余的参数放在一个选项数组中:

setcookie('genone', 'genoneinfo', [
    'expires' => $cookie_expiration_time,
    'path' => '/',
    'domain' => '',
    'secure' => true,
    'httponly' => true,
    'samesite' =>'Lax',
]);

根据文档中的描述,旧版本中的参数名称成为数组键:

一个关联数组,它可能具有expirespathdomainsecurehttponlysamesite等任何键。这些值的含义与对同名参数的描述相同。


推荐阅读