<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    common.inc.php文件111-149行代碼分析

    PHPCMS['enablebanip'] && ip_banned($PHP_IP)) showmessage($LANG['administrator_banned_this_IP']);
    /**
    $PHPCMS['enablebanip'] 是什么.不用說應(yīng)該知道了吧.這個就是后臺里面設(shè)置是否開啟過濾IP訪問的功能.(因?yàn)槲覜]用過phpcms,我是按照代碼猜的,不對的請指出)從這里就看出了文本緩存也有他的作用的。 ip_banned()函數(shù)是什么呢.上菜再說:
    function ip_banned($ip)
    {
    global $PHP_TIME; //前面定義過的.當(dāng)前的時間
    $ipbanneds = cache_read('banip.php');
    if(!is_array($ipbanneds)) return FALSE;
    foreach($ipbanneds as $v)
    {
    if($v['overtime'] < $PHP_TIME) return FALSE;
    if($ip == $v['ip'] || preg_match("/^".str_replace('.', '[.]', $v['ip'])."$/", $ip)) return TRUE;
    }
    }
    里面也用到了 cache_read() 這個函數(shù),還是讀banip.php 這個文件.banip.php這個文件里面存著你在后臺甚至的要過濾的IP列表.
    里面的邏輯比較簡單.自己消化下了.不明白跟帖問
    showmessage() 函數(shù)是提示出錯信息封裝好的一個函數(shù). 國家化的 $LANG['administrator_banned_this_IP']這個看到了吧.這個就是讀語言包里面的.這樣我們就可以出好多個語言版本的程序拉.
    */
    $TEMP = $MOD = $CHA = $CATEGORY = $CAT = array();
    $ftp = $enableftp = $tags = $html = 0;
    /**
    初始化變量.這個是好習(xí)慣我們要模仿.
    */
    if(!isset($mod))
    {
    $mod = 'phpcms'; //phpcms 是默認(rèn)加載的模塊
    }
    elseif($mod != 'phpcms')
    {
    isset($MODULE[$mod]) or exit($LANG['module_not_exists']); // 從緩存中讀加載的模塊是否開啟
    /**
    這個寫法,我十分喜歡,平時也用. xx && dd ; xx and dd ;與運(yùn)算要同時兩邊都為真整個公式才為真,就是利用這個原理. ; xx || dd ; xx or dd 或運(yùn)算只要一個條件滿足就不會執(zhí)行下一個條件而繼續(xù)執(zhí)行下去. 這樣寫是不是很酷.  
    */
    $MOD = cache_read($mod.'_setting.php'); //開始加載這個模塊的一些常用配置數(shù)值。 phpcms 對應(yīng)的每個模塊都有一個緩存配置文件。@@ 怪不得速度那么快
    @include PHPCMS_ROOT.'/languages/'.(defined('IN_ADMIN') ? $CONFIG['adminlanguage'].'/'.$mod.'_admin.lang.php' : $CONFIG['language'].'/'.$mod.'.lang.php');
    /**
    加載想對應(yīng)的模塊語言包.
    */
    }
    if(!isset($forward)) $forward = $PHP_REFERER; //記錄前一個URL地址。估計以后下面程序有需要用這個變量
    $dosubmit = isset($dosubmit) ? 1 : 0; //記錄是否有表單提交過.也是以后有用
    $channelid = isset($channelid) ? intval($channelid) : 0; //記錄當(dāng)前頻道的id 如果$channelid 沒有 isset 那么就為 0. intval() 十分有用。數(shù)字和數(shù)字的比較加減速度會快很多。記得哦
    $skindir = PHPCMS_PATH.'templates/'.$CONFIG['defaulttemplate'].'/skins/'.$CONFIG['defaultskin']; //加載默認(rèn)phpcms皮膚
    if($PHPCMS['enablegzip'] && function_exists('ob_gzhandler'))
    {
    ($CONFIG['phpcache'] || defined('SHOWJS')) ? ob_start() : ob_start('ob_gzhandler');
    }
    else
    {
    $PHPCMS['enablegzip'] = 0;
    ob_start();
    }
    /**
    $PHPCMS['enablegzip'] 這個變量就是存在于 phpcms_setting.php 文件里。上面已經(jīng)說過了。每個模塊都有相對應(yīng)的模塊配置緩存文件(是從數(shù)據(jù)庫copy過來的信息) 這個變量標(biāo)致 是否開啟 壓縮傳輸。
    壓縮傳輸,聽名字就知道。就是把數(shù)據(jù)按照一定的算法壓縮小羅。然后再傳送到客戶端。這樣就可以在有限的帶寬中傳輸更大的數(shù)據(jù)拉。當(dāng)然速度快了不少。壓縮的數(shù)據(jù)到了你的瀏覽器,它就自動解壓縮,老版本的一些瀏覽器不支持解壓縮哦。不過現(xiàn)在還有誰用很久的瀏覽器呢。用法很簡單的:看上面就知道:
    首先判斷下,看客戶老大們是否在后臺選擇了這個模塊的壓縮傳輸(如果是的話。自然的已經(jīng)加載到了相對應(yīng)的文本緩存文件里面拉) 標(biāo)致:$PHPCMS['enablegzip'] 和 判斷 回調(diào)函數(shù) ob_gzhandler 是否開啟, ob_gzhandler 其實(shí)不算是個函數(shù)。看手冊說明。 就這么簡單。它只是一個專門給 ob_start() 做回調(diào)使用的一個參數(shù)函數(shù)。詳細(xì)請看下手冊。別偷懶哦,在程序開頭ob_start('ob_gzhandler')就算是開始壓縮傳輸了;判斷完了 如果為真。就繼續(xù)下面的代碼:

    ($CONFIG['phpcache'] || defined('SHOWJS')) ? ob_start() : ob_start('ob_gzhandler');
    看代碼phpcms 是這樣的: 如果用戶在后臺開啟了壓縮傳輸。而用戶又開啟了 頁面緩存。那么就默認(rèn)不使用壓縮傳輸了。我也不知道為什么這樣設(shè)計。我測試了下。后臺開啟壓縮傳輸。又同時又使用頁面緩存。沒發(fā)現(xiàn)有什么問題。@@
    如果沒開啟壓縮傳輸,那么我們就ob_start(); 使用session 之前必須要 ob_start() ; 而且在ob_start() 之前不能有任何的 頭文件發(fā)送和輸出。比如:echo header等要不會出錯的哦。
    */
    $_userid = 0;
    $_username = '';
    $_groupid = 3;
    $_arrgroupid = array();
    $phpcms_auth = getcookie('auth');
    /**
    $_userid,$_username,$_groupid 這幾個記錄用戶信息的變量初始化,不初始化危險就太大了。@@ 如果給人家$_GET一個 _userid 變量過來。那么就會把我們這個變量覆蓋。但是我們?nèi)绻o這幾個變量一個值,
    那么按照就近原則。就算你GET個變量過來。你也一樣改不了我原來的變量值。大家好好自己想下。就會明白了。
    getcookie() 這個自定義函數(shù)在 global.func.php文件里定義的。上菜:
    function getcookie($var)
    {
    global $CONFIG;
    $var = $CONFIG['cookiepre'].$var;
    return isset($_COOKIE[$var]) ? $_COOKIE[$var] : FALSE;
    }
    這個函數(shù)用來提取我們設(shè)置的cookie 值. $CONFIG['cookiepre'] 在 config.inc.php 文件里面設(shè)置,cookie 名的前綴. 函數(shù)很簡單。一看就明白不說了。
    */
    if($phpcms_auth)
    {
    $phpcms_auth_key = md5($PHPCMS['authkey'].$_SERVER['HTTP_USER_AGENT']);
    list($_userid, $_password, $_answer) = $phpcms_auth ? explode("\t", phpcms_auth($phpcms_auth, 'DECODE')) : array(0, '', '');
    /**

    posted on 2008-12-19 01:29 丁克設(shè)計 閱讀(251) 評論(0)  編輯  收藏 所屬分類: PHPCMS整站代碼講解

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    留言簿(6)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 成人性生活免费视频| 最新亚洲卡一卡二卡三新区| 久久亚洲AV成人无码国产最大| 国产午夜成人免费看片无遮挡 | 亚洲人成中文字幕在线观看| 亚洲AV永久无码天堂影院| 又大又硬又爽又粗又快的视频免费| 免费一级毛片不卡在线播放| 亚洲精品GV天堂无码男同| 无码专区永久免费AV网站| 亚洲日本人成中文字幕| 国产成人精品免费午夜app| 成人片黄网站色大片免费观看cn| 国产做床爱无遮挡免费视频| 亚洲欧美成aⅴ人在线观看| 成全视频免费高清| 亚洲乱码无人区卡1卡2卡3| 青青草国产免费久久久下载| 亚洲婷婷在线视频| 麻豆国产VA免费精品高清在线| 亚洲色大成网站www永久网站| 日韩毛片免费在线观看| 久久精品国产亚洲av品善| 免费一级毛片女人图片| 中文字幕手机在线免费看电影| 久久亚洲精品国产精品黑人| 在线看无码的免费网站| 处破女第一次亚洲18分钟| 日韩亚洲人成在线综合| 免费一级毛片在线播放视频免费观看永久| 亚洲码欧美码一区二区三区| 精品久久久久久亚洲综合网| 你是我的城池营垒免费看| 中文字幕无码免费久久9一区9| 午夜影院免费观看| 日本免费v片一二三区| 亚洲综合色自拍一区| 老司机亚洲精品影院| 综合一区自拍亚洲综合图区| 久久免费线看线看| 日韩中文字幕免费|