Php session_set_cookie_params()指向错误的域

Php session_set_cookie_params()指向错误的域,php,session,Php,Session,当我想设置会话cookie时,出现了一些非常奇怪的错误 如果我使用以下规则: session_set_cookie_params(0, '/', $_SERVER['HTTP_HOST'], false, true); //$_SERVER['HTTP_HOST'] resolves into "jscripting.nl" 它总是在url前面加一个“.”,这样我的会话id就可以在我的所有子域上访问,这是一个问题,因为我在我的一个子域上开发,会话id可能相互干扰 我的服务器设置是否有问题?$\

当我想设置会话cookie时,出现了一些非常奇怪的错误

如果我使用以下规则:

session_set_cookie_params(0, '/', $_SERVER['HTTP_HOST'], false, true);
//$_SERVER['HTTP_HOST'] resolves into "jscripting.nl"
它总是在url前面加一个“.”,这样我的会话id就可以在我的所有子域上访问,这是一个问题,因为我在我的一个子域上开发,会话id可能相互干扰


我的服务器设置是否有问题?

$\u服务器['HTTP\u主机]]与服务器设置无关,它来自客户端发出的请求的主机头

如果要使用在服务器端配置的服务器名称,通常的方法是使用
$\u server['server\u name']
,尽管在这种情况下也受主机头的影响

编辑:显然,域的任何值都将是默认的附加一个点,因此它将包括任何子域,并且使其仅应用于当前域的唯一有效方法是不设置参数或使用原始标头设置cookie。请参阅有关此主题的更多信息


通过在域名参数上设置
null
,您可以使cookie httponly在您的案例中仍然有效。

取决于您的情况。你的$_服务器['HTTP_HOST']是什么?显然只是没有设置域就解决了我的问题,尽管我真的不想求助于此,因为我现在无法创建会话cookie httponly。如果有人有更好的解决方案,我会保留这个问题。我知道这个函数不应该在url上添加点,这就是为什么我称之为奇怪的错误。即使我只是输入一个字符串,它也会附加一个点。…。@J.Peters实际上我错了,这就是函数编码的目的。请参阅我添加的链接中的讨论-基本上,使其特定于域的方法是省略参数或使用原始标头调用来设置cookie。如果我要用一句话总结您的答案,我会说:使用
session\u set\u cookie\u参数(0',/,null,false,true)
(第3个参数中的null替换了原始示例中手动设置的主机名)如果我们是学究,OP没有询问如何修复代码,但是他是做错了还是服务器设置有问题,所以我试图回答这个问题。但是,是的,为了使它工作,这是需要的。@eis好吧,我正在寻找一个解决方案,但我不确定这是我的错还是函数的错。但既然你的链接里有答案,我还是接受吧。