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)的更多相关文章

  1. java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)

    标题有点问题,没有进行修改. 一 Discuz论坛搭建步骤 1:服务器环境配置 服务器要支持php语言+支持mysql 5.0以上的数据库 + Apache服务器(支持网站的一个服务器,通过域名的能访 ...

  2. discuz! 设置私密论坛版块的方法

    Discuz!的强大功能不用细说, 话说对于有一部分需要设置具有一定访问权限的用户才能浏览的版块内容的话. 可能很多朋友不太清楚, 为了解决这个问题, 第一步以管理员的身份登陆, 然后 论坛-> ...

  3. 新老单点的改造——-理解Cookie、Session、Token

    近期参与了新老单点的改造,一直想总结一下,发现这篇文章比较贴切. 整理了如下: 随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录 ...

  4. Discuz插件开发之全站论坛目录结构注释

    基本上新版本的discuzX系列目录结构都差不多,刚好大神整理出来了,就拿来看吧. |-- /api        uc.php   UCenter通信文件        |-- /api/addon ...

  5. centos6.8安装Discuz!X3.1(PHP论坛)

    1.首先搭建apache+mysql+php环境: 一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@localhost ~]# yum install mysq ...

  6. discuz !NT 3.5 论坛整合 .net 网站用户登录,退出

    using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlCont ...

  7. 在其他页面调用 Discuz 7.2 BBS 论坛会员登录信息

    require_once './bbs/include/common.inc.php'; $discuz_uid 是用户ID $_DSESSION是用户所有信息

  8. java J2EE与DiscuzX3.2的UCenter实现单点登录

    最近笔者在实现Java项目对discuz的整合.在此过程中,查了很多这方面的资料,发现网上并没有说得比较全面的文章.笔者博取众长以及自己在此过程中遇到的问题,写下来供大家参考,希望大家可以在这过程中少 ...

  9. 直接导入用户信息到discuz ucenter.

    上一篇帖子: 直接导入帖子到Discuz 论坛数据库. 结束时说要写一篇导入用户的帖子, 一直没时间, 但是咱不能做太监,不是? 所以今天赶快补上. 在做discuz整合或者迁移是, 很多人可能遇到相 ...

随机推荐

  1. HDU 5279 分治NTT 图的计数

    思路: 显然每个子图内都是森林 去掉所有子图1和n都连通且每条大边都存在的情况 直接DP上 NTT优化一波 注意前两项的值.. //By SiriusRen #include <bits/std ...

  2. fcc html5 css 练习3

    行内样式看起来是这样的 <h1 style="color: green"> .pink-text { color: pink !important; }         ...

  3. Beta Edition [ Group 1 ]

    DeltaFish Beta Edition 一.七月开发过程 小组会议 DeltaFish 校园物资共享平台 第八次小组会议 GITHUB https://github.com/DeltaFishS ...

  4. html5——动画

    基本介绍 /*执行函数gun,执行时间,重复执行,反向执行,匀速执行,延迟执行时间*/ animation: gun 4s infinite alternate linear 5s; 动画序列 1.g ...

  5. 3星|《IBM商业价值报告:区块链》:一些重要行业对区块链的态度和已经发生的区块链的应用

    区块链项目开发指南 (区块链技术丛书) 介绍IBM的专家们调研许多重要行业与组织后总结的各行业对区块链的态度和实际的应用.看起来有点意思,不过有两个缺点: 1:这些实际已经发生的应用基本没看到相关的新 ...

  6. listcontrol 加combobox实现

    头文件 #pragma once#include "D:\Work\山东项目\StandardizedDrawing\sdUtils\CSGrid.h"#include " ...

  7. Java数组数据类型

    Java数组数据类型 数组是多个相同类型的数据的组合,数组中的元素可以是任何类型的数据: 一维数组 package com.ahabest.array; public class ArratTest ...

  8. HDU - 5894 Pocky(概率)

    HDU5894—Pocky Problem Description: Let’s talking about something of eating a pocky. Here is a Decore ...

  9. CentOS7.2下安装php加速软件Xcache

    说明: php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php/etc/php.ini Nginx安装目录:/usr/local/nginx Nginx ...

  10. 初学者对ASCII编码、Unicode编码、UTF-8编码的理解

    最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是 255(二进制 11111111=十进制 255),如果要表示更大的整数,就必须用更多的字节. ...