• 对discuz的代码分析学习————首页文件(转自陈)


    对discuz的代码分析学习首页文件

    如果当前地址栏存在查询字符,并且是一个数字,条件成立。
     查询字符:www.baidu.com/index.php?aaa=bbb              aaa=bbb就是查询字符
    如果条件成立,则把home赋值给$_ENV['curapp'] ;  $_ENV可以理解为类似于$_GET的超全局数组。这里的$_ENV['curapp']可以理解为选中的入口文件。
    并将一个数组传递给$_GET,数组的第一个成员指定了控制器名称,第二个成员制定了一个叫uid的参数,就是用户id。 

    如果这里的条件成立了,127行的IF语句必定为false,下面一大堆代码都不用执行,一直跳到137行,直接就加载入口文件。
     

    如果第一个IF语句为false 
     

    cache_domain.php是系统生成的配置文件。$domain数组是在cache_domain.php文件中声明的。
     
    如果$_ENV['domain']为空,直接将当前选中的应用设置为forum(论坛) ,然后跳到137行。
    如果 $_ENV['domain']不为空

    25:将当前主机域名按.号拆分为数组。
     
    27:将获取到的域名从第一个.号后一位的位置截取,一直截取到末尾。例如www.baidu.com -> 被截之后 -> baidu.com

     28:如果['domain']['app']不为空,并且是数组,并且当前访问的域名也是其数组值的一项。则:
     
    30:在app数组中找到值为当前域名的键,作为选中的应用。比如当前访问的域名为www.baidu.com而且在app数组中找到了这一项:
     
    那么$_ENV['curapp']的值就为home。

    如果当前选中的应用是mobile(手机) ,$_ENV['curapp']重置为forum
     
    如果当前选中的应用是default或者当前选中的应用在默认应用数组中不存在,则把当前选中的应用赋值为空。 
     

    37:这个条件会在设置根域名,并且当前访问的也是这个根域名之后成立。



    44:这一行的条件不知道什么情况下会成立。搞了好几遍list数组始终为空。下面的IF语句也不会执行,暂时不清楚list数组干嘛用的。

    74:如果当前访问的域名是二级域名,并且这个二级域名不是保留域名,这个条件就会成立,checkholdmain函数用来检查是否是保留域名。
     
    75:获取域名前缀 
    76:获取根域名
    77:加载框架入口文件
     
    这一串代码看得出来是初始化操作。这些都是discuz_application类的属性。
     
    85:这行代码会通过table_common_domain类查询数据库,找到根域名绑定的应用类型。fetch_by_domain_domainroot

     


     如果应用类型为home如何如何,如果应用类型为group如何如何。

    大致分析
    图片

     
  • 相关阅读:
    mysql视图定义以及创建视图
    前端页面调用spring mvc接口发生跨域问题解决方案
    亲测可用的ssm框架搭建
    python--pandas基本操作
    jieba中文处理 python
    爬虫 登录开心网,登录人人网
    Selenium&wevdriver
    django 中间件的一些基本操作
    写一个简单的登录客户端步骤
    个人对ADO连接池的理解
  • 原文地址:https://www.cnblogs.com/alleyonline/p/8371530.html
Copyright © 2020-2023  润新知