成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

dedecms5.7(織夢)源碼解析之后臺(tái)登錄

calx / 618人閱讀

摘要:前言在安裝完成之后,我們通常會(huì)進(jìn)入后臺(tái),那么登錄自然是必不可少的一步,下面我們就來看看,織夢的登錄在源碼中是究竟如何完成的吧。

前言

在安裝完成之后,我們通常會(huì)進(jìn)入后臺(tái),那么登錄自然是必不可少的一步,下面我們就來看看,織夢的登錄在源碼中是究竟如何完成的吧。

過程

首先,如果我們直接訪問域名/dede,那么程序走的肯定是index.php,文件源碼如下:

getUserID().".txt";

if(!file_exists($myIcoFile)) $myIcoFile = $defaultIcoFile;

require(DEDEADMIN."/inc/inc_menu_map.php");
include(DEDEADMIN."/templets/index2.htm");
exit();

從源碼中不難看出,該頁面主要是起統(tǒng)領(lǐng)作用,包含了如下幾個(gè)文件:

/dede/config.php : 管理目錄配置文件

/include/dedetag.class.php : 模板類

/dede/inc/inc_menu_map.php : 菜單地圖

/dede/templates/index2.html : 后臺(tái)首頁模板

它的執(zhí)行順序分別為:

分別加載config.phpdedetag.class.php兩個(gè)文件

分別載入通用快捷菜單模板和當(dāng)前用戶快捷菜單模板,該模板最終會(huì)顯示在登錄后的首頁的快捷操作欄中

最后載入菜單地圖和首頁模板

到此為止,你也許會(huì)問,那么程序是在哪里判斷登錄的呢?從index.php中貌似也沒有看到關(guān)于登錄的地方啊,為什么我輸入index.php而會(huì)直接跳轉(zhuǎn)到后面跟一堆參數(shù)的logo.php呢?別急,其實(shí)它就在config.php中,看下面源碼:

//獲得當(dāng)前腳本名稱,如果你的系統(tǒng)被禁用了$_SERVER變量,請自行更改這個(gè)選項(xiàng)
$dedeNowurl = $s_scriptName = "";
$isUrlOpen = @ini_get("allow_url_fopen");
$dedeNowurl = GetCurUrl();
$dedeNowurls = explode("?", $dedeNowurl);
$s_scriptName = $dedeNowurls[0];
$cfg_remote_site = empty($cfg_remote_site)? "N" : $cfg_remote_site;

//檢驗(yàn)用戶登錄狀態(tài)
$cuserLogin = new userLogin();
if($cuserLogin->getUserID()==-1)
{
    header("location:login.php?gotopage=".urlencode($dedeNowurl));
    exit();
}

在上面代碼中,程序首先獲取了當(dāng)前的腳本網(wǎng)址以及對其盡心拆解處理,然后實(shí)例化織夢的登錄類,根據(jù)當(dāng)前用戶id來判斷用戶是否登錄,如果沒有,則跳轉(zhuǎn)到login.php,后面的一堆參數(shù)也就是之前的腳本網(wǎng)址urlencode之后的結(jié)果。

好,既然到了login.php了,那我們就繼續(xù)來看看,在login.php頁面中,是如何處理的吧。

login.php文件源碼大概可以分為以下幾塊:

分別載入全局配置文件和登錄類

檢測安裝目錄安全性,如果沒有寫入鎖文件,這里則再次寫入一次(雙保險(xiǎn)),然后將兩個(gè)可執(zhí)行的php文件修改備注為php.bak,使其失去可執(zhí)行性,最后新增index.html文件,內(nèi)容為dir,增加安全性,這一切都是為了防止惡意用戶重復(fù)安裝,導(dǎo)致網(wǎng)站損壞。

