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

    ($CONFIG['phpcache'] || defined('SHOWJS')) ? ob_start() : ob_start('ob_gzhandler');
    看代碼phpcms 是這樣的: 如果用戶在后臺開啟了壓縮傳輸。而用戶又開啟了 頁面緩存。那么就默認不使用壓縮傳輸了。我也不知道為什么這樣設計。我測試了下。后臺開啟壓縮傳輸。又同時又使用頁面緩存。沒發現有什么問題。@@
    如果沒開啟壓縮傳輸,那么我們就ob_start(); 使用session 之前必須要 ob_start() ; 而且在ob_start() 之前不能有任何的 頭文件發送和輸出。比如:echo header等要不會出錯的哦。
    */
    $_userid = 0;
    $_username = '';
    $_groupid = 3;
    $_arrgroupid = array();
    $phpcms_auth = getcookie('auth');
    /**
    $_userid,$_username,$_groupid 這幾個記錄用戶信息的變量初始化,不初始化危險就太大了。@@ 如果給人家$_GET一個 _userid 變量過來。那么就會把我們這個變量覆蓋。但是我們如果給這幾個變量一個值,
    那么按照就近原則。就算你GET個變量過來。你也一樣改不了我原來的變量值。大家好好自己想下。就會明白了。
    getcookie() 這個自定義函數在 global.func.php文件里定義的。上菜:
    function getcookie($var)
    {
    global $CONFIG;
    $var = $CONFIG['cookiepre'].$var;
    return isset($_COOKIE[$var]) ? $_COOKIE[$var] : FALSE;
    }
    這個函數用來提取我們設置的cookie 值. $CONFIG['cookiepre'] 在 config.inc.php 文件里面設置,cookie 名的前綴. 函數很簡單。一看就明白不說了。
    */
    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 丁克設計 閱讀(251) 評論(0)  編輯  收藏 所屬分類: PHPCMS整站代碼講解

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

    導航

    留言簿(6)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲AV美女一区二区三区| 无遮挡免费一区二区三区| 亚洲视频免费观看| 亚洲精品高清国产一久久| 好紧我太爽了视频免费国产| 久久久久亚洲精品天堂久久久久久 | 亚洲AV无码资源在线观看| 午夜视频免费成人| 亚洲色精品三区二区一区| 岛国大片免费在线观看| 亚洲狠狠色丁香婷婷综合| 在线jyzzjyzz免费视频| 国产亚洲一卡2卡3卡4卡新区| 国产日产成人免费视频在线观看| 亚洲av日韩av永久在线观看| 免费国产a国产片高清| 成人久久久观看免费毛片| 中文字幕日韩亚洲| 国产在线精品观看免费观看| 亚洲成AV人片在线观看无码| 久久一本岛在免费线观看2020| 亚洲综合成人网在线观看| 最近免费中文在线视频| 精品久久亚洲中文无码| 欧洲精品免费一区二区三区| 美景之屋4在线未删减免费| 在线观看亚洲成人| 久章草在线精品视频免费观看| 久久亚洲AV成人无码软件| 日本精品人妻无码免费大全| 欧美亚洲精品一区二区| 亚洲人成无码网站久久99热国产| a毛片全部播放免费视频完整18| 亚洲一二成人精品区| 久久久久久久91精品免费观看| 亚洲精品久久无码av片俺去也| 亚洲 小说区 图片区 都市| 中文字幕不卡高清免费| 亚洲美女视频网站| 麻豆国产精品入口免费观看| 一级毛片免费播放视频|