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

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

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

    common.inc.php文件150-174行代碼分析

    戶大家自己試下。 意會下
    phpcms_auth() 是加密和解密 函數, 因為cookie 是存在于客戶端。十分危險呀。 你看連用戶的密碼也存在cookie 不加密能行嗎。但是呢加密后又要能解密。因為用戶名和用戶密碼我們往下操作要
    獲取的。 這個函數存在于 global.func.php 文件里面。大家想了解這個算法的自己去看下吧。挺簡單的。 其實就是圍繞著 $phpcms_auth_key 這個變量來加密解密和discuz 的cookie 機制差不。
    $phpcms_auth_key = md5($PHPCMS['authkey'].$_SERVER['HTTP_USER_AGENT']); 看$PHPCMS['authkey'],估計后臺有個 cookie 加密值讓你填,然后以這個值和 $_SERVER['HTTP_USER_AGENT'](系統信息)
    */
    $_userid = intval($_userid);
    if($_userid < 0) $_userid = 0; //讀出的cookie 的用戶id 如果是 小于0
    if($_userid) //如果 cookie 保存的這個uid 存在,那么開始按照這個ID來查數據庫用戶表 來取出用戶信息
    {
    $memberinfo = $db->get_one("SELECT username,password,groupid,arrgroupid,email,chargetype,begindate,enddate,money,point,credit,newmessages FROM ".TABLE_MEMBER." WHERE userid=$_userid LIMIT 0,1");
    /**
    phpcms 封裝好的數據庫類,下篇開講這個大家就大概看行了。 大家看下 select sql語句。 也可以學習下。 首先最好不要使用 select * from xx 的 * 形式,除非你想獲取所有字段的記錄。只羅列你要的字段。這樣在數據量大的查詢中。速度明顯上去。 常量: TABLE_MEMBER 定義了表名。這樣做有什么好處呢?想都知道了,為了以后變更表名方便而定義為常量。這個東西那里來的。估計在一個文件里面定義好的。遇到了再講吧懶得找了。
    */
    if($memberinfo && $memberinfo['password'] == $_password) //用查詢出來的密碼和 cookie 中存在的密碼想對比.為了在效率: 在比較前 先判斷查詢是否成功先。很多phper往往忽略。
    {
    if($memberinfo['groupid'] == 2) //如果用戶屬于的組的ID 為 2 那么這個用戶是被管理員禁止訪問的了。
    {
    mkcookie('auth', ''); // 清除cookie
    showmessage($LANG['userid_banned_by_administrator']); //提示出錯菜單
    }
    @extract($memberinfo, EXTR_PREFIX_ALL, ''); //又來這招,應該明白了吧各位老大:把字段 變成 我們能直接使用的變量
    unset($memberinfo, $_password, $_answer);
    $_arrgroupid = $_arrgroupid ? array_filter(explode(',', $_arrgroupid)) : array(); //把 字段為 arrgroupid 值為 FALSE 過濾掉。array_filter()不帶回調參數的用法,請看手冊。
    }
    else
    {
    mkcookie('auth', '');
    }
    /**
    經過上面的讀cookie 和查數據庫用戶信息后。當確定這個用戶信息是合法以后。就會自動登陸了。比如phpchina論壇。當你登陸后沒注銷。下次訪問的時候還是登陸狀態。就是這個原理。記得模仿哦
    這里詳細解釋下 mkcookie ()函數 上菜:
    function mkcookie($var, $value = '', $time = 0)
    {
    global $CONFIG,$PHP_TIME;
    $time = $time > 0 ? $time : (empty($value) ? $PHP_TIME - 3600 : 0);
    $s = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0;
    $var = $CONFIG['cookiepre'].$var;
    return setcookie($var, $value, $time, $CONFIG['cookiepath'], $CONFIG['cookiedomain'], $s);
    }
    $time 為cookie 的存活時間: 如果為 0 就是關閉瀏覽器 cookie 就自動失效 , $PHP_TIME 在前面定義了:當前時間。 $PHP_TIME -3600 減去3600秒。就是一個小時前的意思,那肯定是設置cookie 失效的意思了。
    $s 變量是 獲取 是否開啟SSL安全傳輸的標致。 cookie 有一個參數是ssl傳輸的。如果服務器已經opensll 了那么我們肯定不能浪費這么好的安全資源了。
    $var cookie名的前綴,主要防止混淆。
    $CONFIG['cookiedomain'] 這個家伙在 config.inc.php里面已經配置的了。定義為: '/' 意思就是說 在當前域 的所有目錄的PHP程序都能訪問這個COOKIE ,還有限制目錄訪問COOKIE 的弄法。具體請看 setcookie () 函數手冊上說明。
    */

    }
    }
    unset($db_class, $db_file, $phpcms_auth, $phpcms_auth_key, $memberinfo);

    下章我就分析 PHPCMS 的數據庫操作類文件和 PHPCMS的文本緩存機制. 希望大家繼續支持哦第一

    posted on 2008-12-26 00:03 丁克設計 閱讀(378) 評論(0)  編輯  收藏 所屬分類: PHPCMS整站代碼講解

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

    導航

    留言簿(6)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 国产精品亚洲A∨天堂不卡| 最好免费观看韩国+日本| 亚洲国产电影av在线网址| 亚洲av无码专区在线电影天堂| 999国内精品永久免费视频| 亚洲ts人妖网站| 18禁成年无码免费网站无遮挡 | 久草免费手机视频| 亚洲成Av人片乱码色午夜| 在线观看免费视频网站色| 黑人精品videos亚洲人| 色欲A∨无码蜜臀AV免费播| 自怕偷自怕亚洲精品| 日本XXX黄区免费看| 亚洲AⅤ男人的天堂在线观看| 午夜亚洲av永久无码精品| 十八禁的黄污污免费网站| 最新亚洲成av人免费看| 久久国产乱子伦精品免费一| 亚洲免费视频网址| 国产成人免费手机在线观看视频 | 成人午夜免费福利视频| 天天爽亚洲中文字幕| 国产麻豆免费观看91| 一个人免费观看视频在线中文| 国产亚洲成av人片在线观看| 95免费观看体验区视频| 亚洲精品国产摄像头| 国产亚洲视频在线播放| 中国xxxxx高清免费看视频| 亚洲另类无码专区首页| 亚洲欭美日韩颜射在线二| 69式互添免费视频| 免费亚洲视频在线观看| 亚洲欧洲第一a在线观看| 在线观看免费a∨网站| 国产又黄又爽胸又大免费视频| 亚洲国产成人九九综合| 久久精品国产精品亚洲艾草网美妙 | 亚洲国产精品日韩专区AV| 久久综合给合久久国产免费|