【问题标题】:php session is not working on subdomainsphp会话不适用于子域
【发布时间】:2015-12-07 05:17:05
【问题描述】:

我的会话代码以前可以工作,但现在突然不能工作了,而且,如果我从www.domain.com 调用set_session.php,然后我从domain.com 调用test_session.php,它不会产生任何结果。没有设置会话变量,只有当我从www.domain.com 调用test_session.php 时才会产生输出。当我从domain.comwww.domain.com 调用set_session,从其他子域(即sub.domain.com)调用test_session.php 时,会话也不会出现。尽管我已经使用了session_set_cookie_params(0, '/', '.domain.com')。这样做的正确方法是什么?

set_session.php

<?php
session_name('mysession');
session_set_cookie_params(0, '/', '.domain.com');
session_start();
$_SESSION['test'] = 'Session is set';
echo $_SESSION['test'];
?>

test_session.php

<?php
session_name('mysession');
session_set_cookie_params(0, '/', '.domain.com');
session_start();
echo $_SESSION['test'];
?>

我们非常欢迎和感谢所有回答和建议。提前谢谢你。

【问题讨论】:

    标签: php session cookies session-cookies


    【解决方案1】:

    0 的 cookie 生命周期可能有点太短了:

    session_set_cookie_params(30*60, '/', '.domain.com');
    

    编辑

    另外,我会检查一个名为mysession的cookie是否真的设置在浏览器中。

    此外,请检查您的日志:原因之一可能是会话存储(通常是基于文件的)不可写或磁盘已满,即

    【讨论】:

    • php.net/manual/en/… 从我这里读到的,如果你设置为 0,值 0 的意思是“直到浏览器关闭”。默认为 0。
    • @Charas 是的,对,但我也有过几次 5.3 会话处理的“奇怪遭遇”:/
    猜你喜欢
    • 2012-06-20
    • 1970-01-01
    • 2017-07-30
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2017-03-01
    相关资源
    最近更新 更多