如何在Zend Framework 1.12中的基于模块的应用程序中创建基于用户的虚拟子域?

用户名

我正在zend Framework 1.12上创建一个应用程序,我有一个用户模块,该模块接受来自“ www.example.com”的用户登录和注册。验证用户后,我要将用户重定向到用户特定的子域“ username.example.com”。我已经配置了我的主机文件和apache的vhost文件。

在这方面的任何帮助,不胜感激。

提前致谢。

鲁帕里

这是我在项目中用于多个子域的方式;

index.php文件中提取子域名(如果存在),并将其设置为常量。稍后将使用。

function extract_domain($domain) {
    if(preg_match("/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i", $domain, $matches)) {
        return $matches['domain'];
    } else {
        return $domain;
    }
}
function extract_subdomains($domain) {
    $subdomains = $domain;
    $domain = extract_domain($subdomains);
    $subdomains = str_replace('www', '', rtrim(strstr($subdomains, $domain, true), '.'));
    return $subdomains;
}

$subDomainName = extract_subdomains($_SERVER['HTTP_HOST']);
//this const will be used in bootstrap file.
define('SUBDOMAIN_NAME', $subDomainName);

login保存在您希望将用户重定向会话变量的子域的名称。您可以在模块bootstap文件中编写以下函数user

protected function _initSubdomainCheck() {
    //Get session in your own way for below line. I'm using action helper to manage the session.
    $userSession = Zend_Controller_Action_HelperBroker::getStaticHelper('siteSession')->getUserSession();
    $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
    //check if user is logged in then redirect user to a subdomain
    if(isset ( $userSession->logged_in ) && $userSession->logged_in == 1) {
        //SUBDOMAIN_NAME is a const variable i have set in index.php. If user is already redirected to the subdomain which is stored in session then no need to have further redirection
        if($userSession->urlSubDomainName != SUBDOMAIN_NAME) {
            $redirector->gotoUrl(Zend_Controller_Action_HelperBroker::getStaticHelper('common')->getAfterLoginUrl());
        }
    }
}

以上功能的逻辑:

  1. 获取会话变量
  2. 检查用户是否登录
  3. 如果用户已登录,则检查用户是否已经在子域URL上,如果否,则将用户重定向到特定的子域。

我已经创建了一个动作助手common/application/helpers/Common.php与下面的代码:这个动作助手的方法可以以这种方式被称为:Zend_Controller_Action_HelperBroker::getStaticHelper('common')->methodName();

class Zend_Controller_Action_Helper_Common extends Zend_Controller_Action_Helper_Abstract{

    public function getSiteUrl(){
        $baseUrl = Zend_Controller_Front::getInstance()->getRequest()->getBaseUrl();
        return $this->getServerProtocol().$_SERVER['HTTP_HOST'] . $baseUrl;
    }

    public function getServerProtocol() {
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        return $protocol;
    }

    function extract_domain($domain) {
        if(preg_match("/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i", $domain, $matches)) {
           return $matches['domain'];
         } else {
           return $domain;
         }
     }

    public function getSubdomainName() {
        //get session object in your way.
        $session = Zend_Controller_Action_HelperBroker::getStaticHelper('siteSession')->getUserSession();
        $domainName = extract_domain($this->getSiteUrl());
        return $this->getServerProtocol()
            .$session->urlSubDomainName.'.'
            .$domainName;
    }
    public function getAfterLoginUrl(){
        return $this->getSubdomainName().'/yourController/Youraction';
    }

}

以上帮手的逻辑:

  1. 我们已经编写了此帮助程序来获取子域网址。首先,我们从得到的子域名sessionabc
  2. 之后,提取域名。例如,如果您有,www.example.com那就example.com摆脱它。
  3. 最后创建子域url Protocol + subdomain name + domain name例如http://abc.example.com
  4. 返回此URL。

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在zend framework 2中创建工厂?

来自分类Dev

如何在zend Framework 2中返回对象数组?

来自分类Dev

如何测试我的应用程序phpunit中的每个模块-Zend Framework 2

来自分类Dev

如何在Zend Framework 2上动态禁用特定模块

来自分类Dev

如何在Zend Framework 1.12中访问我的模块

