discuz新的单点论坛(不依赖UCenter)
discuz 本身提供UCENTER用户中心能够实现单点登录。
可是其它应用要单点登录到discuz还是存在若干问题:
须要2次激活。可能造成server无响应,论坛显示的最新注冊用户无法同步更新,官网没有提供其它语言的api
等
这里提供了段代码。在bbs根文件夹下保存例如以下php代码go.php
<?php /**
* zj53hao 20140418 外部程序单点登录到discuz(同步注冊和登录到discuz) http://blog.csdn.net/zj53hao
*/ define('NOROBOT', FALSE);
define('ADMINSCRIPT', basename(__FILE__));
define('CURSCRIPT', 'admin');
define('HOOKTYPE', 'hookscript');
define('APPTYPEID', 0);
//define('CURMODULE', $mod); require './source/class/class_core.php'; $discuz = C::app();
$discuz->init(); require libfile('function/member');
require libfile('class/member');
runhooks(); $newusername = trim($_GET['newusername']);
$newpassword = 'www.xxxx.com';//trim($_GET['newpassword']);
$newemail = isset($_GET['newemail'])? strtolower(trim($_GET['newemail'])):$newusername.'@xxx.com'; if(!$newusername || !$newemail) {
showmessage('您眼下未登录xxx网,临时以游客身份仅仅读訪问论坛');
} // 下面几句防止第3方伪造
$time= (int)($_GET["time"]);
$curdate= time();
$seckey=$time.$newusername.'www.xxx.com';
$seckey= md5($seckey);
if($curdate-$time>1200 || $seckey!=$_GET['code']){
showmessage('submit_invalid');
} $_G['uid']='';
$userid=C::t('common_member')->fetch_uid_by_username($newusername); $_SERVER['REQUEST_METHOD'] = 'POST';//注冊须要模拟POST防止2次校验不通过
$_GET['formhash'] = formhash();// 防止 2次校验不通过
$_G['group']['seccode']='';// 防止 2次校验不通过 if(!$userid){// 没有找到相应用户则调用注冊
$_GET['regsubmit']='yes';
$_GET['infloat']='yes';
$_GET['lssubmit']='yes';
$ctl_obj = new register_ctl();
$ctl_obj->setting = $_G['setting'];
$ctl_obj->template = 'member/register'; $_GET[''.$ctl_obj->setting['reginput']['username']]=$newusername;
$_GET[''.$ctl_obj->setting['reginput']['password']]= $newpassword;
$_GET[''.$ctl_obj->setting['reginput']['password2']]= $newpassword;
$_GET[''.$ctl_obj->setting['reginput']['email']] =$newemail; $ctl_obj->on_register();
} //uc_user_synlogout();
$_G['groupid'] = $_G['member']['groupid'] = 7;
$_G['uid'] = $_G['member']['uid'] = 0;
$_G['username'] = $_G['member']['username'] = $_G['member']['password'] = ''; // 登陆
$_GET['loginsubmit']='yes';
$_GET['lssubmit']='';
$_GET['username']=$newusername;
$_GET['password']= $newpassword;
$ctl_obj = new logging_ctl();
$ctl_obj->setting = $_G['setting'];
$ctl_obj->template = 'member/login';
$ctl_obj->on_login(); ? >
主要原理是其它WEB应用跳转该URL并带上username。和登录检验串。如
http://xxx。
com/bbs/go.php?newusername=yyyyy&time=1397870932&code=d525745a6c196cb44049c7624bd28ece
在论坛里推断用户是否存在。
不存在则调用注冊模块。存在则登录新用户,假设之前登录过别的用户也会被切换该用户。
当中 使用自己的防止第3方的恶意提交的代码,并通过暂时开关去掉论坛本身的检验代码。
$seckey=$time.$newusername.'www.xxx.com';
主要用linux时间戳和用户名。加两方协商好的一个秘钥传再md5加密。匹配后才算验证通过。同样的串仅仅能在1200秒内有效
眼下对discuzX3有效。其它版本号未測试。
discuz新的单点论坛(不依赖UCenter)的更多相关文章
- java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
标题有点问题,没有进行修改. 一 Discuz论坛搭建步骤 1:服务器环境配置 服务器要支持php语言+支持mysql 5.0以上的数据库 + Apache服务器(支持网站的一个服务器,通过域名的能访 ...
- discuz! 设置私密论坛版块的方法
Discuz!的强大功能不用细说, 话说对于有一部分需要设置具有一定访问权限的用户才能浏览的版块内容的话. 可能很多朋友不太清楚, 为了解决这个问题, 第一步以管理员的身份登陆, 然后 论坛-> ...
- 新老单点的改造——-理解Cookie、Session、Token
近期参与了新老单点的改造,一直想总结一下,发现这篇文章比较贴切. 整理了如下: 随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录 ...
- Discuz插件开发之全站论坛目录结构注释
基本上新版本的discuzX系列目录结构都差不多,刚好大神整理出来了,就拿来看吧. |-- /api uc.php UCenter通信文件 |-- /api/addon ...
- centos6.8安装Discuz!X3.1(PHP论坛)
1.首先搭建apache+mysql+php环境: 一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@localhost ~]# yum install mysq ...
- discuz !NT 3.5 论坛整合 .net 网站用户登录,退出
using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlCont ...
- 在其他页面调用 Discuz 7.2 BBS 论坛会员登录信息
require_once './bbs/include/common.inc.php'; $discuz_uid 是用户ID $_DSESSION是用户所有信息
- java J2EE与DiscuzX3.2的UCenter实现单点登录
最近笔者在实现Java项目对discuz的整合.在此过程中,查了很多这方面的资料,发现网上并没有说得比较全面的文章.笔者博取众长以及自己在此过程中遇到的问题,写下来供大家参考,希望大家可以在这过程中少 ...
- 直接导入用户信息到discuz ucenter.
上一篇帖子: 直接导入帖子到Discuz 论坛数据库. 结束时说要写一篇导入用户的帖子, 一直没时间, 但是咱不能做太监,不是? 所以今天赶快补上. 在做discuz整合或者迁移是, 很多人可能遇到相 ...
随机推荐
- hdu2030
http://acm.hdu.edu.cn/showproblem.php?pid=2030 #include<stdio.h> #include<math.h> #inclu ...
- ACM_堆箱子咯(栈)
堆箱子咯 Time Limit: 2000/1000ms (Java/Others) Problem Description: 双十一大家都在买买买,可忙坏了快递小哥了.zl和皮卡鸡在大伙在剁手的时候 ...
- JSP 向 JavaScript 中传递数组
采用隐藏标签的方式: // JSP: <% while(rs.next()) { %> <in ...
- Android Framework 学习
1. 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework面存一些资料待有空查看. 2.Android系统的层次如下: 3.项目目录简单分析如下: 4.telphony ...
- hbuilder中的 http://www.w3.org/TR/html4/frameset.dtd
<!-- This is the HTML 4.01 Frameset DTD, which should be used for documents with frames. This DTD ...
- Flume特点
Flume 特点 1.可靠性 当节点出现故障时,日志能够被传送到其他节点上而不会丢失. Flume提供了三种级别的可靠性保障,从强到弱依次分别为: (1) end-to-end(收到数据agent首 ...
- mysql GTID主从复制(主库在线,添加新丛库)
要求: 1. 主库上线,主库不停止服务的前提下做主从复制 2. 新添加一个丛库 操作: 1. 在主库导出数据(主库正常运行): 2. 将 ...
- JS——旋转木马
1.opacity和zIndex的综合运用 2.样式的数组的替换:向右边滑动---删除样式数组第一位并在数组最后添加:向左边滑动---删除样式数组最后一位并在数组前添加 3.开闭原则,只有当回调函数执 ...
- [Windows Server 2012] Discuz X3安全设置
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★[护卫神·V课堂]是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:Discu ...
- On branch master nothing to commit, working tree clean ERROR: Repository not found. fatal: Could not read from remote repository.
将gitbash部署hexo到github:hexo deploy 报以下错误: Administrator@liu MINGW64 /Hexo $ hexo d INFO Deploying: gi ...