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

資訊專欄INFORMATION COLUMN

dedecms5.7(織夢(mèng))源碼解析之程序安裝

olle / 2442人閱讀

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

前言

眾所周知,dedecms在第一次運(yùn)行時(shí)會(huì)檢測(cè)是否安裝,如果沒(méi)有,則自動(dòng)跳轉(zhuǎn)到安裝界面,進(jìn)行用戶友好的安裝步驟,下面我們就來(lái)從源碼看看這一切是如何完成的。

代碼

默認(rèn)服務(wù)器配置入口文件是index.html,index.php等,織夢(mèng)uploads文件夾中僅有index.php,遂直接運(yùn)行index.php文件啊,源碼如下:

GetOne("Select * From `#@__homepageset`");
    $row["templet"] = MfTemplet($row["templet"]);
    $pv = new PartView();
    $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row["templet"]);
    $row["showmod"] = isset($row["showmod"])? $row["showmod"] : 0;
    if ($row["showmod"] == 1)
    {
        $pv->SaveToHtml(dirname(__FILE__)."/index.html");
        include(dirname(__FILE__)."/index.html");
        exit();
    } else { 
        $pv->Display();
        exit();
    }
}
else
{
    header("HTTP/1.1 301 Moved Permanently");
    header("Location:index.html");
}
?>

縱觀整個(gè)文件,其中代碼大概分成了兩部分:

判斷是存在全局配置文件(是否安裝)

判斷根目錄是否存在index.html文件,沒(méi)有則生成

具體請(qǐng)看下面帶有注釋的代碼:

GetOne("Select * From `#@__homepageset`");
    // 模板目錄規(guī)則
    $row["templet"] = MfTemplet($row["templet"]);
    // 創(chuàng)建視圖對(duì)象
    $pv = new PartView();
    // 設(shè)置要解析的模板
    $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row["templet"]);
    // 這里接收的應(yīng)該是模塊參數(shù),方便后面進(jìn)行判斷
    $row["showmod"] = isset($row["showmod"])? $row["showmod"] : 0;
    // 判斷當(dāng)前模塊
    if ($row["showmod"] == 1)
    {
        // 生成index.html文件
        $pv->SaveToHtml(dirname(__FILE__)."/index.html");
        // 生成后包含進(jìn)來(lái)(注意不是跳轉(zhuǎn)哦)
        include(dirname(__FILE__)."/index.html");
        // 終止
        exit();
    } else { 
        // 直接執(zhí)行
        $pv->Display();
        // 終止
        exit();
    }
}
else
{
    // 設(shè)置301header跳啊轉(zhuǎn)
    header("HTTP/1.1 301 Moved Permanently");
    // 跳轉(zhuǎn)進(jìn)入index.html頁(yè)面
    header("Location:index.html");
}
?>

好,index.php入口文件我們從上面的注釋中已經(jīng)能夠大概明白他的內(nèi)容和作用了,下面就順著安裝步驟找安裝文文件install/index.php吧,由于這個(gè)文件內(nèi)容太多,源碼我就不放了,直接放上我注釋過(guò)的源碼內(nèi)容:

 $_v) ${$_k} = RunMagicQuotes($_v);
}

// 包含進(jìn)入系統(tǒng)核心函數(shù)文件
require_once(DEDEINC."/common.func.php");

// 檢測(cè)安裝鎖文件是否已經(jīng)存在,如果存在終止程序執(zhí)行,并提示文件已經(jīng)安裝
if(file_exists($insLockfile))
{
    exit(" 程序已運(yùn)行安裝,如果你確定要重新安裝,請(qǐng)先從FTP中刪除 install/install_lock.txt!");
}

