国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

calx / 610人閱讀

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

前言

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

過程

首先,如果我們直接訪問域名/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)領作用,包含了如下幾個文件:

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

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

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

/dede/templates/index2.html : 后臺首頁模板

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

分別加載config.phpdedetag.class.php兩個文件

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

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

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

//獲得當前腳本名稱,如果你的系統(tǒng)被禁用了$_SERVER變量,請自行更改這個選項
$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;

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

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

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

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

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

檢測安裝目錄安全性,如果沒有寫入鎖文件,這里則再次寫入一次(雙保險),然后將兩個可執(zhí)行的php文件修改備注為php.bak,使其失去可執(zhí)行性,最后新增index.html文件,內(nèi)容為dir,增加安全性,這一切都是為了防止惡意用戶重復安裝,導致網(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("安裝目錄無寫入權限,無法進行寫入鎖定文件,請安裝完畢刪除安裝目錄!");
      fwrite($fp,"ok");
      fclose($fp);
    }
    //為了防止未知安全性問題,強制禁用安裝程序的文件
    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);
    }
}

更新服務器

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

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

包含登錄頁面模板

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


總結(jié)

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

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

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

相關文章

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

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

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

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

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

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

    mingde 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<