PHP:子域名下SESSION丢失

3
我正在尝试在多个子域名上使用会话数据:
  • www.example.com
  • my.example.com
  • test.example.com
  • whateversub.example.com
当我尝试从www.example.com使用会话数据到任何子域名时,所有的会话信息都无法访问。
  • 我没有使用cookies,只是会话。
  • 我有GoDaddy作为web主机。
  • GoDaddy允许上传自定义php5.ini文件。
由于我是PHP初学者,请简化您的回答,以便我能理解它。
这里是一个例子: 文件1:
<?php
// FILE 1: www.example.com/index.php

session_start();
$_SESSION['status'] = "ON";
header( 'Location: http://sub.mywebsite/' );
?>

文件2:

<?php
// FILE 2: sub.example.com/index.php

session_start();
echo "Your session status is: ";
echo $_SESSION['status'];
?>

抱歉!我确实有session_start。 - Omar
请仅查看我的第三行,跳过我答案中的session_start()部分。 - genesis
由于我是初学者,我不理解你的意思以及如何使用那段代码。 - Omar
将 my-domain.com 更改为您的域名(请勿删除句子末尾的那个点!),然后将其放置在 session_start(); 之前。 - genesis
我需要将其放在所有文件上,包括www.mywebsite上的文件还是只放在子域文件上? - Omar
https://dev59.com/r3NA5IYBdhLWcg3wKam3 - Omar
3个回答

7
请确保您在子域上设置了SESSIONID cookie。
ini_set('session.cookie_domain', '.my-domain.com');

1
@Omar:你认为我白嫖了两个赞吗?好的,复制你刚才粘贴到脚本中的那一行,然后再试一遍。顺便说一下,确保你先销毁会话并重新创建它。 - genesis
@Omar:只在子域名上吗?只需将“.my-domain.com”更改为类似“subdomain.mydomain.com”的内容即可。 - genesis
我该如何在另一个子域上设置SESSIONID cookie? - Omar

7
我通过这个链接解决了我的问题:PHP跨子域会话 PHP:
<?php
session_set_cookie_params(0, '/', '.mywebsite.com');
session_start();
//Code...
?>

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接