//檢測安裝目錄安全性
if( is_dir(dirname(__FILE__)."/../install") )
{
    if(!file_exists(dirname(__FILE__)."/../install/install_lock.txt") )
    {
      $fp = fopen(dirname(__FILE__)."/../install/install_lock.txt", "w") or die("安裝目錄無寫入權(quán)限,無法進(jìn)行寫入鎖定文件,請安裝完畢刪除安裝目錄!");
      fwrite($fp,"ok");
      fclose($fp);
    }
    //為了防止未知安全性問題,強(qiáng)制禁用安裝程序的文件
    if( file_exists("../install/index.php") ) {
        @rename("../install/index.php", "../install/index.php.bak");
    }
    if( file_exists("../install/module-install.php") ) {
        @rename("../install/module-install.php", "../install/module-install.php.bak");
    }
    $fileindex = "../install/index.html";
    if( !file_exists($fileindex) ) {
        $fp = @fopen($fileindex,"w");
        fwrite($fp,"dir");
        fclose($fp);
    }
}

更新服務(wù)器

檢測后臺(tái)目錄是否更名,為了安全性,如果檢測到?jīng)]有更名,則會(huì)提示

登錄檢測 : 這一步就是檢測驗(yàn)證碼,用戶名,和密碼,成功后跳轉(zhuǎn)到首頁

包含登錄頁面模板

那么,到此登錄就基本結(jié)束了,其中有兩個(gè)地方再說一下,一個(gè)是參數(shù)gotopage和另一個(gè)dohost,這兩個(gè)參數(shù)或變量均在login.html中可以找到,具體詳細(xì)流程大家可自行研究,關(guān)于gotopage,為了安全性,在login.html中可以看到,此處用了removeXSS函數(shù),防止xxs攻擊:


總結(jié)

殊途同歸,登錄無非就是判斷登錄狀態(tài)=》沒有登錄則跳轉(zhuǎn)到登錄頁面=》登錄了則跳轉(zhuǎn)到首頁,剩下的基本就是參數(shù)處理和表單驗(yàn)證了,把握好核心,一切都能隨心。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22104.html

相關(guān)文章

  • dedecms5.7(織夢)源碼解析程序安裝補(bǔ)全篇

    摘要:前言之前寫的織夢源碼解析之程序安裝一文中,還有幾個(gè)值得講解的文件沒有提到,這里說明一下。總結(jié)安裝文件,到此真的結(jié)束了。 前言 之前寫的《dedecms5.7(織夢)源碼解析之程序安裝》一文中,還有幾個(gè)值得講解的文件沒有提到,這里說明一下。 代碼 templates目錄 該文件夾中,一共有step-1.html、step-2.html、step-3.html、step-4.html、st...

    pkhope 評論0 收藏0
  • dedecms5.7(織夢)源碼解析程序安裝

    摘要:前言眾所周知,在第一次運(yùn)行時(shí)會(huì)檢測是否安裝,如果沒有,則自動(dòng)跳轉(zhuǎn)到安裝界面,進(jìn)行用戶友好的安裝步驟,下面我們就來從源碼看看這一切是如何完成的??偨Y(jié)安裝的話,到此結(jié)束了,基本都是接收表單參數(shù),操作文件和數(shù)據(jù)庫的東西。 前言 眾所周知,dedecms在第一次運(yùn)行時(shí)會(huì)檢測是否安裝,如果沒有,則自動(dòng)跳轉(zhuǎn)到安裝界面,進(jìn)行用戶友好的安裝步驟,下面我們就來從源碼看看這一切是如何完成的。 代碼 默認(rèn)服...

    olle 評論0 收藏0
  • 程序人生:dedecms偽靜態(tài)的實(shí)現(xiàn)方法

    摘要:一般來說,空間都是支持偽靜態(tài)的。服務(wù)器偽靜態(tài)相對簡單,直接在文件中加入相應(yīng)偽靜態(tài)規(guī)則即可而服務(wù)器偽靜態(tài)的實(shí)現(xiàn),則需要加載組件,然后配置文件。 操作如下:1、后臺(tái)-系統(tǒng)參數(shù)-核心設(shè)置-是否使用偽靜態(tài):選擇是;注:你的網(wǎng)站空間是否支持偽靜態(tài),你可以與空間的IDC商聯(lián)系一 下,如果是自己的服務(wù)器,那就更好辦了,自己動(dòng)手,豐衣足食。一般來說,空間都是支持偽靜態(tài)的。Apache服務(wù)器偽靜態(tài)相對簡...

    mingde 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<