我的用户在Internet Explorer中登录我的站点时遇到问题(可能是较旧的10和11)。PHP,会话Cookie和Internet Explorer
通过一些试验和错误,我发现IE设置了两次cookie。在F12开发人员工具栏中输入document.cookie
即可看到。
研究表明,这可能是由于有一个“www”。版本和非www版本的cookie。我不知道如何验证这一点,但我希望我可以通过调用session_set_cookie_params
明确设置域来抵制该问题。
因此我有:
$host = $_SERVER['HTTP_HOST'];
if(substr($host, 0, 4) === 'www.') $host = substr($host, 4);
$colon = strrpos($host, ':');
if($colon !== false) $host = substr($host, 0, $colon);
session_set_cookie_params(0, '/', $host);
session_start();
我剥口太(本地主机上开发:81),因为这是document.domain
回报。
主机现在只是localhost
(还没有在网站上试过),我根本无法在IE中登录。在Firefox中运行良好,不是可以在Chrome中运行。
如何让PHP或浏览器在www子域和网站的子域版本之间共享会话cookie?
我想在那里每个相关的问题抛出一个点:
$host = $_SERVER['HTTP_HOST'];
if(substr($host, 0, 4) === 'www.') $host = substr($host, 4);
$colon = strrpos($host, ':');
if($colon !== false) $host = substr($host, 0, $colon);
session_set_cookie_params(0, '/', '.'.$host);
session_start();
我甩session_get_cookie_params()
,以确认它已正确设置。这似乎也不能解决我的问题。会话不断重置。
你对我所见过的最棒的部分 –
@NullPoiиteя:谢谢。花了几个月的时间来绘画。 PS:蝙蝠侠宝宝也很可爱。 – mpen