php session_set_cookie_params()两个域

时间:2019-04-24 10:14:07

标签: php

我只需要为两个域设置PHPSESSID库:

  • www.domain.tld
  • sub.domain.tld

其他子域不应共享相同的PHPSESSID。

我可以使用session_set_cookies_param(),但据我所知,只能将其设置为一个域或所有子域。

但是在我的情况下,子域anothersub.domain.tld不应具有此PHPSESSID。

我想要这个,因为我们在子域上有图像,并且为所有子域设置PHPSESSID会导致浏览器发送带有请求的PHPSESSID cookie。对于静态资源,这存在一些性能问题,建议使用无cookie域

2 个答案:

答案 0 :(得分:1)

这不能通过这种方式完成,这与PHP无关。 Cookie通常是这样工作的。只能设置一个域(或前面带有点的域)。

您必须使用其他域来托管图像。

答案 1 :(得分:0)

虽然已经解释过了,但由于cookie是“语法”,因此从技术上讲是不可能的,我认为,如果您自己设置第二个cookie,您应该可以解决该问题。

  • 使用session_set_cookies_param使其仅设置www.domain.tld的cookie。

  • session_start之后添加您自己的代码,这将再次设置“相同” cookie,仅适用于sub.domain.tld

session_namesession_id帮助您确定必要的名称和值;如果需要的话,也可以根据需要使用session_get_cookie_params来匹配其他参数(例如寿命和路径,如果后者在给定设置中有意义的话)。


编辑:但是请记住,如果会话ID可能在session_start之后在您应用中的任何其他位置发生变化,例如,如果session_regenerate_id用于任何地方,那么您当然必须进行更新还有您的第二个Cookie。