因為這兩個常量在接下來的代碼中總是用到,所以在這里先說明下。INSIDE是用來防止 " /> 国产成人在线小视频,亚洲精品福利一区二区在线观看,超碰在线视频97

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP網頁游戲學習之Xnova(ogame)源碼解讀(二)

三、 安裝(install/index.php

這個文件是安裝頁面,一開始就可以看到定義了兩個常量:

define('INSIDE' , true);define('INSTALL' , true); 


因為這兩個常量在接下來的代碼中總是用到,所以在這里先說明下。INSIDE是用來防止攻擊的;INSTALL是用來記錄現在是否處于安裝游戲的進程中。

接下來Include兩個文件:extension.inc和common,這兩個都是正宗的php文件。首先extension.inc里面加入了防止攻擊的代碼,并且把php文件的擴展名隱藏起來,就是這句$phpEx = “php”。那么'common.'.$phpEx其實就是common.php了。

includeLang('install/install'); 


這句是load語言文件,includeLang()函數聲明在includes/unlocalised.php文件中,這個文件中還有很多的小函數。

function includeLang ($filename, $ext = '.mo') { global $xnova_root_path, $lang, $user; if ($user['lang'] != '') { $SelLanguage = $user['lang']; } else { $SelLanguage = DEFAULT_LANG; } include ($xnova_root_path . "language/". $SelLanguage ."/". $filename.$ext);} 

函數的功能是個根據用戶的所用的語種 include 相應的代碼,XnovaTC3版本里面是支持每個用戶使用不同的語言的,我使用的版本無此功能。

繼續往下,取得當前要顯示的頁面內容,就是到了安裝步驟幾了;然后進入一個大的switch。在這之前有一個這樣的語句:

$MainTPL = gettemplate('install/ins_body'); 

Gettemplate()函數同樣聲明在includes/unlocalised.php文件中,

function gettemplate ($templatename) { global $xnova_root_path; $filename = $xnova_root_path . TEMPLATE_DIR . TEMPLATE_NAME . '/' . $templatename . ".tpl"; return ReadFromFile($filename);} 

函數的功能是取得一個指定文件的內容,這個指定的文件是這樣構成的:

$ugamela_root_path . TEMPLATE_DIR . TEMPLATE_NAME . '/' . $templatename . ".tpl"; 

TEMPLATE_DIR的值是'templates/',TEMPLATE_NAME的值是'OpenGame',那么前面的 gettemplate

('install/ins_body')就是取得templates/OpenGame/install/ins_body.tpl文件中的內容。這樣的函數還有幾個,大家都要記住,后面會經常用到。

case ‘intro':

一看就應該知道,是說明介紹的頁面,不過里面有個我們首次見到的函數parsetemplate(),聲明在includes/unlocalised.php文件中,

function parsetemplate ($template, $array) {return preg_replace('#/{([a-z0-9/-_]*?)/}#Ssie', '( ( isset($array[/'/1/']) ) ? $array[/'/1/'] : /'/' );', $template);} 

函數的功能是利用正則表達式,對$template中的特定字符串(就是由 {} 括起來的內容),用$array的值進行替換,來實現多語言功能。

case ‘ins':

這個分枝是具體安裝過程,分成4個步驟頁面,由$page變量控制顯示哪一個頁面。

1. 當$page值為1時,先進行一些錯誤判斷;如果沒有錯誤,就讀取 templates/install/ins_form.tpl模板,parse出并構成有服務器地址、數據庫名、表名前綴、用戶名和密碼的頁面。安裝者輸入數據后,點擊install進入下一步的流程。

2. 當$page值為2時,取得第一步輸入的數據,并嘗試連接數據庫;如果連接不上數據庫則提示錯誤;連上數據庫則繼續后續的過程,包括:在config.php文件中寫入數據庫連接信息;根據includes/databaseinfos.php文件內容創建表結構。

3. 當$page值為3時,判斷上一步是否發生錯誤,沒有發生則顯示一些信息并parse出創建管理員帳號的表單,進入下一個流程。

4. 當$page值為4時,取得上一步輸入的數據,有帳號、密碼、email等;一些判斷之后創建這個管理員帳號,創建的過程以后注冊的時候再詳細說明。

至此,安裝主要過程就結束了,主要步驟就是這些,代碼也不難理解。最后還有一個函數要講解下,就是display(),聲明在includes/function.php文件中,

function display ($page, $title = '', $topnav = true, $metatags = '', $AdminPage = false) {global $link, $game_config, $debug, $user, $plaNETrow;if (!$AdminPage) {$DisplayPage = StdUserHeader ($title, $metatags);} else {$DisplayPage = AdminUserHeader ($title, $metatags);}if ($topnav) {$DisplayPage .= ShowTopNavigationBar( $user, $plaNETrow );}$DisplayPage .= "<center>/n". $page ."/n</center>/n";// Affichage du Debug si necessaireif ($user['authlevel'] == 1 || $user['authlevel'] == 3) {if ($game_config['debug'] == 1) $debug->echo_log();}$DisplayPage .= StdFooter();if (isset($link)) {@mysql_close($link);}echo $DisplayPage;die();} 

函數的功能是顯示普通用戶頁眉和管理員頁眉的區分,是否顯示頂部的信息欄等,此函數中還調用了其他函數,如:StdUserHeader()、AdminUserHeader()、ShowTopNavigationBar()和 StdFooter()都不復雜,其實現都是前面介紹過的 parsetempalte()和gettemplate(),這里就不詳細說明了。

php技術PHP網頁游戲學習之Xnova(ogame)源碼解讀(二),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 泡妞高手在都市免费观看 | 日本视频一区二区免费观看 | 国产精品v欧美精品v日韩 | 色哦色哦哦色天天综合 | 国产午夜永久福利视频在线观看 | 国产AV99激情久久无码天堂 | 68日本xxxxxxxx79| 国产不卡一卡2卡三卡4卡网站 | 成人a视频片在线观看免费 成人a毛片久久免费播放 | 教室眠催白丝美女校花 | 欧美另类摘花hd | 激情床戏视频片段有叫声 | 女性私密五月天 | 女人爽到高潮嗷嗷叫视频 | 国产精品伦理一二三区伦理 | 久久免费看少妇高潮A片JA | 国产亚洲精品视频亚洲香蕉视 | 538在线视频一区二区视视频 | 97久久精品人人槡人妻人 | 欧洲内射XXX高清 | 亚洲AV久久无码精品九号 | 含羞草免费完整视频在线观看 | 亚洲精品AV一二三区无码 | 超碰免费视频在线观看 | 被老总按在办公桌吸奶头 | 久久re热在线视频精6 | 如懿传免费观看在线全集 | 野花日本高清在线观看免费吗 | 三级电影免费看 | 精品久久久久中文字幕日本 | 国产成人无码精品久久久影院 | 亚洲人女同志video | 亚洲精品6久久久久中文字幕 | 天美传媒在线观看完整高清 | 日本全彩黄漫无遮挡 | 日产精品久久久久久久蜜殿 | 黑人巨大交牲老太 | 国产亚洲人成网站在线观看播放 | a视频免费看 | 国产精品单位女同事在线 | videos gratis欧美另类 |