ThinkPHP + Discuz 整合方法

ThinkPHP + Discuz 整合方法
如下是Discuz6的整合方法,discuz5請按照裏面的說明進行相應的修改,也可使用了。php

1.在項目的action目錄下信件PublicAction.class.php。這樣寫:
代碼: 複製內容到剪貼板
class PublicAction extends Actionhtml

{安全

    function login()session

    {函數

     $this->display();post

          if(!isset($_SESSIONC('USER_AUTH_KEY'))||$_SESSIONC('USER_AUTH_KEY')==0) {ui

            $this->display();this

            return ;加密

        }else {spa

            redirect(__APP__);

       }

    }

function index()

{

  //若是經過認證跳轉到首頁

  redirect(__APP__);

}

    function checkLogin()

    {

  // 這裏使用用戶名、密碼和狀態的方式進行認證。這裏是discuz6.1,discuz5的加密方式不同。用discuz5的話你須要修改下面這一句。

//注意!!!這裏直接把$_POST['name']和$_POST['password']放到查詢語句中是不安全的。請先進行處理!我是本身處理的,這裏沒有貼。我在找ThinkPHP中的處理函數,尚未找到。

  $authInfo = RBAC::authenticate("`username`='".$_POST['name']."' AND `password` = md5(concat(md5('".$_POST['password']."'),`salt`))");

  if(false === $authInfo) {

   echo '登陸失敗,請檢查用戶名和密碼是否有誤!';

  }else {

   // 設置認證識別號

   session_register(C('USER_AUTH_KEY'));

   session_register('loginid');

   $_SESSION[C('USER_AUTH_KEY')] = $authInfo["uid"]; // 這裏用戶表的id字段

   $_SESSION["loginid"] = $authInfo["username"];// 這裏用戶表的用戶名字段

   //獲取並保存用戶訪問權限列表

   RBAC::saveAccessList();

   dump($_SESSION);

   echo strtoupper(APP_NAME)." ".strtoupper(MODULE_NAME)." ".strtoupper(ACTION_NAME);

  }

    }

}
2.而後在模板中新增登錄模板,路徑爲Tpl/default/Public/Login.html這裏把官方教程中的模板貼出來,省的再去找了:
代碼: 複製內容到剪貼板
<body>

<form method=post name="login" id="form1" action="__URL__/checkLogin">

<div class="tcenter hmargin">

<table id="checklist" class="login shadow" cellpadding=0 cellspacing=0 >

<tr><td height="5" colspan="2" class="toptd" ></td></tr>

<tr class="row" ><th colspan="2" class="tcenter space">  系統管理登陸  </th></tr>

<tr><td height="5" colspan="2" class="toptd" ></td></tr>

<tr class="row" ><td colspan="2" class="tcenter"><div id="result" class="result none"></div></td></tr>

<tr class="row" ><td class="tright" width="25%">賬 號:</td><td><input type="text" class="medium bleftrequire" check="require" warning="請輸入賬號" name="name"></td></tr>

<tr class="row" ><td class="tright">密 碼:</td><td><input type="password" class="medium bleftrequire" check="require" warning="請輸入密碼" name="password"></td></tr>

<tr class="row" ><td class="tcenter" align="justify" colspan="2">

<input type="button" value="刷 新" onclick="fleshverify()" class="submit small"><input type="submit" value="登 錄" class="submit small hmargin">

<input type="reset" value="重 置" class="submit small">

</td></tr>

<tr><td height="5" colspan="2" class="bottomtd" ></td></tr>

</table>

</div>

</form>

</body>
3.在Model目錄中新增一個UserModel.class.php
代碼以下:
代碼: 複製內容到剪貼板
class UserModel extends Model

{

protected $trueTableName = 'uc_members';//這裏是ucenter的用戶表的表名。若是你在uc中修改了前綴,就把表名的uc部分修改爲本身的。

 

}
4.能夠了進行登陸了。就這些。昨天看ThinkPHP的文檔看了一成天。TP不是通常的強大啊。我的感受比FLEAPHP強不少。

若是你使用的是discuz5版本,因爲沒有ucenter,須要修改兩個部分。
一是 PublicAction.class.php中的
$authInfo = RBAC::authenticate("`username`='".$_POST['name']."' AND `password` = md5(concat(md5('".$_POST['password']."'),`salt`))");
二是 UserModel.class.php 中的'uc_members'改爲相應數據表。


5. 下載RBAC。
在使用中除了上面的還不夠。還要進行RBAC賦權的操做。這裏你須要下載一個官方的RBAC示例,推薦放在和你的程序平級的目錄。

6.修改RBAC
Model下的UserModel.class.php內容是下面的代碼。這個和前面的UserModel.class.php一致。能夠直接複製過來
代碼: 複製內容到剪貼板
class UserModel extends Model

{

var $trueTableName='uc_members';

}
還要修改GroupAction.class.php中的function user()
代碼以下:
代碼: 複製內容到剪貼板
function user()

    {

        //讀取系統的用戶列表

  //如下三句請根據實際狀況進行修改

        $userDao    =   D("User");

        $list  = $userDao->findAll('','uid,username');//咱們修改了這裏

        $userList = $userDao->getCols($list,'uid,username');//還有這裏,其餘的不要動了。

  $groupDao    =   D("Group");

        $list   =  $groupDao->findAll('','id,name');

        $groupList = $groupDao->getCols($list,'id,name');

  $this->assign("groupList",$groupList);

        //獲取當前用戶組信息

        $groupId =  isset($_GET['id'])?$_GET['id']:'';

  $groupUserList = array();

  if(!empty($groupId)) {

   $this->assign("selectGroupId",$groupId);

   //獲取當前組的用戶列表

            $list = $groupDao->getGroupUserList($groupId);

            $groupUserList = $groupDao->getCols($list,'id,id');

               

  }

        //$userList = array_diff_key($userList,$groupUserList);

  $this->assign('groupUserList',$groupUserList);

        $this->assign('userList',$userList);

        $this->display();

        return;

    }
7.如今能夠進行分組操做了。

相關文章
相關標籤/搜索