最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

discuz Passport 通行證 整合筆記

 更新時間:2008年06月30日 09:10:28   作者:  
上次整合discuz的passport,覺得簡單,就沒記下來,今天移動bbs的位置,以前整合的不能用,如何不用passport登陸論壇?!
太簡單了,但時間長了,記不得,浪費我半小時找資料,深刻體會好記性不如爛筆頭??!今天把passport文擋貼上,防止以后忘記?。∮涀。W(wǎng)上找到自己需要的資料也要耗時間的!!!!!!


Passport 通行證 整合

第一篇:整合原理

請注意: 整合不成功可能造成的后果-----dz論壇無法登錄,無法管理
解決辦法:
第一步: 到dz的數(shù)據(jù)庫表cdb_settings 找到下面這幾行修改為
setting.gif (4.3 KB)
2006-9-30 13:59

第二步: 刪除dz安裝目錄/forumdata/cache/cache_settings.php
第三步: 重新訪問論壇



登陸和注冊整合流程
用戶從登陸或注冊表單提交帳號密碼信息 ==>
主站程序檢驗用戶登陸或注冊,成功(注冊需要生成新用戶)則 ==>
設(shè)置主站自身的cookie或session    ==>
url傳遞 返回地址forward和編碼后的用戶信息和其他信息 到dz/api/passport.php


整合之前請先仔細閱讀官方passport技術(shù)文檔: http://www.discuz.net/usersguide/advanced_passport.htm
復(fù)制內(nèi)容到剪貼板
代碼:
<?php
//該文檔保存為login.php
//首先將接口技術(shù)文檔里的加密解密函數(shù)拷貝
//為了不讓代碼太亂,我拷貝到文檔的結(jié)尾處
//假設(shè)自己的用戶數(shù)據(jù)庫表里用戶名字段為UserName, 密碼字段為Pwd, Email字段為 Email
//注冊頁實現(xiàn)方法差不多,可自行實現(xiàn),疑問加我QQ:2666556

$act=(isset($_GET['act']))?$_GET['act']:"login";
if(function_exists($act)) $act();else login();        

function login()
{        
        $ErrMsg=UserCheck();
        if($ErrMsg!="")echo $ErrMsg;        
        //后面加上顯示你的登陸表單的代碼 如
?>
<form action=login.php?act=login method=post>
用戶名:<input name=username>
密碼:<input name=password>
<input name=submit type=submit value=登陸></form>
<?php

}//end function

function logout()//登出
{
        $passportkey="1234567890";//這里換成你論壇通行證設(shè)置的passportkey
        $auth=$_COOKIE['auth'];
        setcookie("auth", "",time() - 3600);
        $forward=$_GET['forward'];
        if($forward=="")$forward="../../index.php";//這里換成你的主頁絕對地址或相對地址                                       
        $verify = md5('logout'.$auth.$forward.$passportkey);
        $auth=rawurlencode($auth);
        $forward=rawurlencode($forward);
        header("Location: bbs/api/passport.php?action=logout&auth=$auth&forward=$forward&verify=$verify");
}

function UserCheck()
{        
        $passportkey="1234567890";//這里換成你論壇通行證設(shè)置的passportkey

        //===========驗證輸入=====================
        if(!isset($_POST['submit'])) return; // login表單的按鈕需要與此同名
        $usnm=$_POST['username'];//username換成你登陸表單里的用戶名域                        
        $pwd=$_POST['password'];//password換成你登陸表單里的密碼域                        
        if($usnm=="") return "請輸入用戶名!";
        if($pwd=="") return "請輸入密碼!";

        //=========數(shù)據(jù)庫處理==========================
        $db=mysql_connect("localhost", "root", "");
        mysql_select_db("your_db_name");
$sql="Select * from `user` where UserName='".$usnm."' Limit 1";        
        $rs = mysql_query($sql,$db)        ;
        $row = mysql_fetch_array($rs);
        if(!$row)return "該用戶不存在";
        if($row["Pwd"]!=md5($pwd))return "密碼錯誤";
        mysql_free_result($rs);        

        //==============header到bbs=====================        
        $member = array
        (
                        'time'     => time(),
                        'username' => $row["UserName"],
                        'password' => $row["Pwd"],
                        'email'    => $row["Email"]
        );
        $auth = passport_encrypt(passport_encode($member), $passportkey);
        setcookie("auth",$auth,($_POST["Cookie"]? time()+(int)$_POST["Cookie"] :0));
        $forward=$_POST['forward'];
        if($forward=="")$forward="../../index.php";                                       
        $verify = md5('login'.$auth.$forward.$passportkey);
        $auth=rawurlencode($auth);
        $forward=rawurlencode($forward);
        header("Location: bbs/api/passport.php?action=login&auth=$auth&forward=$forward&verify=$verify");                        

}


//=============================================================
//=============以下為拷貝過來的函數(shù)============================
function passport_encrypt($txt, $key) {
        srand((double)microtime() * 1000000);
        $encrypt_key = md5(rand(0, 32000));        
        $ctr = 0;
        $tmp = '';
        for($i = 0; $i < strlen($txt); $i++) {
                        $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
                        $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);
        }
        return base64_encode(passport_key($tmp, $key));
}

