Discuz3.2源碼解析 首頁(index.php)

根目錄下index.php 是整個系統的默認首頁,以此文件入手,跟整個系統的運行流程是一致了,也方便分析整個系統的處理流程。php

 

    index.php的前幾行代碼(以下圖),能夠看出,先判斷是url中是否有請求的字符串。若是有且是數字則是把當前模塊默認爲用戶空間頁面,請求的字符串爲uid。緩存

    既然如此,咱們能夠直接在地址欄裏面輸入 "系統地址/index.php?1"(默認狀況下,管理員的uid爲1),這樣子就能夠查看到uid爲1的用戶信息(以下圖所示)。app

這樣經過此方法,貌似能夠抓取用戶信息和探測用戶及用戶數了。dom

 

若是index.php後面沒有請求字符串或者請求參數不是純數字,則要根據請求參數和系統設置,判斷若是處理該請求了,固然了,若是發生任何的意外,系統都將轉向forum.php,畢竟這個系統以論壇系統爲核心的,這個默認處理的路徑很簡單,以下圖:ui

 

    index.php 在有非數字請求參數的時候,會檢測下/data/sysdata/cache_domain.php裏面的緩存,裏面存放的是一些域名和app配置信息,若是沒有這個緩存,則會從common_domain表中讀取這些配置信息。整個流程處理略顯複雜,最終都會獲得一個$_ENV['curapp']做爲當前app處理請求或者一個$url 做爲重定向的url(以下圖)。url

    感受應該很簡單的邏輯,代碼形式上卻比較複雜,這應該是Discuz的通病,從很早的系統上繼承而來,重構力度不夠,致使代碼結構愈來愈糟。blog

    這裏對HTTP_HOST的處理上面上,有明顯的邏輯錯誤,在一些特別的host下,應該是要失效的。index.php裏面業務處理很少,就分析到這裏吧,不過多浪費時間了。繼承

相關文章
相關標籤/搜索