PHP的setcookie
函数如下所示:
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
如您所见,domain
没有标准值,但以下参数(httponly
和secure
)可以。
我希望最后一个参数都设置为true,但是没有指定要绑定cookie的域。这甚至可能吗?遗憾的是,PHP不允许这样的事情:
setcookie('name', 'value', time()+60, '/', $secure=true, $httponly=true);
另见this SO question with a similar problem。显然,我无法更改setcookie
功能。
修改
将domain
参数设置为""
或null
不起作用。
答案 0 :(得分:0)
在我自己的开发服务器(PHP 7.3.4)上进行测试,并为域提交一个空字符串。提交 null 也可以,但是设置了 declare(strict_types = 1)后,PHP会生成一条消息,提示有关参数类型错误,需要字符串,提供了NULL。
例如:
setcookie('myCookie', 'myCookieData', 0, '/, '', true, true);
但不是
setcookie('myCookie', 'myCookieData', 0, '/, null, true, true);
但是, setcookie()允许将cookie选项作为数组提供。
例如:
setcookie('myCookie', 'myCookieData',['expires'=>0, 'path'=>'/', 'domain'=>'example.com', 'httponly'=>true, 'secure'=>true];
这允许将域从数组中省略,因此不会将其发送给客户端:
setcookie('myCookie', 'myCookieData',['expires'=>0, 'path'=>'/', 'httponly'=>true, 'secure'=>true];