UCenter Home二次开发指南

前言
本文将就UCH二次开发这个核心主题,以各种实现的代码为主,辅助部分说明概略的讲解如何针对UCH进行二次开发。过段时间UCH就开源了,准备到时候再详细的写篇UCH机制分析。

顺便说下,这篇文件写在大约两周以前,但是一直没有时间整理发布,今天听说UCH会在最近一段时间开源,到时候再发反而对大家帮助不大,所以决定不再整理,虽然文中一些说明还不详细,但是已经基本成文。

数据调用
这里的数据调用是使用UCenter Home内置的数据调用,在后台的“高级应用”里有“数据调用”管理,以下代码都是在模板中添加,然后调用数据。
1.站内数据调用

<!--{template data/blocktpl/1}-->

2.站外JS调用

<script language="javascript" type="text/javascript" src="http://www.ccvita.com/js.php?id=1"></script>

block的使用
这个block数据调用和前面的讲的数据调用,从数据来源和生成来说是基本类似的,。

<!--block模块调用演示-->
<!--{block/sql/SELECT%20%2A%20FROM%20uchome_blog%20ORDER%20BY%20dateline%20DESC%20LIMIT%200%2C8/cachename/test/cachetime/0}-->
<!--{loop $_SBLOCK['test'] $value}-->
<li class="app-thread"><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[subject]</a></li>
<!--{/loop}-->

eval的使用
合理的使用Ucenter Home模板语法中的eval语法,会在一定程序上降低二次开发的难度。比如:
1.通过eval语法在模板内执行PHP语句

<!--eval用法演示-->
<!--{eval echo '<li class="app-thread"><a href="do.php?ac=demo"><strong>最新日志演示</strong></a>';}-->

2.通过eval语法引入一个外部PHP文件
引入外部文件

<!--用eval来include外部文件-->
<!--{eval include 'demo.php'}-->

备注:通过在模板中引入外部文件,你可做任何你想做的事情。

直接外部文件
do.php的扩展
1.首先,在do.php文件中添加允许的新方法
即在

$acs = array('login', 'comment', 'wall', 'register', 'lostpasswd', 'swfupload', 'inputpwd',
'sns', 'viewspace', 'relatekw', 'ajax', 'seccode');

之后添加

$acs[] = 'demo';

2.然后,在source目录下新建do_demo.php文件,调用地址就是do.php?ac=demo
虽然UCH发布的文件是加密信息,但是我们从其已经开源的文件中可以得出进行UCH二次开发宝贵的信息。
比如/source/cron这个目录下以及source/class_mysql.php文件都是开源的,我们可以从中找出,对UCH进行二次开发非常有用的一些信息,比如如何进行SQL查询,通过分析,我们可以写出以下文件。

< ?php
!defined('IN_UCHOME') && exit('Access Denied');

$query = $_SGLOBAL['db']->query('SELECT * FROM '.tname('blog').' ORDER BY dateline DESC LIMIT 10');
$bloglist = array();
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
$bloglist[] = $value;
}
include template('do_demo');
?>

模板文件templates/default/do_demo.htm内容为

<!--{template header}-->

<div class="side_right">
<div class="wide">
<div class="post_list">
<ul>
<!--{loop $bloglist $value}-->
<li>
<div class="title">
<h4><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[subject]</a></h4>
<a href="space.php?uid=$value[uid]">$value[username]</a> <span class="time"><!--{date('Y-m-d H:i',$value[dateline])}--></span>
</div>
<div class="status">
<!--{if $value[viewnum]}--><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[viewnum] 次阅读</a><span class="pipe">|</span><!--{/if}-->
<!--{if $value[replynum]}--><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]#comment">$value[replynum] 个评论</a><!--{else}-->没有评论<!--{/if}-->
</div>
</li>
<!--{/loop}-->
</ul>
</div>
</div>
</div>

<!--{template footer}-->

总结
虽然当前的UCH尚未开源,但是在模板界面完全可修改,合理利用上述数据调用机制的情况下,鲜有我们不能实现的页面效果和数据调用要求。

(0)

