如果當前地址欄存在查詢字符,並且是一個數字,條件成立。
查詢字符: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如何如何。
大致分析