来自分类Dev

如何在zend zf1模块中设置布局

来自分类Dev

如何在我们的应用程序中给出zend库路径?(在zend Framework 2.3中)

来自分类Dev

如何成功将Zend Framework 1应用程序从CloudControl Luigi迁移到Pinky堆栈?

来自分类Dev

如何在Zend Framework 1中使用模板引擎(胡子,车把)?

来自分类Dev

如何在xampp中安装zend Framework 1.12.9?

来自分类Dev

如何在zend Framework 2中配置路由?

来自分类Dev

如何从Zend Framework 1中的url获取参数?

来自分类Dev

如何在Zend Framework表单中添加id属性?

来自分类Dev

如何在Zend Framework 2上实现用户登录?

来自分类Dev

如何在zend Framework 2中返回对象数组?

来自分类Dev

如何在Zend Framework 2中验证Checkbox?

来自分类Dev

如何在zend Framework 2中自动提交

来自分类Dev

如何在Zend Framework 2中接收文件

来自分类Dev

如何在zend 1中加载视图?

来自分类Dev

如何在Zend Framework 2上实现用户登录?

来自分类Dev

如何在Zend Framework Controller中访问全局变量

来自分类Dev

如何在Zend Framework 3中从Controller调用模型方法

来自分类Dev

如何在Zend Framework 1中正确调用控制器/动作?

来自分类Dev

如何在Zend Framework 3中为不同的模块设置不同的布局

来自分类Dev

在Zend Framework 1中创建一个基本的简单Web应用程序

来自分类Dev

如何在 Zend Framework 1.12 中设置路由

来自分类Dev

如何在 Zend Framework 3 中实现 CSRF 保护?

来自分类Dev

如何在 Zend Framework 3 中声明全局常量?

来自分类Dev

如何使用 Zend_Db_Select 和 AND 和 OR 运算符在 Zend Framework 1 中执行嵌套的 WHERE?

Related 相关文章

  1. 1

    如何在zend framework 2中创建工厂?

  2. 2

    如何在zend Framework 2中返回对象数组?

  3. 3

    如何测试我的应用程序phpunit中的每个模块-Zend Framework 2

  4. 4

    如何在Zend Framework 2上动态禁用特定模块

  5. 5

    如何在Zend Framework 1.12中访问我的模块

  6. 6

    如何在zend zf1模块中设置布局

  7. 7

    如何在我们的应用程序中给出zend库路径?(在zend Framework 2.3中)

  8. 8

    如何成功将Zend Framework 1应用程序从CloudControl Luigi迁移到Pinky堆栈?

  9. 9

    如何在Zend Framework 1中使用模板引擎(胡子,车把)?

  10. 10

    如何在xampp中安装zend Framework 1.12.9?

  11. 11

    如何在zend Framework 2中配置路由?

  12. 12

    如何从Zend Framework 1中的url获取参数?

  13. 13

    如何在Zend Framework表单中添加id属性?

  14. 14

    如何在Zend Framework 2上实现用户登录?

  15. 15

    如何在zend Framework 2中返回对象数组?

  16. 16

    如何在Zend Framework 2中验证Checkbox?

  17. 17

    如何在zend Framework 2中自动提交

  18. 18

    如何在Zend Framework 2中接收文件

  19. 19

    如何在zend 1中加载视图?

  20. 20

    如何在Zend Framework 2上实现用户登录?

  21. 21

    如何在Zend Framework Controller中访问全局变量

  22. 22

    如何在Zend Framework 3中从Controller调用模型方法

  23. 23

    如何在Zend Framework 1中正确调用控制器/动作?

  24. 24

    如何在Zend Framework 3中为不同的模块设置不同的布局

  25. 25

    在Zend Framework 1中创建一个基本的简单Web应用程序

  26. 26

    如何在 Zend Framework 1.12 中设置路由

  27. 27

    如何在 Zend Framework 3 中实现 CSRF 保护?

  28. 28

    如何在 Zend Framework 3 中声明全局常量?

  29. 29

    如何使用 Zend_Db_Select 和 AND 和 OR 运算符在 Zend Framework 1 中执行嵌套的 WHERE?

热门标签

归档