相关推荐

  • 简单分析ucenter 会员同步登录通信原理

    1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid)). 3.然后这个函数后向Ucenter的index.php传递数据,index.php接受传

  • php完全过滤HTML,JS,CSS等标签

    记得以前写过一篇文章 php有效的过滤html标签,js代码,css样式标签: 复制代码 代码如下: <?php $str = preg_replace( "@<script(.*?)</script>@is", "", $str ); $str = preg_replace( "@<iframe(.*?)</iframe>@is", "", $str ); $str = preg_r

  • thinkphp3.x中变量的获取和过滤方法详解

    本文实例讲述了thinkphp3.x中变量的获取和过滤方法.分享给大家供大家参考,具体如下: 这里我们来学习如何在ThinkPHP中使用变量和对变量进行过滤. 在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好ThinkPHP提供的变量获取功能,就可以轻松的获取和驾驭变量了. 一.获取变量 1.首先,我们来谈下如何获取变量. 第一种方式:传统获取方式,你仍然可以在开发过程中使用传统方式获取各种系统变量,例如: $i

  • PHP开发不能违背的安全规则 过滤用户输入

    作为最基本的防范你需要注意你的外部提交,做好第一面安全机制处理防火墙. 规则 1:绝不要信任外部数据或输入 关于Web应用程序安全性,必须认识到的第一件事是不应该信任外部数据.外部数据(outside data) 包括不是由程序员在PHP代码中直接输入的任何数据.在采取措施确保安全之前,来自任何其他来源(比如 GET 变量.表单 POST.数据库.配置文件.会话变量或 cookie)的任何数据都是不可信任的. 例如,下面的数据元素可以被认为是安全的,因为它们是在PHP中设置的. 复制代码 代码如

  • php通过两层过滤获取留言内容的方法

    本文实例讲述了php通过两层过滤获取留言内容的方法.分享给大家供大家参考,具体如下: //两层过滤,获取留言的内容 $str='<div id="read_111111" style="font-size:14px;line-height:150%;padding:10px;">测试文字1<div id="lwd_12223"><h6 class="quote"><span class

  • ucenter通信原理分析

    1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid)). 3.然后这个函数后向Ucenter的index.php传递数据,index.php接受传

  • PHP中字符安全过滤函数使用小结

    在WEB开发过程中,我们经常要获取来自于世界各地的用户输入的数据.但是,我们"永远都不能相信那些用户输入的数据".所以在各种的Web开发语言中,都会提供保证用户输入数据安全的函数.在PHP中,有些非常有用并且方便的函数,它们可以帮助你防止出现像SQL注入攻击,XSS攻击等问题. 1. mysql_real_escape_string() 这个函数曾经对于在PHP中防止SQL注入攻击提供了很大的帮助,它对特殊的字符,像单引号和双引号,加上了"反斜杠",确保用户的输入在

  • destoon整合UCenter图文教程

    1.首先登录UCenter管理中心 添加应用 2.填写完毕后,点提交,将页面滚动至底部 复制其中的Ucenter配置信息至记事本 注意图中的数据表前缀和API地址 80%以上的整合失败是因为这两个参数填写错误导致的 3.进入Destoon管理后台 -> 会员管理 -> 模块设置 -> 会员整合 填写相关参数 提交即可整合成功 通常情况下UC提示通信成功可能不等于整合成功 如果DZ里登陆退出不能和Destoon同步,可能是DZ跳转过快导致,可按下图调整跳转时间

  • ucenter中词语过滤原理分析

    本文分析了ucenter中词语过滤原理.分享给大家供大家参考,具体如下: 过滤词语表: id admin find replacement findpattern 1 UCenterAdminist 访问 大 /访问/is 2 UCenterAdminist 4655 45 /4655/is 3 UCenterAdminist fdsaf dfsa /fdsaf/is 4 UCenterAdminist 有机会 在 /有机会/is 组建缓存数据: //private function _get_

  • UCenter中的一个可逆加密函数authcode函数代码

    复制代码 代码如下: function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { $ckey_length = 4; // 随机密钥长度 取值 0-32; // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度. // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方 // 当此值为 0 时,则不产生随机密钥 $key =

  • UCenter 批量添加用户的php代码

    复制代码 代码如下: <? //作者:www.tongqiong.com //header("content-type:text/html; charset=utf-8"); //include_once("include/config.php"); //include_once("include/db_mysql.inc.php"); ////include_once("include/n_public_function.php

  • php将会员数据导入到ucenter的代码

    我们要用的会员表结构 复制代码 代码如下: create table if not exists `net_111cnnet` ( `id` int(11) not null auto_increment, `username` varchar(32) default null, `add_time` int(11) default null, `email` varchar(50) default null, `password` varchar(50) default null, `last

随机推荐