0

我想通过根据条件将用户重定向到不同的目录来修改我的 CMS 中的注销触发器。基本上,我有我的 CMS,在它之外的一个子域中,m.site_url.com我有一个移动版本的网站。

从逻辑上讲,如果用户在移动站点上注销,将用户重定向到移动版本的主页是有意义的。同样,PC 上的 CMS 也是如此。

class Logout extends CodonModule 
{
    public function index()
    {
        Auth::LogOut();
        header('Location: '.url('/'));
    }
}

以上将用户注销并将其重定向到指定url的,即 CMS 的主页。因此,我想要一个 if/else 语句,如果用户在子域上注销,他们将被重定向到子域的索引页面。我怎样才能做到这一点?我试图检测 URL 并将它们重定向,但我觉得我失败了。

理想情况下,我想要一个可以应用于其他各个方面的解决方案。它在登录过程中可能变得至关重要。通常,如果密码错误,则会显示来自 CMS 的消息页面,但同样,将移动用户重定向到桌面站点等也是没有意义的。

class Logout extends CodonModule 
{
    public function index()
    {

        Auth::LogOut();

        $url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
        if (false !== strpos($url,'m.site')) {
        {
        header('Location: http://m.site_url.com/index.php');
        }
        else
        {
        header('Location: '.url('/'));
        }
    }
}
4

1 回答 1

1

您可以使用以下方法获取子域的名称:

$sub_domain = array_shift(explode(".",$_SERVER['HTTP_HOST']));

并使用它来确定您当前是否在子域中,如果是,则在哪个子域中 - 并采取相应的行动。

编辑:

class Logout extends CodonModule 
{
    public function index()
    {

    $sub_domain = array_shift(explode(".",$_SERVER['HTTP_HOST']));

    die($sub_domain); //debug the value

    if($sub_domain == 'm')
    {
        Auth::LogOut();
        header('Location: http://m.site_url.com/index.php');
    }
    else
    {
        Auth::LogOut();
        header('Location: '.url('/'));
    }
  }
}
于 2013-07-30T21:30:31.040 回答