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

ThinkPHP + Discuz 整合方法的更多相关文章

  1. 织梦系统与discuz论坛整合方法

    如何完成dedecms模板系统与discuz论坛整合呢? 这里的整合指会员信息,会员登陆.退出的同步:论坛信息的引用:等等. 首先,我们先来安装织梦(dedecms)系统. 然后,我们在网站根目录下建 ...

  2. ThinkPHP框架整合phpqrcode生成二维码DEMO

    ThinkPHP框架发展到今天功能已经变得是非常强大了,但是ThinkPHP框架中没有二维码相关的库,因此我们可以通过整合phpqrcode来完成生成二维码的功能.想使用phpqrcode首先就要把p ...

  3. spring与mybatis三种整合方法

    spring与mybatis三种整合方法 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接 http://code.googl ...

  4. ThinkPHP的field方法的用法总结

    ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段,下面详细道来. .用于查询 在查询操作中field方法是使用最频繁的. $Model- ...

  5. thinkphp的field方法的用法

    ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段. 1.用于查询 在查询操作中field方法是使用最频繁的. $Model->fi ...

  6. 2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程

    2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程 所有项目均带有软件,笔记,视频,源码 日期   课程(空内容代表放假) 2015/7/10 星期五 开学典礼 ...

  7. thinkphp中field方法

    hinkPHP的CURD操作中有很多非常实用的方法,从这篇开始,我们会为大家一一介绍. 首先为大家介绍下field方法的用法.field属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段, ...

  8. thinkphp中limit方法

    limit方法也是模型类的连贯操作方法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多.ThinkPHP的limit方法可以兼容所有的数据库驱动类的. 用法 限制结果数量 例如获取满足 ...

  9. Struts2+hibernate3+Spring2的整合方法

    浅谈Struts+hibernate+Spring的整合方法 摘要:本文将介绍Struts,Spring与hibernate的集成.希望大家能从中受用. 1.在工程中导入spring支持,导入的Jar ...

随机推荐

  1. guava学习--集合2&Range

    转载:http://www.cnblogs.com/peida/p/Guava_ImmutableCollections.html Table: 当我们需要多个索引的数据结构的时候,通常情况下,我们只 ...

  2. jedis,spring-redis-data 整合使用,版本问题异常以及解决。

    最近整合使用redis spring-redis 出现了一下问题 spring:3.2.4.RELEASE jedis: jedis  2.4.2 spring-data-redis: 1.5.2.R ...

  3. [最短路径SPFA] POJ 1847 Tram

    Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14630 Accepted: 5397 Description Tra ...

  4. Codeforces Round #382 (Div. 2) 解题报告

    CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...

  5. .Net中的加密与解密

    加密与解密概述 加密与解密属于数据安全的范畴.在消息传输时,通过对消息进行特殊编码(加密),建立一种安全的交流方式,使得只有发送者所期望的接收者能够理解(解密).这里我们定义一个场景:发送方,接收方, ...

  6. win7下用python3.3抓取网上图片并下载到本地

    这篇文章是看了网上有人写了之后,才去试试看的,但是因为我用的是python3.3,与python2.x有些不同,所以就写了下来,以供参考. get_webJpg.py #coding=utf-8 im ...

  7. Sql 注意点

    1. Set.Select赋值 使用SELECT语句来替代SET命令的主要优点是:可以在一个操作内同时给多个变量赋值.执行下面的SELECT语句,通过SELECT语句赋值的变量就可以用于任何操作了. ...

  8. 探索javascript----我对渐变轮播图的理解

    对于一个没有编程基础的人来说,我时常希望能有人告诉我,当我们看到一个效果的时候,该怎样有条理地分析出它的行为,而我自己有必要加强这方面的 自省,对于一个轮播图我是这样看的,自动播放必然带有一个定时器, ...

  9. Android重要控件———ListView

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  10. ”isEqual“ ”isEqalToString“ 和“==”三者区别

    isEqual :首先判断的时对象类型是否 一样,然后再判断具体内容是否一致:如果类型不一样,return no: isEqualToString: 直接判断字符串内容,便捷更快速,但是前提确保比较的 ...