关于HDwiki的一些事

接触建站以来,总想了解多一些建站程序,所以,很早就知道了mediawiki和hdwiki,也一直想弄个百科站,不过每次都是安装好就停手。

最近因为想建个团队wiki,于是多弄了几天wiki程序。算是了解多了一些吧,发现wiki不仅仅是百科而已,拿来作为文档库也很合适,比如discuz技术文库就是用mediawiki搭建的。还有作为开源电子书也是不错的。而且不仅仅是团队wiki,个人知识管理使用wiki程序也是一种很好的选择,于是就打算在建一个个人wiki。

mediawiki还是hdwiki?

这个挺纠结的,很多大站用的mediawiki,于是也想用mediawiki,不过安装之后实在是不习惯,没有后台,编辑词条时也没发现上传图片的地方。所以最终还是选择了hdwiki。

hdwiki和ucenter整合

不得不说,hdwiki这个整合搞的真心蛋疼。我第一次装hdwiki的时候,大概是几个月前,提示uc_client目录不存在,于是那次试验就以失败告终了,直到这一次,我才知道原来是hdwiki 5.1打包时把uc_client给遗漏了。这次下载的今年5月更新的软件包到是没这个问题了,但是新问题更加恼火。眼看着整合成功了吧,uc通信也正常,从discuz过去的用户也登录了,不过要你激活,可是,无论你怎么弄,就是激活不了。

用phpmyadmin看一下,才发现只有用户名写入了数据库,用户的密码和邮箱都是空的。

求助百度和google大神,不过资料比之discuz实在太少,找到的都是千篇一律的整合方式,而且他们貌似都成功了。难道他们真的成功了吗?

无奈之下逼自己去看源码,还没写过php程序的人看uc接口代码真的是头疼,找到了同步登录的函数:

function synlogin($get, $post) {
		!API_SYNLOGIN && exit(API_RETURN_FORBIDDEN);
		$cookietime = 2592000;
		$timestamp=$get['time'];
		$discuz_auth_key = md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT']);
		header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
		$username=$get['username'];
		$password=$get['password'];
		$email=$member['email'];
		$uid=$get['uid'];
		$user = $this->db->fetch_first("select * from ".DB_TABLEPRE."user  where username='$username'");

		if(!is_array($user)){
			if($usernum=$this->db->result_first("select count(*) from ".DB_TABLEPRE."user where uid= $uid")){
				$maxuid=$this->db->result_first("select max(uid) from ".DB_TABLEPRE."user");
				$maxuid+=1;
				$this->db->query("update ".DB_TABLEPRE."user set uid=$maxuid where uid=$uid");
				update_field($uid,$maxuid);
			}
			//$password=$email="";
			$ip = $_SERVER['REMOTE_ADDR'];
			$groupid = 2;
			$this->db->query("replace into  ".DB_TABLEPRE."user (uid,username,`password`,email,regip,regtime,groupid) values ($uid,'$username','$password','$email','$ip',$timestamp,$groupid)");
			$user = $this->db->fetch_first("select * from ".DB_TABLEPRE."user u  where u.uid=$uid and u.username='$username'");
		}

注意看被我注释掉的那一行:$password=$email=""; 让密码和邮箱都为空。难道是这里出了问题?

注释掉之后,在去实验,先是兴奋了一下,因为discuz的用户到hdwiki直接登录了,不用去激活,用phpmyadmin看,密码也写入hdwiki的user表里了。不过这兴奋没有持续多久,因为又发现虽然同步登录了,但写入hdwiki user表里的用户密码是ucenter中的用户密码,而ucenter和discuz中保存的用户密码的加密方式貌似是不一样的,这就意味着用户无法在hdwiki端通过discuz的用户名密码登录。可能还是uc接口文件出了问题。

还有其他一些问题:

  1. 不能同步退出。从discuz退出,hdwiki也会退出,但是从hdwiki退出,discuz不会退出。
  2. discuz新注册用户必须先退出,在登录一次才可以自动登录hdwiki,这对用户体验很不好。

算了,没有技术,修改不了uc接口文件,就先放弃吧,或者,把hdwiki的注册登录全部关了,只用discuz的注册和登录,不过还是有用户体验的问题。而且,后患比较多。

hdwiki做个人wiki

还是弄个人wiki吧,无需整合ucenter。不过还是有不尽如人意的地方。做个人wiki,很不喜欢hdwiki那个首页。而mediawiki已某个可以编辑的页面作为首页我感觉很好。但是没有找到hdwiki编辑首页的方法,只好直接改模版的index.htm文件。不过这个比较麻烦,还不能用后台的模版编辑,因为那个不支持中文。所以每次在本地编辑好才能上传。

我改好的如下:

{template header}


AnnHe's Personal Wiki


目录
  1. 欢迎来到我的个人Wiki
  2. 建设网站的一般方法
  3. 加入我一起编写文档

欢迎来到我的个人Wiki

欢迎来到我的个人Wiki。本Wiki目前由我个人维护。
Wiki不仅适合团队协作管理团队知识,还是一个很好的个人知识管理工具,本Wiki打算记录我建站的经验总结及专业学习上面的一些总结,大致包括Linux服务器运维,Discuz,PHP以及C语言等内容。

建设网站的一般方法

本章总结搭建一个网站的基本流程,包括申请域名,购买虚拟主机或服务器,上传网站程序,安装网站程序,维护网站等等。
进入文档:建设网站的一般方法

加入我一起编写文档

虽然这是一个个人Wiki,但并不排斥多人协作。如果你和我有相似的兴趣并且希望和我共同维护此Wiki,欢迎联系我,点此查看我的联系方式
如果你不了解Wiki,请先阅读: 什么是Wiki
如果你不了解如何编辑Wiki,请先阅读:我是新手,怎样编写文档
{$advlist[2][code]}
{block:right/}
{block:bottom/}
{template footer}

效果如图:

hdwiki

hdwiki

5 thoughts on “关于HDwiki的一些事

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注