function passport_decrypt($txt, $key) {
        $txt = passport_key(base64_decode($txt), $key);
        $tmp = '';
        for ($i = 0; $i < strlen($txt); $i++) {
                 $tmp .= $txt[$i] ^ $txt[++$i];
        }
        return $tmp;
}

function passport_key($txt, $encrypt_key) {
        $encrypt_key = md5($encrypt_key);
        $ctr = 0;
        $tmp = '';
        for($i = 0; $i < strlen($txt); $i++) {
                        $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
                        $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
        }
        return $tmp;
}

function passport_encode($array) {
        $arrayenc = array();
        foreach($array as $key => $val) {
                   $arrayenc[] = $key.'='.urlencode($val);
        }
        return implode('&', $arrayenc);

}
//=========================================================================
//===========================拷貝結(jié)束======================================
?>

相關(guān)文章

  • PHP mysqli事務(wù)操作常用方法分析

    PHP mysqli事務(wù)操作常用方法分析

    這篇文章主要介紹了PHP mysqli事務(wù)操作常用方法,結(jié)合實例形式分析了php操作mysqli事務(wù)的打開、提交、執(zhí)行、回退、關(guān)閉等實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • php自動注冊登錄驗證機制實現(xiàn)代碼

    php自動注冊登錄驗證機制實現(xiàn)代碼

    在phpwind站點后臺添加一個名為“廣告管家”(廣告管家為CNZZ的一款廣告投放的應(yīng)用)的應(yīng)用,整個“廣告管家”的應(yīng)用是通過iframe載入,載入的具體內(nèi)容根據(jù)不同站點顯示針對該站點的具體內(nèi)容
    2011-12-12
  • PHP Parser 掃描應(yīng)用打印輸出結(jié)構(gòu)語句實例

    PHP Parser 掃描應(yīng)用打印輸出結(jié)構(gòu)語句實例

    這篇文章主要為大家介紹了PHP Parser 掃描應(yīng)用打印輸出結(jié)構(gòu)語句實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • wamp服務(wù)器訪問php非常緩慢的解決過程

    wamp服務(wù)器訪問php非常緩慢的解決過程

    這篇文章主要介紹了wamp服務(wù)器訪問php非常緩慢的解決過程,十分的簡單實用,有需要的小伙伴可以參考下。
    2015-07-07
  • php設(shè)計模式 Decorator(裝飾模式)

    php設(shè)計模式 Decorator(裝飾模式)

    動態(tài)的給一個對象添加一些額外的職責,就擴展功能而言比生成子類方式更為靈活
    2011-06-06
  • PHP extract 將數(shù)組拆分成多個變量的函數(shù)

    PHP extract 將數(shù)組拆分成多個變量的函數(shù)

    extract()函數(shù)提取關(guān)聯(lián)數(shù)組(對數(shù)字索引數(shù)組無效)每對key和value,生成以key為變量名、value為對應(yīng)值的多組新變量。
    2010-06-06
  • php短址轉(zhuǎn)換實現(xiàn)方法

    php短址轉(zhuǎn)換實現(xiàn)方法

    這篇文章主要介紹了php短址轉(zhuǎn)換實現(xiàn)方法,涉及網(wǎng)址及字符串的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 淺談Laravel中如何對大文件進行加密

    淺談Laravel中如何對大文件進行加密

    在Laravel項目中,用戶可以上傳任何大小的文件,出于安全目的,需要對這些文件進行靜態(tài)加密。Laravel提供encryption, 但它們主要用于加密值。 使用encrypt助手方法對像圖像文件進行加密可以很好地工作,文件內(nèi)容需要加載到內(nèi)存中,對于大文件來說是個問題。
    2021-05-05
  • 判斷是否為指定長度內(nèi)字符串的php函數(shù)

    判斷是否為指定長度內(nèi)字符串的php函數(shù)

    判斷是否為指定長度內(nèi)字符串
    2010-02-02
  • php filter協(xié)議使用方法

    php filter協(xié)議使用方法

    php://filter是一種設(shè)計用來允許過濾器程序在打開時成為流的封裝協(xié)議。這對于單獨具有完整功能的文件函數(shù)非常有用,否則就沒有機會在讀取內(nèi)容之前將過濾器應(yīng)用于流之上
    2022-12-12

最新評論

巩义市| 林甸县| 富平县| 宜川县| 内乡县| 买车| 双桥区| 洮南市| 平江县| 晋城| 桐乡市| 鹤庆县| 临潭县| 白山市| 呼玛县| 定陶县| 布拖县| 绿春县| 吉隆县| 开远市| 泽库县| 仁布县| 嵩明县| 德格县| 炎陵县| 博兴县| 宿松县| 东宁县| 西青区| 武威市| 大邑县| 阳信县| 徐州市| 宁阳县| 陈巴尔虎旗| 平南县| 龙井市| 红河县| 平泉县| 津市市| 湾仔区|