UCHome二次开发解析(一)
引用于hnbk开发手记
使用UCHome插件的用户越来越多,但所有的站都使用同样的同样的程序,没有自己的特色是很难推广开的。同时不同的站需要不同的功能,同时同一个站在不同的时期也有不同的功能需求,鉴于此,本人通过多款插件的开发经验,对UCHome程序也有了一定的认识。
为了感谢广大站长对我的插件的关心,本人开贴,对UCHome程序进行全面解析。主要分为程序篇和模板篇。请希望学习UCHome的会员关注此贴。今天晚上准备第一章,
index.php文件第一行就是包含了
include_once(‘./common.php’);
文件所以先对common.php文件解析:
<?php
/*
[UCenter Home] (C) 2007-2008 Comsenz Inc.
$Id: common.php 10981 2009-01-14 03:05:20Z liguode $
*/
//定义一个常量,用来在其他页面中,防止被恶意用户直接调用其他PHP文件。
@define(‘IN_UCHOME’, TRUE);
//定义一个常量,这个常量表示版本号
define(‘X_VER’, ‘1.5′);
//这个也是一个常量,次版本号
define(‘X_RELEASE’, ‘20090114′);
/*定义程序的调试模式,在我们调试程序的时候将常量值设为1,这样程序出错的时候会在页面显示错误信息。
在调试完毕正常投入使用后设为0,这样程序出错不会显示给用户。
*/
define(‘D_BUG’, ‘0′);
//通过D_BUG常量值指定错误报告类型。其中error_reporting()的参数是错误报告类型,相关参数可查询PHP手册
D_BUG?error_reporting(7):error_reporting(0);
//这下面都是定义的全局变量。具体的会在后面使用的时候一一介绍
$_SGLOBAL = $_SCONFIG = $_SBLOCK = $_TPL = $_SCOOKIE = $_SN = $space = array();
//定义程序目录常量。其中DIRECTORY_SEPARATOR是路径分隔符,linux上就是’/’ windows上是’\’
define(‘S_ROOT’, dirname(__FILE__).DIRECTORY_SEPARATOR);
//加载基本的配置文件,用了@符号,达到找不到该文件时在页面不提示错误信息
if(!@include_once(S_ROOT.’./config.php’)) {
//如果找不到的话则重定向到安装文件
header(“Location: install/index.php”);
exit();
}
//通用函数文件,具体函数在介绍时间会一一解释
include_once(S_ROOT.’./source/function_common.php’);
//时间microtime()获取含毫秒的时间
$mtime = explode(‘ ‘, microtime());
$_SGLOBAL['timestamp'] = $mtime[1];
//$mtime[0]为UNIX时间戳(整形), $mtime[0]为毫秒
$_SGLOBAL['supe_starttime'] = $_SGLOBAL['timestamp'] + $mtime[0];
//get_magic_quotes_gpc检测PHP.INI配置中的魔术引号功能是否打开
$magic_quote = get_magic_quotes_gpc();
if(empty($magic_quote)) {
//如果自动过滤每打开,则对传入的参数进行转义
$_GET = saddslashes($_GET);
$_POST = saddslashes($_POST);
}
//货主站点的URL,其中getsiteurl()是用来获取当前站点的域名
if(empty($_SC['siteurl'])) $_SC['siteurl'] = getsiteurl();
//链接数据库
dbconnect();
//打开缓存文件
foreach (array(‘config’, ‘app’, ‘userapp’, ‘ad’) as $value) {
if(!@include_once(S_ROOT.’./data/data_’.$value.’.php’)) {
//如果缓存文件打开失败重建缓存,function_cache.php是包含建立缓存的函数文件
include_once(S_ROOT.’./source/function_cache.php’);
$cache_func = $value.’_cache’;
//调用相应的函数来生成缓存。
$cache_func();
}
}
//获取COOKIE前缀的长度,$_SC['cookiepre']是在config.php中定义的COOKIE函数的前缀名称,$_COOKIE是存放COOKIE的数据全局变量数组
$prelength = strlen($_SC['cookiepre']);
foreach($_COOKIE as $key => $val) {
//判断当前域名下的COOKIE中属于UCHome的COOKIE
if(substr($key, 0, $prelength) == $_SC['cookiepre']) {
//对COOKIE值进行转义
$_SCOOKIE[(substr($key, $prelength))] = empty($magic_quote) ? saddslashes($val) : $val;
}
}
//是否启用GIP压缩传输,这个是用来提高PHP传输速度的。
if ($_SC['gzipcompress'] && function_exists(‘ob_gzhandler’)) {
ob_start(‘ob_gzhandler’);
} else {
ob_start();
}
//初始化
$_SGLOBAL['supe_uid'] = 0; //初始化当前用户的UID
$_SGLOBAL['supe_username'] = ”; //初始化当前用户的用户名
$_SGLOBAL['inajax'] = empty($_GET['inajax'])?0:intval($_GET['inajax']); //这个是用来在页面中控制一些弹出框,在模板篇会介绍
$_SGLOBAL['ajaxmenuid'] = empty($_GET['ajaxmenuid'])?”:$_GET['ajaxmenuid'];
$_SGLOBAL['refer'] = empty($_SERVER['HTTP_REFERER'])?”:$_SERVER['HTTP_REFERER']; //获得上一页的URL,用来跳转
//登录注册防灌水机
/*
在登录或者注册的时候看到形如:do.php?ac=750e45d29d276b2f86f1445627c08f99的链接
后面的750e45d29d276b2f86f1445627c08f99就是用下面的来获取的。
*/
if(empty($_SCONFIG['login_action'])) $_SCONFIG['login_action'] = md5(‘login’.md5($_SCONFIG['sitekey']));
if(empty($_SCONFIG['register_action'])) $_SCONFIG['register_action'] = md5(‘register’.md5($_SCONFIG['sitekey']));
//整站风格,检查站点模板的路径。此处是default目录,就是我们常用黄色风格的模板路径
if(empty($_SCONFIG['template'])) {
$_SCONFIG['template'] = ‘default’;
}
//在首页由下角可以自行选择风格的实现就是通过这段。
if($_SCOOKIE['mytemplate']) {
$_SCOOKIE['mytemplate'] = str_replace(‘.’,”,trim($_SCOOKIE['mytemplate']));
if(file_exists(S_ROOT.’./template/’.$_SCOOKIE['mytemplate'].’/style.css’)) {
$_SCONFIG['template'] = $_SCOOKIE['mytemplate'];
} else {
ssetcookie(‘mytemplate’, ”);
}
}
//处理REQUEST_URI,查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。 如为空则为当前页面。
if(!isset($_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];
if(isset($_SERVER['QUERY_STRING'])) $_SERVER['REQUEST_URI'] .= ‘?’.$_SERVER['QUERY_STRING'];
}
//判断用户登录状态
checkauth();
//用户菜单
getuserapp();
//处理UC应用,这个是漫游相关菜单,在此不用解释
$_SGLOBAL['appmenus'] = $_SGLOBAL['appmenu'] = array();
if($_SGLOBAL['app']) {
foreach ($_SGLOBAL['app'] as $value) {
if($value['open']) {
if(empty($_SGLOBAL['appmenu'])) {
$_SGLOBAL['appmenu'] = $value;
} else {
$_SGLOBAL['appmenus'][] = $value;
}
}
}
}
?>
分享到:
相关推荐
【uchome积分充值插件】是一款专为UCHome2.0社区平台设计的扩展应用,旨在为用户提供方便快捷的积分充值功能。这款插件的独特之处在于它无任何使用限制,...了解并熟练运用这类插件,对于管理和优化社交网站至关重要。
总结,UCHome 的二次开发涉及到对文件结构的理解,数据调用的熟悉,以及核心函数的运用。开发者应熟练掌握这些基础知识,才能高效地进行 UCHome 的定制和扩展。同时,保持对最新版本的了解,以便利用新特性并及时...
对于网站运营者来说,合理运用这款插件可以有效提升网站的活跃度和用户黏性,对于商家而言,良好的用户点评可以帮助他们改善服务,吸引更多的消费者。因此,掌握并善用这个插件,是提升UCHOME社区价值的重要手段。
开发者需要有扎实的PHP基础,熟悉Web开发流程,并且能够灵活运用Uchome提供的工具和资源。通过深入学习和实践,开发者可以将Uchome打造成满足特定需求的社区平台,为用户提供更加个性化的服务。
此外,优化数据库查询、减少不必要的资源加载、缓存策略的运用等也是提升UChome性能的关键。 总之,UChome的二次开发涵盖了数据库操作、函数调用、页面定制等多个方面,通过深入理解和实践,开发者可以打造出独具...
《UCHome二次开发详解》 在互联网社区建设中,UCHome作为一款强大的开源社区建站系统,因其功能丰富、灵活性高而备受青睐。对于开发者来说,掌握UCHome的二次开发技术,可以极大地拓展其功能,满足个性化需求。本文...
对于开发者而言,理解和运用数据缓存策略是提高网站性能的关键。 #### UCHOME公用函数 公用函数库提供了丰富的功能,覆盖了从基础操作到复杂业务逻辑的方方面面。熟练掌握这些函数,可以极大地简化代码编写,提高...
《UCHOME学习说明书》 ...通过以上对UCHOME的学习,无论是开发者还是管理员,都能更深入地了解和运用这个平台,从而提升社区的运营效果和用户体验。持续学习和实践,将能更好地驾驭UCHOME,打造富有活力的在线社区。
理解并熟练运用这些函数,可以帮助开发者快速实现所需的功能。例如,`space_get()`函数用于获取用户信息,`space_view()`用于展示用户空间,而`thread_get()`和`post_get()`则分别用于获取主题和帖子的数据。 在...
【UCHOME 学习教程】 ...通过以上内容的学习,你将能够全面掌握 UCHOME 并运用到实际项目中,构建和维护一个活跃的社区网站。无论是个人兴趣,还是职业发展,投入时间学习 UCHOME 都将带来丰富的收获。
《UCHome插件马甲SayHello深度解析》 在互联网社区建设中,UCHome作为一款流行的开源社交网站系统,为用户提供...对于开发者和社区管理员来说,理解并合理运用这类插件,能够优化社区环境,推动社区健康、有序的发展。
综上所述,UCHome2.0 提供的友情链接功能是网站运营中不可或缺的一部分,正确运用可以提升网站的影响力和搜索排名。理解并掌握友链的申请、管理与优化,有助于在互联网的海洋中,让您的网站更具竞争力。在使用 ...
在深入探讨UCHOME的通用方法之前,首先需要理解UCHOME是什么。UCHOME(U Center Home)是一款由Comsenz公司开发的社区建站系统,它允许...理解和熟练运用这些方法,将极大提升你在UCHOME平台上的开发效率和代码质量。
**UCHome1.5正式版数据字典详解** 在互联网社区建设中,UCHome是一款广泛使用的开源社交网站系统。...理解并运用这些信息,能够使你在搭建、维护和升级社区时更加得心应手,为用户提供更高效、更个性化的服务。
在进行Uchome二次开发或故障排查时,理解并熟练运用这些函数至关重要。对于初学者,建议结合源代码中的注释进行学习,以便更好地掌握每个函数的具体用法和功能。同时,Uchome的官方文档也是很好的参考资料,可以提供...
《UCHome2.0聊天室插件GBK:深入解析与应用指南》 UCHome2.0是一款基于PHP的开源社区建站系统,以其强大的社交...无论你是新手站长还是经验丰富的开发者,理解并掌握这款插件的运用,都将对你的网站运营产生积极影响。
本文将聚焦于Uchome中的`common.php`,解析其中的关键知识点,帮助读者更好地理解和运用PHP编程。 首先,`common.php`是Uchome的核心文件之一,它主要负责设置环境变量、定义常量、初始化全局变量、处理数据库连接...
《求职招聘插件for UCHome 2.0 GBK:构建社区招聘信息平台》 在互联网社区运营中,提供一个方便、高效的求职...对于社区管理者来说,合理运用此插件,能够有效增强社区的吸引力和影响力,进一步推动社区的繁荣发展。
MySQL则是数据存储的关键,理解数据库设计和SQL语句的运用至关重要。而前端技术则关乎用户体验,良好的CSS布局和JavaScript交互能提升网站的易用性。 在UCenter方面,它是Comsenz公司推出的一款集用户管理、权限...
《UCHOME 2.0整合新浪微博QQ人人网GBK UTF8插件详解》 UCHOME是一款广泛应用的开源社区建站系统,它为用户提供了构建个性化...通过合理运用这些插件,可以有效提升社区的活跃度和用户黏性,为网站发展注入新的活力。