根据条件重定向到不同的目录

时间:2013-07-30 21:27:20

标签: php

我希望通过在某个条件下将用户重定向到其他目录来修改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('/'));
        }
    }
}

1 个答案:

答案 0 :(得分: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('/'));
    }
  }
}