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整合或者迁移是, 很多人可能遇到相 ...
随机推荐
- 【洛谷2469/BZOJ1927】[SDOI2010]星际竞速(费用流/最小路径覆盖)
题目: 洛谷2469 分析: 把题目翻译成人话:给一个带边权的DAG,求一个路径覆盖方案使路径边权总和最小.从点\(i\)开始的路径需要额外加上\(A_i\)的权值. 回xian忆chang一xue下 ...
- scala 变量定义,基本操作符
scala是jvm语言,它将面向对象与函数风格结合的很好,它可以访问任何java类库并很好的结合使用. 它可以使程序更简单,同时可利用并发的威力. scala基本语法: package com.tes ...
- Unity Android交互过坑指南
Unity Android交互过坑指南 介于网上看过很多unity和Android交互的教程,都或多或少的漏掉了一些部分,导致编译过程中出现各种问题,特此整理一份教程,仅供参考 介绍 本次实现的是在游 ...
- the interview questions of sql server
1.一道SQL语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-0 ...
- jQuery自适应倒计时插件
jQuery自适应倒计时插件 在线演示本地下载
- C#入门经典 Chapter5 变量的更多内容
5.1类型转换 1.类型转换 1.1隐式转换:所有情况下可进行,编译器执行转换. 1.2显示转换 强制转换:强迫数据从一种类型转换为另一种类型. (<destinationType>)&l ...
- RHEL7配置中文输入法-智能拼音
RHEL7配置中文输入法-智能拼音 RHEL7.x(CentOS7.x)系统相对之前的6.x系统变化较大,虽然安装时选择了中文环境,但是进入系统后,在控制台及编辑器中仍无法切换输入法进行中文输入. 原 ...
- DOS批处理命令-字符串操作
1.字符串替换 语法结构:%变量名:替换前=替换后% @set str=teh cat in teh hat @echo %str% @set str=%str:teh=the% @echo %str ...
- (转)Struts2的标签库
http://blog.csdn.net/yerenyuan_pku/article/details/68638679 Struts2的标签库 对于一个MVC框架而言,重点是实现两部分:业务逻辑控制器 ...
- codeforces_734C_二分
C. Anton and Making Potions time limit per test 4 seconds memory limit per test 256 megabytes input ...