您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
ThinkPHP和Discuz怎么整合
妙菡2025-07-20Discuz教程已有人查阅
导读以下是Discuz6的整合方法,在模板中新增登陆模板,路径为Tpl/default/Public/Login.html这里把官方教程中的模板贴出来,省的再去找了:
以下是Discuz6的整合方法,discuz5请按照里面的说明进行相应的修改,也可以使用了。
1.在项目的action目录下信件PublicAction.class.php。这样写:
代码如下:
如果你使用的是discuz5版本,由于没有ucenter,需要修改两个部分。
一是 PublicAction.class.php中的
5. 下载RBAC。
在使用中除了上面的还不够。还要进行RBAC赋权的操作。这里你需要下载一个官方的RBAC示例,推荐放在和你的程序平级的目录。
6.修改RBAC
Model下的UserModel.class.php内容是下面的代码。这个和前面的UserModel.class.php一致。可以直接复制过来
代码如下:
补充:
1.没有实现同步登陆,因为我不知道在discuz本身中密码的加密方式。大家可以另想办法。
2.你需要自己修改RBAC才能用于正式站点:
(1)给RBAC弄一个登陆,现在没有权限设置,这个事关安全,是必须的。
(2)查看用户列表的时候是全部列出来。弄个简单的搜索和分页吧。等我修改完毕我会把我的发上来。
3.在第一段处理登陆的代码中,有个不安全的地方。请按照说明添一段代码
4.没有实现用户组和Discuz的用户组整合。
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" 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.现在可以进行分组操作了。补充:
1.没有实现同步登陆,因为我不知道在discuz本身中密码的加密方式。大家可以另想办法。
2.你需要自己修改RBAC才能用于正式站点:
(1)给RBAC弄一个登陆,现在没有权限设置,这个事关安全,是必须的。
(2)查看用户列表的时候是全部列出来。弄个简单的搜索和分页吧。等我修改完毕我会把我的发上来。
3.在第一段处理登陆的代码中,有个不安全的地方。请按照说明添一段代码
4.没有实现用户组和Discuz的用户组整合。
本文标签:
很赞哦! ()
下一篇:怎么搭建discuz论坛
相关教程
图文教程
Discuz项目新建子网站的方法
在.net版的Discuz项目中,后台管理模块Discuze.Web.Admin是一个单独的模块,但是,打开解决方案的文件夹却找不到单独模块的文件夹存放,而是在Discuz.Web项目里的admin文件夹里。
Discuz! X 插件开发教程
Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。
阿里云OSS搭建discuz步骤教程
discuz 使用阿里云OSS说明:我绑定了二级域名,本演示采用二级域名oss来介绍,我实际使用的是二级域名pic。新手第一次分享使用经验,望各位大神手下留情...
Discuz编辑器代码总结
1.[ b]文字:在文字的位置可以任意加入您需要的字符,显示为粗体效果。2.[ i]文字:在文字的位置可以任意加入您需要的字符,显示为斜体效果。
相关源码
-
响应式帝国cms7.5NBA黑色体育资讯模板下载本模板为体育新闻媒体、报道机构设计,采用帝国CMS7.5内核开发,具备完整的资讯发布、体育日历、数据展示功能。响应式布局确保在手机端呈现实时资讯和图文内容查看源码 -
(自适应响应式)个人作品技术文章博客网站模板下载基于PbootCMS内核开发的响应式博客模板,为数字营销、技术分享类内容打造。采用前沿设计理念,兼顾内容展示与阅读体验,适配各类终端设备。通过本模板可快速构建专业级行业博客,有效传播专业知识与案例成果。查看源码 -
(PC+WAP)地暖热水器烘干机节能设备网站模板下载为地暖热水器及节能设备企业设计的PbootCMS网站模板,集成产品展示、节能方案介绍、技术参数说明等专业模块。采用PC与移动端同步响应架构查看源码 -
(自适应)蓝色自动溶剂萃取仪器设备类网站pbootcms模板下载本模板为溶剂萃取设备、实验室仪器等精密仪器行业设计,采用PbootCMS内核开发,具有高度专业性和行业适配性。模板设计充分考虑了仪器设备行业展示需求,能够呈现各类精密仪器的技术参数、应用场景和解决方案。查看源码 -
(自适应)蓄电池能源智能数码科技产品pbootcms模板源码下载本款基于PbootCMS开发的网站模板为蓄电池及能源科技企业设计,特别适合锂电池、储能系统、新能源电池等产品的展示与推广。查看源码 -
(自适应)高端集团跨国公司产业联盟机构网站模板免费下载基于PbootCMS内核开发的集团级企业网站模板,采用响应式设计架构,确保在各类移动设备上获得浏览体验。通过模块化布局与简约大气的视觉风格,帮助集团企业高效展示组织架构、发展历程和业务矩阵,建立专业的企业形象窗口。查看源码
| 分享笔记 (共有 篇笔记) |
