Discuz 杂记

//人老了。痛苦啊~~~东西都忘得差不多了~~!

官方操作手册:http://faq.comsenz.com/library/

一、forum

1.thread

(1).主题的显示(forum_viewthread)

$_G[‘forum_thread’] ,$post//主题的对象

$postlist[$_G[‘forum_firstpid’]]//获取当前的目标主题。因为评论也属于主题的列表。所以用这个抓取当前的主题

(2).主题的评论

discuz的大多操作是通过返回的操作进行控制的。

forum_viewthread.js:function succeedhandle_fastpost

如果有相关的操作要在执行后进行操作,可以在函数后添加操作脚本。

(3)主题分类的获取

$_G[‘forum’][‘threadtypes’][‘types’]//是个以分类id为key的数组

(4)创始人密码修改

uc_serverdataconfig.inc.php

define('UC_FOUNDERPW', '8346c0459cbc8edf1c9909c1fbc8774a');
define('UC_FOUNDERSALT', 'U25fy6');

二、门户

栏目添加自定义模板

按提示,上传文件到指定的文件夹,会自动提示。名字只要加上

<!–[name]活动列表页[/name]–>

 

dz中使用jquery

 

jq = jQuery.noConflict();//将变量$转递给jq

diy 备份转移

mysqldump -u root -p db_name pre_common_diy_data pre_common_block pre_common_block_item pre_common_template pre_common_template_block > c:db.sql

// 获取图片

$result = C::t ( 'forum_attachment' )->fetch_all_by_id ( 'tid', array (
		4530 
) );
foreach ( $result as $item ) {
	$data = C::t ( 'forum_attachment_n' )->fetch_all ( $item ['tableid'], $item ['aid'] );
	print_r ( $data );
}

// 数据抓取

$result = DB::fetch_first ( "SELECT * FROM  %t WHERE tid=%d ", array (
		'mt_video',
		4522 
) );

 

 

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827

UC 整合 PHPDISK 加检查和调试方法+补充uc socket通讯小bug

最近朋友要个网盘,因为他有个无限空间和无限流量的服务器架设论坛。

他说,迅雷和华为这些奸商都等用户有了浏量之后就开始收费了。所以流量大的草根要注意。
phpdisk的搭建也是傻瓜式的,就不多说了。
主要的配置问题,详见:

http://faq.phpdisk.com/phpdisk-connect-discuz-uc-13-view.html

注意个东西
uc_clientdatacacheapps.php
是否有你新建的app的数据,没有,复制上面的进行修改。正式机没事,但本地搭建过成中没有生成,导致通讯异常。
通讯流程见:

 

uc_clientclient.php :

function uc_user_synlogin($uid) {
	$uid = intval ( $uid );
	if (@include UC_ROOT . './data/cache/apps.php') {
		if (count ( $_CACHE ['apps'] ) > 1) { // 这里如果没有检查到,就不会去调数据哈
			$return = uc_api_post ( 'user', 'synlogin', array (
					'uid' => $uid 
			) );
		} else {
			$return = '';
		}
	}
	return $return;
}

 

关于正式机的调试和服务器的内部通讯调试.

因为在调试过程,总有不想让别人看和自己又必须得看到的数据。我就喜欢搞成这样子

if($_GET[‘test’]===’true’)//别人测试指定参数

if($_G[‘uid’]===’o’)//指定uid

这样游客就看不了啦。当然,搞完了一定要记得清楚这些小地方。

关于服务器内部通讯的调试,比如,client调server,他server怎么执行呢。

其它相关的操作。可以用 file_put_contents(time().”.txt”,var_export(array()));来记录相关的操作和信息,类似日志。这样就搞定内部通讯了。

uc通讯的一个小bug.

/uc_client/client.php:function uc_fopen

fsockopen 这个函数本身没有问题,主要问题是,uc在安装的时候,是使用公网的ip的,也就导致通讯过程中,正常是访问不了一些操作的囧~~!

像中国的sp商那些贱人一样,一出现错误页面,很喜欢给你弹到广告去。

问题来了

大家看看可爱的

/uc_client/client.php:function uc_user_synlogout

有没有,直接就把返回给返回了,竟然没有协商下过滤的。。

这样就把类似广告的东西直接当页面给加到登录和退出时的消息框里的,草根那个心急如焚呐~~~G (  ̄ ( 工 )  ̄ ) P。

坑爹啊,查到这里,哥分离脚本,一个参数一个参数的检查。。。。如此如此,这般这般。。

解决方式:

1.在uc的设置里,使用自家的独立ip。

2.在uc的设置里,取消ip,让uc访问域名(这个我没试,有兴趣的瞧瞧。代码就这么写的。出事别找我Y(^_^)Y)

if (function_exists ( 'fsockopen' )) {
	$fp = @fsockopen ( ($ip ? $ip : $host), $port, $errno, $errstr, $timeout ); // 是吧
} elseif (function_exists ( 'pfsockopen' )) {
	$fp = @pfsockopen ( ($ip ? $ip : $host), $port, $errno, $errstr, $timeout );
} else {
	$fp = false;
}

 

3.反馈bug,让uc在安装或设置的时候,检查下socket的通讯。。

注:要下载和原ucenter统一的编码,虽然pd可以指定,但是会造成通讯两边不正常的问题。如pd可同步,但是dz那边却无法同步。

解决方法:下载同编码的进行覆盖,再将system/install.lock文件进行删除,重装。

 

 

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827

php excel 导出常见问题

1.php 多功能导出工具 phpexcel

2.简单导出数据,采用table 加修改后缀的方式 ^_^

2.1 导出数据格式,解决excel格式自动化,显示异常,加样式

style=’text-align:center;vnd.ms-excel.numberformat:@’

但是注意,对于大文本,请不要加,不然会显示一堆#########

2.2导出文件头相关参数

导出相关代码,解决ie6 zip多文件异常问题

function file_down($filepath, $filename = '') {
	if (! $filename)
		$filename = basename ( $filepath );
	if ($this->is_ie ())
		$filename = rawurlencode ( $filename );
	$filetype = fileext ( $filename );
	$filesize = sprintf ( "%u", filesize ( $filepath ) );
	if (ob_get_length () !== false)
		@ob_end_clean ();
	header ( 'Pragma: public' );
	header ( 'Last-Modified: ' . gmdate ( 'D, d M Y H:i:s' ) . ' GMT' );
	header ( 'Cache-Control: no-store, no-cache, must-revalidate' );
	header ( 'Cache-Control: pre-check=0, post-check=0, max-age=0' );
	header ( 'Content-Transfer-Encoding: binary' );
	header ( 'Content-Encoding: none' );
	header ( 'Content-type: ' . $filetype );
	header ( 'Content-Disposition: attachment; filename="' . $filename . '"' );
	header ( 'Content-length: ' . $filesize );
	readfile ( $filepath );
	exit ();
}

 

2.3 iconv 转换过成中,数据丢失或没有数据输出 //IGNORE 标志,跳过异常

iconv ( 'UTF-8', 'GBK//IGNORE',$string);

 

3.导出大数据解决(其实这个是因为服务器的内存限制,导出中,字符串的拼接又过大,导致内存溢出)

$out=fopen($path,"a+");//拼接

fwite($out,$data);//一点一点输出成文件

fclose($out);

 

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827