我只需要为两个域设置PHPSESSID库:
www.domain.tld
sub.domain.tld
。 其他子域不应共享相同的PHPSESSID。
我可以使用session_set_cookies_param(),但据我所知,只能将其设置为一个域或所有子域。
但是在我的情况下,子域anothersub.domain.tld
不应具有此PHPSESSID。
我想要这个,因为我们在子域上有图像,并且为所有子域设置PHPSESSID会导致浏览器发送带有请求的PHPSESSID cookie。对于静态资源,这存在一些性能问题,建议使用无cookie域
答案 0 :(得分:1)
这不能通过这种方式完成,这与PHP无关。 Cookie通常是这样工作的。只能设置一个域(或前面带有点的域)。
您必须使用其他域来托管图像。
答案 1 :(得分:0)
虽然已经解释过了,但由于cookie是“语法”,因此从技术上讲是不可能的,我认为,如果您自己设置第二个cookie,您应该可以解决该问题。
使用session_set_cookies_param
使其仅设置www.domain.tld
的cookie。
在session_start
之后添加您自己的代码,这将再次设置“相同” cookie,仅适用于sub.domain.tld
。
session_name
和session_id
帮助您确定必要的名称和值;如果需要的话,也可以根据需要使用session_get_cookie_params
来匹配其他参数(例如寿命和路径,如果后者在给定设置中有意义的话)。
编辑:但是请记住,如果会话ID可能在session_start
之后在您应用中的任何其他位置发生变化,例如,如果session_regenerate_id
用于任何地方,那么您当然必须进行更新还有您的第二个Cookie。