使用PHP在域之间共享会话数据

时间:2013-07-26 11:51:59

标签: php html

我的用户已在CMS上的site_url.com登录,但我现在正在子域m.site_url.com上的CMS之外开发该网站的移动版本,并希望会话结转

我已经包含了一个包含所有CMS功能的文件,如下所示:

<?php include_once'/home/flyeurov/public_html/core/codon.config.php';?>

我可以在移动网站上正常登录:

<input type="hidden" name="mobileVersion" value="True">
<input type="hidden" name="redir" value="" />
<input type="hidden" name="action" value="login" />
<input class="login-btn" type="submit" name="submit" value="Log In" />

上述内容由login.php处理。但是,CMS登录会将其重定向到CMS的页面,我需要将移动版本重定向到m.site_url.com子域指向的/ mobile目录中的页面。因此,在login.php中(不要与mobile/login.php混淆 - 主login.php用于CMS)。我这样做了,它重定向到mobile/crew_center.php - 一个应该在移动版本上重定向的页面。

if (isset($_POST['mobileVersion'])) {
                header('Location: http://m.site_url.com/crew_center.php');
            } else {
                $this->post->redir = str_replace('index.php/', '', $this->post->redir);
                header('Location: '.url('/'.$this->post->redir));
            }

上述代码可能与我的问题有关。

我的问题是主CMS的会话没有转移到移动网站。在mobile/index.php我有这个声明,这是行不通的。登录后,用户应该看到crew_center.php,因为显示登录表单毫无意义。目前,当用户登录CMS时,登录页面仍会显示在移动版本上。

但是,如果我在浏览器中删除子域并输入site_url/mobile,则会打开右侧页面crew_center.php

<?php include_once'/home/flyeurov/public_html/core/codon.config.php';

session_set_cookie_params(0, '/', 'site_url.com');
session_start();

if(Auth::LoggedIn())
{
    header("Location: crew_center.php");
} 
else
{
    header("Location: login.php");
}

?>

如何解决此问题,如何使用PHP将会话数据从主域共享到子域?


codon.config.php - http://pastebin.com/BWcbddGG

1 个答案:

答案 0 :(得分:1)

您需要相应地设置Cookie的域名 - 在您的域名中添加.

session_set_cookie_params(0, '/', '.site_url.com');

这将在您的所有子域和二级域中共享您的Cookie。