PHP框架之ThinkPHP的学习总结(2)ThinkPHP + Discuz 整合方法

ThinkPHP + Discuz 整合方法
以下是Discuz6的整合方法,discuz5请按照里面的说明进行相应的修改,也可以使用了。


1.在项目的action目录下信件PublicAction.class.php。这样写:
代码: 复制内容到剪贴板
class PublicAction extends Action


{


    function login()


    {


     $this->display();


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


            $this->display();


            return ;


        }else {


            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="刷 新" οnclick="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.现在可以进行分组操作了。


更多详细内容请查看:http://www.111cn.net/phper/122/bda6d2a5cff6b9fc89d61f2d83a06d2d.htm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值