标签归档:discuz
Discuz7.2升级到DiscuzX1.5
官方的帮助文档在这里:http://faq.comsenz.com/viewnews-942
说是升级,其实就是先安装DiscuzX1.5,然后把Discuz7.2中的数据导入。官方的文档写的很详细,照着一步一步做就可以。唯一有些模糊的就是关于ucenter的安装问题。
在安装DiscuzX1.5时,会有“全新安装 Discuz! X (含 UCenter Server)”和“仅安装 Discuz! X (手工指定已经安装的 UCenter Server) ”的选项,经测试发现如果选择“全新安装 Discuz! X”,在后面运行convert程序时原来数据库里以pre_uc_为前缀的数据表里的数据并未被导入到DiscuzX1.5的数据库中;如果选择手动指定ucenter,则有可能出现安装不成功的问题。
折中的解决方法就是选择“全新安装Discuz! X (含 UCenter Server)”,然后
1.从旧数据库里导出pre_uc_前缀表的sql(包括结构和数据)
2.在新数据库里删除pre_ucenter_前缀的表
3.将导出的sql语句中”pre_uc_”替换为”pre_ucenter_”,然后导入新数据库中
convert程序在导入前后执行都可以。
Discuz 用户信息加密算法-authcode加密/解密函数详解
引用地址:http://bbs.itokit.com/thread-4009-1-1.html
/**
*用户信息加密解密函数
*
*待加密内容用\t分割
*@return String 加密或解密字符串
*@param String $string 待加密或解密字符串
*@param String $operation 操作类型定义 DECODE=解密 ENDODE=加密
*@param String $key 加密算子
*/
function authcode($string, $operation, $key = '') {
/**
*获取密码算子,如未指定,采取系统默认算子
*默认算子是论坛授权码和用户浏览器信息的md5散列值
*$GLOBALS['discuz_auth_key']----全局变量
*取值为:md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT'])
*$_DCACHE['settings']['authkey']是论坛安装时生成的15位随机字符串
*/
$key = md5($key ? $key : $GLOBALS['discuz_auth_key']);
$key_length = strlen($key);
/**
*如果解密,先对密文解码
*如果加密,将密码算子和待加密字符串进行md5运算后取前8位
*并将这8位字符串和待加密字符串连接成新的待加密字符串
*/
$string = $operation == 'DECODE' ? base64_decode($string) : substr(md5($string.$key), 0, 8).$string;
$string_length = strlen($string);
$rndkey = $box = array();
$result = '';
/**
*初始化加密变量,$rndkey和$box
*/
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($key[$i % $key_length]);
$box[$i] = $i;
}
/**
*$box数组打散供加密用
*/
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
/**
*$box继续打散,并用异或运算实现加密或解密
*/
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($operation == 'DECODE') {
if(substr($result, 0, 8) == substr(md5(substr($result, 8).$key), 0, 8)) {
return substr($result, 8);
} else {
return '';
}
} else {
return str_replace('=', '', base64_encode($result));
}
}
解密cookie代码示例:
//此处要包含上面的函数代码
$auth_key=$_DCACHE['settings']['authkey']; //此值也可以从cdb_settings表中查到,即authkey对应的值
$key=md5($auth_key.$_SERVER['HTTP_USER_AGENT']);
$result=authcode($_COOKIE['Fbw_auth'], 'DECODE', $key);//$_COOKIE['Fbw_auth']是当前用户登录后的cookie值
echo $_COOKIE['Fbw_auth'];
echo "
";
echo $result;
输出的结果格式是“e10adc3949ba59abbe56e057f20f883e 2”,分别是用户加密后的密码和ID。
Discuz和jQuery冲突的解决方法
引用地址:http://hi.baidu.com/mimimo/blog/item/2840768dd7048915b31bbadb.html
Discuz和jQuery的冲突有两点,在/include/javascript/common.js文件的57~64之间有如下代码:
Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
function $(id) {
return document.getElementById(id);
}
Discuz为了兼容低版本的IE,重写了Array对象的push方法,但在重写之前没有做任何判断,有点太XX了~,改为一下形式:
if(typeof Array.prototype.push === ‘undefined’) {
Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
}
第二点就是Discuz也有$()函数,就只是为了实现getElementById?功能没有人家强大就别学人家用美元符号嘛,占用符号资源。应该学学百度,人家就用一个字符G,多低调不和别人争美元。
关于$()函数的冲突,jQuery中给出了解决方法,jQuery.noConflict(),把美元让给你(看看人家多大肚)。
我们的jQuery代码可以这样写:
var jq = jQuery.noConflict(); //把$让给第一个实现它的库,用jq代替
jq(function()
{
//**********************
}
);
这样就完美解决了两者的冲突
discuz7.2我型我秀任务无法完成解决方法
discuz7.2的我型我秀任务上传了头像之后依然显示任务未完成,导致无法往下进行其他任务。
解决方法:
官方网站给出的方法如下:
方法1:打开./uc_client/client.php文件,
找到$res = uc_fopen2($url, 500000, ”, ”, TRUE, UC_IP, 20);
修改为$res = uc_fopen2($url, 500000, ”, ”, TRUE, ”, 20);
方法2:打开FTP论坛根目录下,./config.inc.php
找到define(‘UC_IP’, ‘127.0.0.1’);
或类似代码
修改为define(‘UC_IP’, ”);
即可解决问题
造成问题原因是./uc_client/client.php,第211行:$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);对IP做了判断
但是该方法在菲律宾论坛测试机试了没有效果。
后来找到另一种方法,就是修改uc_client/client.php中uc_check_avatar函数:
function uc_check_avatar($uid, $size = 'middle', $type = 'virtual') {
@$file_exists = trim(uc_fopen2(UC_API."/avatar.php?uid=$uid&check_file_exists=1"));
return $file_exists;
/*
$res = @file_get_contents($url);
if($res == 1) {
return true;
} else {
return false;
}
*/
}
该修改稍微改变了一下功能,只要存在图片就认为任务done,而不管是申请任务之后上传还是之前上传
U-Center和UCenter Home的关系
2008第三届互联网站长年会
李国德:首先感谢各位站长能够来参加我们今天下午举办的技术分会,现在由我简单为大家介绍一下我们公司新推出来的U-Center和UCenter Home,以及接下来的一系列产品是怎么样的一个体系和我们为什么要做这些产品的改变。
首先简单讲一下我们为什么要在原来的Discuz体系上引入了U-Center。我用过之前的一些站点比较深有体会,要跟Discuz进行整合的话可以发 现是比较困难的,比如说Discuz版本之间如果升级不能很配合的话,就会发现有很多问题。而且随着我们公司将来推出一些新的产品的出现,如果一个站点装 这么多程序的话,整个这个产品体系就比较混杂了,包括用户的统一登录以及用户的统一管理,还有各个产品之间的数据互通都是非常困难的。其实从产品层面来 说,在产品需要改善的状况下,我们也需要推出有用户的统一管理平台,U-Center和一个数据交换中心,也是U-Center。
从另一个角度来讲,从目前互联网的发展趋势来看,我们以前的产品比较过多的注重了内容,而忽略了一个隐藏在内容背后的元素,就是人。我觉得将来的互联网就 是说每个人的存在性是越来越重要了,在这种情况下,作为我们免费提供给站长所用的程序来说,我们需要把人的因素提高上来,能够让站内的人在我们的产品体系 下更好的得到一个功能上的完善以及人与人之间交互功能需求的满足。在这两个前提下,我们推出了U-Center体系。大家可以看一下大屏幕的图片,首先我 们看一下U-Center和这些产品的应用,在这个体系下,U-Center是作为背后的像飞机上的黑匣子一样,它的作用把Discuz、Supe Site、SupeV这些应用进行一个有机的整合,包括用户的整合,用户统一的登录、退出这些基本的功能,还有一个整合就是数据的整合,包括Discuz 地面的帖子能够在SupeSite里面展示,SupeV里面旁边会有一个视频,这些都是在U-Center里面实现的,这些都是不需要改变的,都是基于这 个黑匣子。UCenter Home和U-Center的关系,UCenter Home是把U-Center里面的数据作为一个展示,U-Center是一个黑匣子,一般人看不到里面有什么东西,UCenter Home就是完成这个使命,把数据进行一个有效的展示,同时赋予站内的每个人一个家。这个人在家里面可以跟踪他在站内所有应用里面的活动,包括好友的活动 以及与好友之间的互通。下面的图就基本上说明了上面的情况,具体的U-Center数据过程,待会儿会由U-Center的产品经理再给大家详细介绍。
我对UCenter Home简单介绍一下,之前给大家介绍一下整体的架构,我主要从这四个方面来介绍一下UCenter Home。第一个我告诉大家UCenter Home是什么东西,UCenter Home最简单的介绍就是Home,就是一个家,其实我们理解的以前很多网站都忽略了人的重要性,过多的强调话题的重要性,比方说论坛里面发帖子,每天可 能产生一千个话题,一千个贴子,但是你可能忽略了谁来制造这些帖子,制造这些帖子的人能留住他们吗?还是每天靠不断的搜索引擎提供流量,还是靠人的互动产 生流量,这都是值得我们思考的。UCenter Home就提供给了你一个比较好的解决方案,能够保证网站里面的人想在网站进行长期居住的话,你给他提供了这么一个平台,就像你已经建好了一座房子放在这 儿,他只要愿意居住的话,可以很容易的居住进来,并且他居住完以后,可以很容易的跟周围的邻居打交道,而且也不用像在论坛一样,要去这个版块,去那个版块 看一看有什么动态,把不需要,在他的家里面就可以看到自己关注的那些人到底有什么动态,在UCenter Home里面,这个人最基本的感受就是这个网站是我的,这个网站我说了算。就是下面这两个,一个是隐私和筛选,隐私就是说我控制一下我的东西谁能看,筛选 就是控制一下我想看哪个东西,就是从这两个层面来说的。UCenter Home在隐私方面是做了比较大的一些完善,它基本上能够实现四个方面的功能,一个是全站的用户可见,这是最基本的,是公开性质的。还有一个就是只有好友 可见,就是说你跟他成为相互好友的这些人可见。还有一个就是我想给谁看谁来看,就是说好友里面,可能有一些人,比如说有一些是父母,有一些是学生,我要发 一篇日志我不想让父母看到,只想让学生看到,UCenter Home也可以看不到。还有一个就是自己可见。还有一个就是密码可见,比如说你这篇日志可以设一个密码就可以了。还有筛选我们提供了两个层次,一个是根据 好友组来筛选,因为里面的好友是可以分组的,比如说把家属设为一组,把同学设为一组,你不想看同学的最新动态,你只想看家属或者亲密好友的最新动态,通过 筛选就可以实现。还有一种筛选就是针对类别的筛选,UCenter Home有一个最基本的平台,就是大家如果上过我们的网站的话,就会发现大家应该流浪最多的是首页,首页里面有很多的迷你的视件,各个活动里面会展示在首 页上,大家看到这么多动态的时候,你就可以通过筛选去现在性的让你想看一些动态展示在你的首页上,一些无关的,你想屏蔽掉的就可以屏蔽掉。
第三个UCenter Home最重要的就是好友和互动,这是在以前我们公司推出的产品里面比较不足的一个,包括我们之前推的个人空间,还有以前的Discuz,都是在好友方面 做的非常少,包括Discuz里面,大家可能会有感受,如果你加了一个好友以后,你会发现加了好友和没加好友没有什么区别。当然我们发现好友这个是非常重 要的,UCenter Home就把好友这一块进行了彻底的利用。UCenter Home和UCenter我刚才可能也讲了一下,它们之间的关系是什么呢?UCenter就是一个用户中心和数据中心,联系现实的话我们可以把它理解成一 个人才管理中心,就是一个档案管理中心。UCenter Home是这个人真正的家,你在这个UCenter里面做了一个存档,但是你在那里是没有家的,你真正的家是在你的UCenter Home里面,UCenter Home是你真正的家。Discuz、SupeSite、SupeV是这个人在家里面的各种应用,是玩的地方,这都是一些他可以玩的地方。
接下来讲一线UCenter Home和X-Space的关系,这两个产品都是我负责研发的,UCenter Home出来的时候引起过很多的质疑,包括有一些站长都在论坛上向我们进行一个观点的PK,他认为UCenter Home里面包括日志以及个人空间比较绚丽的风格等等,都不如X-Space里面好。我们是这么理解的,X-Space是一个传统的博客程序,传统的博客 重点是在于展示,而不是这种交互。它展示的重要性超过了它交互的重要性,所以展示可能要注重,第一SOU化,我展示的话,是拼命的让让更多的人看到我的观 点,不需要有什么权限,就是要让更多的人看得到。展示就是要求有个性的,必须是整个世界上独一无二的,还有其他的一些方面。UCenter Home跟这个是有本质的不同的,大家都会发现,UCenter Home界面都是单调的,所有的操作按纽都是永远固定在左边和上边,为什么要这么设计呢?其实是作为一个工具而存在的。我觉得它已经是高于展示的功能之 上,它是一个比展示更为强大的一个应用,展示只是它一个简单的方面。应用注重人的习惯性,就跟我们用电脑一样,键盘是永远在屏幕下面的,不会因为我需要一 个绚丽的电脑,就把键盘移到上面去,那是不可能的,当然我理解的是这样的,我觉得工具一定要简单、易用、快,更多的是一个扩展性,就是说它作为一个平台的 工具的话,它的扩展性一定要强。就是包括你想给你站内的用户提供什么服务,在这个平台上是非常容易的,当然现在我们只是官方提供了Discuz、 SupeV、ECshop等等这些,包括很多人用的体系,所有的站长都可以通过一两步的操作挂接到这个平台上面,并且所有的用户的展示都可以在 UCenter Home里面看不见。
接下来再讲一下UCenter Home和Discuz的关系,很多人都认为UCenter Home里面的群组跟Discuz是冲突的,其实一点也不冲突,Discuz是作为非常大的集市,任何人都可以在上面活动,任何人都可以写一些东西。其实 Discuz是为UCenter Home提供人脉的基础,UCenter Home它自己要产生一个人与人之间的人脉的话是比较困难的,说到这儿,如果你作为一个站长,你想单纯只装一个UCenter Home去发展你的网站是比较困难的,你应该是建立在你现有的应用的基础上去把你应用里面人的关系挖掘出来,大家去挂接UCenter Home。UCenter Home为Discuz提供一个包间的功能,让Discuz上面这些人有了一个密闭的群组的功能,或者个人的平台,就像一个包间一样。
我讲的UCenter Home以及UCenter整个产品体系基本上就是这些,谢谢大家。如下有疑问的话,待会儿大家再进行交流,谢谢。
discuz编辑器插入表格问题
问题描述:
在discuz编辑器中点击插入表格,提交之后帖子页面显示为代码,而不是表格
问题原因:
论坛的过滤文件中定义的过滤出规则把半角的百分号替换为全角的百分号,导致代码中定义表格宽度的%不能识别。
解决方法:
注释掉过滤文件(/include/Filter/xxx)中相应的行即可。当然,前提是要确认论坛已经启用了discuz code。
discuz用户信息里“页面访问量”的设置
论坛个人信息页面中“页面访问量”一直为0或不变的原因:
此处的“页面访问量”是指用户在论坛浏览的页面数,管理后台中“全局-论坛功能”有一个参数“页面访问量更新频率(页面数)”,这个参数的值会影响用户“页面访问量的更新”,参数的备注里有详细的解释——“设置用户每访问多少页面,将访问量更新到用户资料中,用以显示和计算总积分。例如设置为 30,则每访问 30 个页面,用户的页面访问量增加 30,如果未到 30 个页面而离开,不计入访问量。本设置值越小,则统计越精确但消耗资源越大。建议设置为 20~200 范围内,0 为不统计用户页面访问量”。
为discuz编辑器添加youtube视频代码按钮
设置方法:
登陆论坛后台–style–editor setting–discuz! code 添加youtube项并上传小图标至images/common 目录内;
在details 里设置 替换内容 为
最后设置youtube项为 Available Display
此时会员发帖时编辑器上会出现youtube按钮,会员需输入视频id,即分享地址(http://www.youtube.com/watch?v=6WgMwd6AgU0)中的6WgMwd6AgU0,为方便会员输入需要修改include/discuzcode.func.php文件
7.2修改方法
preg_replace(array(
"/\[color=([#\w]+?)\]/i",
"/\[size=(\d+?)\]/i",
"/\[size=(\d+(\.\d+)?(px|pt|in|cm|mm|pc|em|ex|%)+?)\]/i",
"/\[font=([^\[\<]+?)\]/i",
"/\[align=(left|center|right)\]/i",
"/\[p=(\d{1,2}), (\d{1,2}), (left|center|right)\]/i",
"/\[float=(left|right)\]/i",
"#\[youtube\]http://(?:www\.)?youtube.com/watch\?v=([0-9A-Za-z-_]{11})[^[]*\[\/youtube\]#is" //此行为添加代码
), array(
"",
"",
"",
"",
"",
"
",
"",
"[youtube]\\1[/youtube]" //此行为添加代码
)
6.0修改方法
$discuzcodes['searcharray']['bbcode_regexp'] = array(
"#\[youtube\]http://(?:www\.)?youtube.com/watch\?v=([0-9A-Za-z-_]{11})[^[]*\[\/youtube\]#is", //此行为添加代码
"/\[url\]\s*(www.|https?:\/\/|ftp:\/\/|gopher:\/\/|news:\/\/|telnet:\/\/|rtsp:\/\/|mms:\/\/|callto:\/\/|bctp:\/\/|ed2k:\/\/|thunder:\/\/|synacast:\/\/){1}([^\[\"']+?)\s*\[\/url\]/ie",
"/\[url=www.([^\[\"']+?)\](.+?)\[\/url\]/is",
"/\[url=(https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/([^\[\"']+?)\](.+?)\[\/url\]/is",
"/\[email\]\s*([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+)\s*\[\/email\]/i",
"/\[email=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+)\](.+?)\[\/email\]/is",
"/\[color=([#\w]+?)\]/i",
"/\[size=(\d+?)\]/i",
"/\[size=(\d+(\.\d+)?(px|pt|in|cm|mm|pc|em|ex|%)+?)\]/i",
"/\[font=([^\[\<]+?)\]/i",
"/\[align=(left|center|right)\]/i",
"/\[float=(left|right)\]/i"
);
$discuzcodes['replacearray']['bbcode_regexp'] = array(
"[youtube]\\1[/youtube]", //此行为添加代码
"cuturl('\\1\\2')",
"\\2",
"\\3",
"\\1@\\2",
"\\3",
"",
"",
"",
"",
"",
""
);
经过修改会员在添加youtube视频时可以直接输入视频分享地址(http://www.youtube.com/watch?v=6WgMwd6AgU0)即可
参考地址:http://www.alan888.com/Discuz/thread-160793-1-1.html
Discuz7.2在Firefox3.6不显示主题分类,源码,用户名的解决方法
解决discuz7.2论坛在firefox火狐3.6版本下分类信息和主题分类下拉框无法显示的问题
问题描述:
discuz7.2,在用Firefox/3.6版本发布主题时:
1.如果只开启了分类信息或主题分类,则不显示后面下拉选项。
2.如果同时开启了分类信息和主题分类,则只显示前面的分类信息选项。
3.还有,编辑器右侧的“源码”切换选项也不见了;
正解:
此问题为FF3.6的兼容问题。
修复方法:
在include\js\common.js中
找到 BROWSER.firefox 一行中的
document.getBoxObjectFor &&
去掉后,后台更新缓存。