// 初始化文件安裝步驟
if(empty($step))
{
    $step = 1;
}
/*------------------------
使用協(xié)議書
function _1_Agreement()
------------------------*/
// 如果為第一步,則引入使用協(xié)議書頁(yè)面
if($step==1)
{
    // 引入第一個(gè)頁(yè)面(使用協(xié)議書)
    include("./templates/step-1.html");
    // 終止當(dāng)前執(zhí)行
    exit();
}
/*------------------------
環(huán)境測(cè)試
function _2_TestEnv()
------------------------*/
// 如果為第二部,則引入環(huán)境測(cè)試頁(yè)面
else if($step==2)
{
    // 獲取php版本
    $phpv = phpversion();
    // 獲取當(dāng)前操作系統(tǒng)類型
    $sp_os = PHP_OS;
    // 獲得GD的版本
    $sp_gd = gdversion();
    // 獲取服務(wù)器標(biāo)識(shí)的字串
    $sp_server = $_SERVER["SERVER_SOFTWARE"];
    // 獲取當(dāng)前host-如果ip不存在,則直接獲取主機(jī)名,否則為ip
    $sp_host = (empty($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_HOST"] : $_SERVER["REMOTE_ADDR"]);
    // 獲取當(dāng)前服務(wù)器主機(jī)名稱
    $sp_name = $_SERVER["SERVER_NAME"];
    // 獲取當(dāng)前配置最大執(zhí)行時(shí)間
    $sp_max_execution_time = ini_get("max_execution_time");
    // 獲取當(dāng)前在函數(shù)調(diào)用時(shí)參數(shù)被按照引用傳遞時(shí)是否發(fā)出警告-php5.4以上已經(jīng)移除
    $sp_allow_reference = (ini_get("allow_call_time_pass_reference") ? "[√]On" : "[×]Off");
    // 獲取當(dāng)前是否 URL 形式的 fopen 封裝協(xié)議
    $sp_allow_url_fopen = (ini_get("allow_url_fopen") ? "[√]On" : "[×]Off");
    // 獲取當(dāng)前是否已經(jīng)打開php的安全模式
    $sp_safe_mode = (ini_get("safe_mode") ? "[×]On" : "[√]Off");
    // 獲取當(dāng)前是否打開gd庫(kù)
    $sp_gd = ($sp_gd>0 ? "[√]On" : "[×]Off");
    // 獲取當(dāng)前是否打開mysql擴(kuò)展
    $sp_mysql = (function_exists("mysql_connect") ? "[√]On" : "[×]Off");

    // 判斷并定義mysql錯(cuò)誤
    if($sp_mysql=="[×]Off")
    $sp_mysql_err = TRUE;
    else
    $sp_mysql_err = FALSE;

    // 定義測(cè)試目錄
    $sp_testdirs = array(
        "/",
        "/plus/*",
        "/dede/*",
        "/data/*",
        "/a/*",
        "/install",
        "/special",
        "/uploads/*"
    );
    // 包含第二部文件
    include("./templates/step-2.html");
    // 終止本次執(zhí)行
    exit();
}
/*------------------------
設(shè)置參數(shù)
function _3_WriteSeting()
------------------------*/
// 第三部設(shè)置參數(shù)
else if($step==3)
{
    // 取得當(dāng)前URL的 路徑地址
    if(!empty($_SERVER["REQUEST_URI"]))
    $scriptName = $_SERVER["REQUEST_URI"]; // 如果存在,則直接寫入
    else
    $scriptName = $_SERVER["PHP_SELF"]; // 獲取正在執(zhí)行腳本的文件名

    // 通過(guò)正則替換,獲得基礎(chǔ)目錄-根目錄路徑
    $basepath = preg_replace("#/install(.*)$#i", "", $scriptName);

    // 獲取當(dāng)前請(qǐng)求的 Host: 頭部的內(nèi)容。
    if(!empty($_SERVER["HTTP_HOST"]))
        $baseurl = "http://".$_SERVER["HTTP_HOST"]; // 存在則寫入
    else
        $baseurl = "http://".$_SERVER["SERVER_NAME"]; // 獲取服務(wù)器主機(jī)的名稱

    // 大小寫字母和阿拉伯?dāng)?shù)字
    $chars="abcdefghigklmnopqrstuvwxwyABCDEFGHIGKLMNOPQRSTUVWXWY0123456789";
    // 隨機(jī)cookie編碼
    $rnd_cookieEncode="";
    // 隨機(jī)長(zhǎng)度
    $length = rand(28,32);
    // $chars最大長(zhǎng)度
    $max = strlen($chars) - 1;
    // 按隨機(jī)生成的長(zhǎng)度進(jìn)行for循環(huán)
    for($i = 0; $i < $length; $i++) {
        // 每次存入$chars中一個(gè)隨機(jī)字符
        $rnd_cookieEncode .= $chars[mt_rand(0, $max)];
    }
    // 初始化數(shù)據(jù)體驗(yàn)包為關(guān)閉
    $isdemosign = 0;
    // 判斷如果存在初始化體驗(yàn)包的文件,則數(shù)據(jù)體驗(yàn)包設(shè)置為開啟
    if(file_exists($install_demo_name) && file_get_contents($install_demo_name)) $isdemosign = 1;
    // 定義數(shù)據(jù)模塊目錄
    $module_local = DEDEDATA."/module/";
    // 包含第三個(gè)頁(yè)面文件
    include("./templates/step-3.html");
    // 終止執(zhí)行
    exit();
}
/*------------------------
普通安裝
function _4_Setup()
------------------------*/
// 進(jìn)入普通安裝步驟
else if($step==4)
{
    // 按照用戶輸入連接mysql數(shù)據(jù)庫(kù)
    $conn = mysql_connect($dbhost,$dbuser,$dbpwd) or die("");
    // 如果數(shù)據(jù)庫(kù)不存在,則創(chuàng)建數(shù)據(jù)庫(kù)
    mysql_query("CREATE DATABASE IF NOT EXISTS `".$dbname."`;",$conn);
    // 選擇數(shù)據(jù)庫(kù)
    mysql_select_db($dbname, $conn) or die("");

    //獲得數(shù)據(jù)庫(kù)版本信息
    $rs = mysql_query("SELECT VERSION();",$conn);
    // 從結(jié)果集中取得一行作為數(shù)組
    $row = mysql_fetch_array($rs);
    // 按.分割
    $mysqlVersions = explode(".",trim($row[0]));
    // 重組,只要前兩個(gè)主要和次要版本即可
    $mysqlVersion = $mysqlVersions[0].".".$mysqlVersions[1];
    // 設(shè)置字符集
    mysql_query("SET NAMES "$dblang",character_set_client=binary,sql_mode="";",$conn);
    // 創(chuàng)建全局配置文件
    $fp = fopen(dirname(__FILE__)."/common.inc.php","r");
    // 讀取全局配置文件
    $configStr1 = fread($fp,filesize(dirname(__FILE__)."/common.inc.php"));
    // 關(guān)閉文件資源
    fclose($fp);

    // 打開安裝配置緩存文件
    $fp = fopen(dirname(__FILE__)."/config.cache.inc.php","r");
    // 讀取安裝配置緩存文件
    $configStr2 = fread($fp,filesize(dirname(__FILE__)."/config.cache.inc.php"));
    // 關(guān)閉資源
    fclose($fp);

    //common.inc.php 定義部分需要寫入全局配置文件的內(nèi)容
    $configStr1 = str_replace("~dbhost~",$dbhost,$configStr1);
    $configStr1 = str_replace("~dbname~",$dbname,$configStr1);
    $configStr1 = str_replace("~dbuser~",$dbuser,$configStr1);
    $configStr1 = str_replace("~dbpwd~",$dbpwd,$configStr1);
    $configStr1 = str_replace("~dbprefix~",$dbprefix,$configStr1);
    $configStr1 = str_replace("~dblang~",$dblang,$configStr1);

    // 設(shè)置根目錄data目錄權(quán)限
    @chmod(DEDEDATA,0777);
    // 打開全局配置文件(創(chuàng)建),如果無(wú)法創(chuàng)建,則說(shuō)明目錄沒(méi)有寫入權(quán)限
    $fp = fopen(DEDEDATA."/common.inc.php","w") or die("");
    // 將自帶的緩存配置文件中部分相應(yīng)內(nèi)容寫入全局配置文件中
    fwrite($fp,$configStr1);
    // 關(guān)閉文件資源
    fclose($fp);

    //config.cache.inc.php
    // CMS安裝目錄,匹配至少一個(gè)/
    $cmspath = trim(preg_replace("#/{1,}#", "/", $cmspath));
    // 如果匹配到了至少一個(gè)/而且也沒(méi)有匹配到以/開頭的(加上/,即加上根目錄)
    if($cmspath!="" && !preg_match("#^/#", $cmspath)) $cmspath = "/".$cmspath;

    // 如果cms路徑為空,則indexUrl為/
    if($cmspath=="") $indexUrl = "/";
        // 否則indexUrl等于cms路徑
    else $indexUrl = $cmspath;

    // 從安裝配置緩存文件中讀取部分配置用于后面寫入
    $configStr2 = str_replace("~baseurl~",$baseurl,$configStr2);
    $configStr2 = str_replace("~basepath~",$cmspath,$configStr2);
    $configStr2 = str_replace("~indexurl~",$indexUrl,$configStr2);
    $configStr2 = str_replace("~cookieEncode~",$cookieencode,$configStr2);
    $configStr2 = str_replace("~webname~",$webname,$configStr2);
    $configStr2 = str_replace("~adminmail~",$adminmail,$configStr2);

    // 創(chuàng)建data目錄下的緩存配置文件
    $fp = fopen(DEDEDATA."/config.cache.inc.php","w");
    // 寫入
    fwrite($fp,$configStr2);
    // 關(guān)閉資源
    fclose($fp);

    // 創(chuàng)建data目錄下的緩存配置備份文件
    $fp = fopen(DEDEDATA."/config.cache.bak.php","w");
    // 寫入
    fwrite($fp,$configStr2);
    // 關(guān)閉資源
    fclose($fp);

    // 檢測(cè)mysql版本是否大于4.1
    if($mysqlVersion >= 4.1)
    {
        // 如果大于,則將引擎設(shè)置為MyISAM,字符集設(shè)置為$dblanag內(nèi)容
        $sql4tmp = "ENGINE=MyISAM DEFAULT CHARSET=".$dblang;
    }

    //創(chuàng)建數(shù)據(jù)表
    // 初始化定義變量
    $query = "";
    // 以只讀方式打開數(shù)據(jù)表文件
    $fp = fopen(dirname(__FILE__)."/sql-dftables.txt","r");
    // while循環(huán)-如果文件沒(méi)有到達(dá)末尾 則執(zhí)行while中的代碼
    while(!feof($fp))
    {
        // 從文件指針中讀取一行,并去除首尾空格
        $line = rtrim(fgets($fp,1024));
        // 正則匹配出;號(hào)
        if(preg_match("#;$#", $line))
        {
            // 將每行末尾加上
換行符
            $query .= $line."
";
            // 將#@__替換成數(shù)據(jù)庫(kù)表前綴
            $query = str_replace("#@__",$dbprefix,$query);
            // 如果數(shù)據(jù)庫(kù)版本小于4.1的情況下
            if($mysqlVersion < 4.1)
            {
                // 直接執(zhí)行查詢
                $rs = mysql_query($query,$conn);
            } else {
                // 否則匹配出query中是否存在create創(chuàng)建語(yǔ)句
                if(preg_match("#CREATE#i", $query))
                {
                    // 如果有,則將其中的TYPE=MyISAM替換成上面定義的$sql4tmp內(nèi)容,并且執(zhí)行創(chuàng)建
                    $rs = mysql_query(preg_replace("#TYPE=MyISAM#i",$sql4tmp,$query),$conn);
                }
                else
                {
                    // 否則直接執(zhí)行
                    $rs = mysql_query($query,$conn);
                }
            }
            // while末尾,清空$query,方便下一次存入數(shù)據(jù)
            $query="";
        } else if(!preg_match("#^(//|--)#", $line))
        { // 正則匹配是否存在//或者--,如果不存在,則賦值$query,方便下一次連接執(zhí)行
            $query .= $line;
        }
    }
    // 關(guān)閉文件資源
    fclose($fp);

    //導(dǎo)入默認(rèn)數(shù)據(jù)
    // 初始化定義變量
    $query = "";
    // 以只讀方式打開數(shù)據(jù)表內(nèi)容文件
    $fp = fopen(dirname(__FILE__)."/sql-dfdata.txt","r");
    // while循環(huán)-如果文件沒(méi)有到達(dá)末尾 則執(zhí)行while中的代碼
    while(!feof($fp))
    {
        // 讀取第一行,并清空兩邊空格
        $line = rtrim(fgets($fp, 1024));
        // 正則匹配;號(hào)
        if(preg_match("#;$#", $line))
        {
            // 接入
            $query .= $line;
            // 替換前綴符號(hào)
            $query = str_replace("#@__",$dbprefix,$query);
            // 如果mysql版本小于4.1,直接執(zhí)行
            if($mysqlVersion < 4.1) $rs = mysql_query($query,$conn);
                // 否則將文件中的lang換成$dblang內(nèi)容
            else $rs = mysql_query(str_replace("#~lang~#",$dblang,$query),$conn);
            // 重置 $query
            $query="";
        } else if(!preg_match("#^(//|--)#", $line))
        { // 不到末尾,繼續(xù)拼接
            $query .= $line;
        }
    }
    // 關(guān)閉資源
    fclose($fp);

    //更新配置
    // 下面是按照頁(yè)面中的變量,更新剛才插入數(shù)據(jù)庫(kù)中的一些數(shù)據(jù)
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$baseurl}" where varname="cfg_basehost";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$cmspath}" where varname="cfg_cmspath";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$indexUrl}" where varname="cfg_indexurl";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$cookieencode}" where varname="cfg_cookie_encode";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$webname}" where varname="cfg_webname";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$adminmail}" where varname="cfg_adminemail";";
    mysql_query($cquery,$conn);

    //增加管理員帳號(hào)
    $adminquery = "INSERT INTO `{$dbprefix}admin` VALUES (1, 10, "$adminuser", "".substr(md5($adminpwd),5,20)."", "admin", "", "", 0, "".time()."", "127.0.0.1");";
    mysql_query($adminquery,$conn);

    //關(guān)連前臺(tái)會(huì)員帳號(hào)
    $adminquery = "INSERT INTO `{$dbprefix}member` (`mid`,`mtype`,`userid`,`pwd`,`uname`,`sex`,`rank`,`money`,`email`,
                   `scores` ,`matt` ,`face`,`safequestion`,`safeanswer` ,`jointime` ,`joinip` ,`logintime` ,`loginip` )
               VALUES ("1","個(gè)人","$adminuser","".md5($adminpwd)."","$adminuser","男","100","0","","10000","10","","0","","".time()."","","0",""); ";
    mysql_query($adminquery,$conn);

    $adminquery = "INSERT INTO `{$dbprefix}member_person` (`mid`,`onlynet`,`sex`,`uname`,`qq`,`msn`,`tel`,`mobile`,`place`,`oldplace`,`birthday`,`star`,
                   `income` , `education` , `height` , `bodytype` , `blood` , `vocation` , `smoke` , `marital` , `house` ,`drink` , `datingtype` , `language` , `nature` , `lovemsg` , `address`,`uptime`)
                VALUES ("1", "1", "男", "{$adminuser}", "", "", "", "", "0", "0","1980-01-01", "1", "0", "0", "160", "0", "0", "0", "0", "0", "0","0", "0", "", "", "", "","0"); ";
    mysql_query($adminquery,$conn);

    $adminquery = "INSERT INTO `{$dbprefix}member_tj` (`mid`,`article`,`album`,`archives`,`homecount`,`pagecount`,`feedback`,`friend`,`stow`)
                     VALUES ("1","0","0","0","0","0","0","0","0"); ";
    mysql_query($adminquery,$conn);

    $adminquery = "Insert Into `{$dbprefix}member_space`(`mid` ,`pagesize` ,`matt` ,`spacename` ,`spacelogo` ,`spacestyle`, `sign` ,`spacenews`)
                Values("1","10","0","{$adminuser}的空間","","person","",""); ";
    mysql_query($adminquery,$conn);

    //安裝體驗(yàn)數(shù)據(jù)
    if($installdemo == 1)
    {
        // 獲取體驗(yàn)數(shù)據(jù)內(nèi)容
        if($setupsql = file_get_contents($install_demo_name))
        {
            // 替換引擎
            $setupsql = preg_replace("#ENGINE=MyISAM#i", "TYPE=MyISAM", $setupsql);
            // 定義大于4.1時(shí)的創(chuàng)建sql
            $sql41tmp = "ENGINE=MyISAM DEFAULT CHARSET=".$cfg_db_language;
            if($mysql_version >= 4.1) {
                // 如果mysql版本大于4.1,則執(zhí)行此替換
                $setupsql = preg_replace("#TYPE=MyISAM#i", $sql41tmp, $setupsql);
            }
            // 替換rooturl
            $setupsql = preg_replace("#_ROOTURL_#i", $rooturl, $setupsql);
            // 替換換行符
            $setupsql = preg_replace("#[
]{1,}#", "
", $setupsql);
            // 替換表前綴
            $setupsql = preg_replace("/#@__/i",$dbprefix,$setupsql);
            // 按制表符分割
            $sqls = preg_split("#;[ 	]{0,}
#", $setupsql);
            // 遍歷執(zhí)行sql代碼
            foreach($sqls as $sql) {
                if(trim($sql)!="") mysql_query($sql,$conn);
            }
            // 更新欄目緩存
            UpDateCatCache();
        } else {
            // 沒(méi)有體驗(yàn)包,提示下載
            die("沒(méi)有體驗(yàn)數(shù)據(jù)包文件,請(qǐng)檢查是否下載.");
        }
    }

    //不安裝任何可選模塊
    if(!isset($modules) || !is_array($modules))
    {
        //鎖定安裝程序
        // 開始創(chuàng)建鎖文件
        $fp = fopen($insLockfile,"w");
        // 寫入內(nèi)容ok
        fwrite($fp,"ok");
        // 關(guān)閉資源
        fclose($fp);
        // 包含最后提示文件內(nèi)容
        include("./templates/step-5.html");
        // 終止程序執(zhí)行,如果不安裝模塊,則程序到此結(jié)束
        exit();
    }
    else // 安裝模塊
    {
        // 按照逗號(hào)分割模塊
        $module = join(",",$modules);
        // 以寫入形式打開模塊緩存文件
        $fp = fopen($moduleCacheFile,"w");
        // 寫入 ");
        //如果不能寫入緩存文件,退出模塊安裝
        if(!$fp) // 如果無(wú)法寫入
        {
            //鎖定安裝程序
            $fp = fopen($insLockfile,"w");
            // 寫入內(nèi)容ok
            fwrite($fp,"ok");
            // 關(guān)閉資源
            fclose($fp);
            // 錯(cuò)誤信息
            $errmsg = "由于無(wú)法寫入模塊緩存,安裝可選模塊失敗,請(qǐng)登錄后在模塊管理處安裝。";
            // 包含最后提示文件內(nèi)容
            include("./templates/step-5.html");
            // 終止程序
            exit();
        }
        // 關(guān)閉資源
        fclose($fp);
        // 包含第4
        include("./templates/step-4.html");
        // 終止
        exit();
    }
    // 終止
    exit();
}
/*------------------------
安裝可選模塊
function _5_SetupModule()
------------------------*/
else if($step==5)
{
    // 跳轉(zhuǎn)進(jìn)入模塊安裝文件啊
    header("location:module-install.php");
    exit();
}
/*------------------------
檢測(cè)數(shù)據(jù)庫(kù)是否有效
function _10_TestDbPwd()
------------------------*/
else if($step==10)
{
    // 不緩存頁(yè)面
    header("Pragma:no-cache
");
    // 不留下頁(yè)面?zhèn)浞?    header("Cache-Control:no-cache
");
    // 不過(guò)期
    header("Expires:0
");
    // 連接數(shù)據(jù)庫(kù)
    $conn = @mysql_connect($dbhost,$dbuser,$dbpwd);
    // 如果連接成功
    if($conn)
    {
        // 數(shù)據(jù)庫(kù)名稱不為空
        if(empty($dbname)){
            echo "信息正確";
        }else{
            // 否則提示信息
            $info = mysql_select_db($dbname,$conn)?"數(shù)據(jù)庫(kù)已經(jīng)存在,系統(tǒng)將覆蓋數(shù)據(jù)庫(kù)":"數(shù)據(jù)庫(kù)不存在,系統(tǒng)將自動(dòng)創(chuàng)建";
            echo $info;
        }
    }
    else
    {
        // 連接失敗時(shí)提示信息
        echo "數(shù)據(jù)庫(kù)連接失??!";
    }
    // 關(guān)閉數(shù)據(jù)庫(kù)
    @mysql_close($conn);
    // 終止程序執(zhí)行
    exit();
}
// 遠(yuǎn)程獲取體驗(yàn)包
else if($step==11)
{
    // 包含更新服務(wù)器配置文件
    require_once("../data/admin/config_update.php");
    // 定義文件名,拼接url
    $rmurl = $updateHost."dedecms/demodata.{$s_lang}.txt";

    // 按照文件url獲取資源
    $sql_content = file_get_contents($rmurl);
    // 以寫入方式創(chuàng)建文件
    $fp = fopen($install_demo_name,"w");
    // 寫入資源內(nèi)容
    if(fwrite($fp,$sql_content))
        // 寫入成功提示
        echo "  [√] 存在(您可以選擇安裝進(jìn)行體驗(yàn))";
    else
        // 寫入失敗提示
        echo "  [×] 遠(yuǎn)程獲取失敗";
    // 釋放$sql_content變量
    unset($sql_content);
    // 關(guān)閉資源
    fclose($fp);
    // 終止程序
    exit();
}

由上面代碼可以看出,主要的安裝都是在這個(gè)文件中進(jìn)行的,至于其他的都是輔助性文件,比如sql-dfdata.sql存放數(shù)據(jù)庫(kù)數(shù)據(jù)內(nèi)容等文件。

總結(jié)

安裝的話,到此結(jié)束了,基本都是接收表單參數(shù),操作文件和數(shù)據(jù)庫(kù)的東西。其他的輔助性文件,大家可以自己看看,有空的話,我也會(huì)寫一些關(guān)于那些文件的詳解。

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

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

相關(guān)文章

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

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

    pkhope 評(píng)論0 收藏0
  • dedecms5.7(織夢(mèng))源碼解析后臺(tái)登錄

    摘要:前言在安裝完成之后,我們通常會(huì)進(jìn)入后臺(tái),那么登錄自然是必不可少的一步,下面我們就來(lái)看看,織夢(mèng)的登錄在源碼中是究竟如何完成的吧。 前言 在安裝完成之后,我們通常會(huì)進(jìn)入后臺(tái),那么登錄自然是必不可少的一步,下面我們就來(lái)看看,織夢(mèng)的登錄在源碼中是究竟如何完成的吧。 過(guò)程 首先,如果我們直接訪問(wèn)域名/dede,那么程序走的肯定是index.php,文件源碼如下:

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

    摘要:一般來(lái)說(shuō),空間都是支持偽靜態(tài)的。服務(wù)器偽靜態(tài)相對(duì)簡(jiǎn)單,直接在文件中加入相應(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)手,豐衣足食。一般來(lái)說(shuō),空間都是支持偽靜態(tài)的。Apache服務(wù)器偽靜態(tài)相對(duì)簡(jiǎn)...

    mingde 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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