哪位高手能说明一下discuz X2.5 upload/index.php文件思路!

ilovelnmp 2013-01-31 04:41:57
discuz X2.5 upload/index.php代码如下,主说针对运行步骤(架构思路)说明一下,越详细越好,非常感谢!!!

<?php

/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: index.php 27617 2012-02-07 08:24:14Z monkey $
*/

if(!empty($_SERVER['QUERY_STRING']) && is_numeric($_SERVER['QUERY_STRING'])) {
$_ENV['curapp'] = 'home';
$_GET = array('mod'=>'space', 'uid'=>$_SERVER['QUERY_STRING']);
} else {

$url = '';
$domain = $_ENV = array();
$jump = false;
@include_once './data/sysdata/cache_domain.php';
$_ENV['domain'] = $domain;
if(empty($_ENV['domain'])) {
$_ENV['curapp'] = 'forum';
} else {
$_ENV['defaultapp'] = array('portal.php' => 'portal', 'forum.php' => 'forum', 'group.php' => 'group', 'home.php' => 'home');
$_ENV['hostarr'] = explode('.', $_SERVER['HTTP_HOST']);
$_ENV['domainroot'] = substr($_SERVER['HTTP_HOST'], strpos($_SERVER['HTTP_HOST'], '.')+1);
if(!empty($_ENV['domain']['app']) && is_array($_ENV['domain']['app']) && in_array($_SERVER['HTTP_HOST'], $_ENV['domain']['app'])) {
$_ENV['curapp'] = array_search($_SERVER['HTTP_HOST'], $_ENV['domain']['app']);
if($_ENV['curapp'] == 'mobile') {
$_ENV['curapp'] = 'forum';
if(@$_GET['mobile'] != 'no') {
@$_GET['mobile'] = 'yes';
}
}
if($_ENV['curapp'] == 'default' || !isset($_ENV['defaultapp'][$_ENV['curapp'].'.php'])) {
$_ENV['curapp'] = '';
}
} elseif(!empty($_ENV['domain']['root']) && is_array($_ENV['domain']['root']) && in_array($_ENV['domainroot'], $_ENV['domain']['root'])) {

$_G['setting']['holddomain'] = $_ENV['domain']['holddomain'] ? $_ENV['domain']['holddomain'] : array('www');
$list = $_ENV['domain']['list'];
if(isset($list[$_SERVER['HTTP_HOST']])) {
$domain = $list[$_SERVER['HTTP_HOST']];
$id = intval($domain['id']);
switch($domain['idtype']) {
case 'subarea':
$_ENV['curapp'] = 'forum';
$_GET['gid'] = $id;
break;
case 'forum':
$_ENV['curapp'] = 'forum';
$_GET['mod'] = 'forumdisplay';
$_GET['fid'] = $id;
break;
case 'topic':
$_ENV['curapp'] = 'portal';
$_GET['mod'] = 'topic';
$_GET['topicid'] = $id;
break;
case 'channel':
$_ENV['curapp'] = 'portal';
$_GET['mod'] = 'list';
$_GET['catid'] = $id;
break;
}
} elseif(count($_ENV['hostarr']) > 2 && $_ENV['hostarr'][0] != 'www' && !checkholddomain($_ENV['hostarr'][0])) {
$_ENV['prefixdomain'] = addslashes($_ENV['hostarr'][0]);
$_ENV['domainroot'] = addslashes($_ENV['domainroot']);
require_once './source/class/class_core.php';
C::app()->init_setting = true;
C::app()->init_user = false;
C::app()->init_session = false;
C::app()->init_cron = false;
C::app()->init_misc = false;
C::app()->init();
$jump = true;
$domain = C::t('common_domain')->fetch_by_domain_domainroot($_ENV['prefixdomain'], $_ENV['domainroot']);
$apphost = $_ENV['domain']['app'][$domain['idtype']] ? $_ENV['domain']['app'][$domain['idtype']] : $_ENV['domain']['app']['default'];
$apphost = $apphost ? 'http://'.$apphost.'/' : '';
switch($domain['idtype']) {
case 'home':
if($_G['setting']['rewritestatus'] && in_array('home_space', $_G['setting']['rewritestatus'])) {
$url = rewriteoutput('home_space', 1, $apphost, $domain['id']);
} else {
$url = $apphost.'home.php?mod=space&uid='.$domain['id'];
}
break;
case 'group':
if($_G['setting']['rewritestatus'] && in_array('group_group', $_G['setting']['rewritestatus'])) {
$url = rewriteoutput('group_group', 1, $apphost, $domain['id']);
} else {
$url = $apphost.'forum.php?mod=group&fid='.$domain['id'].'&page=1';
}
break;
}
}
} else {
$jump = true;
}
if(empty($url) && empty($_ENV['curapp'])) {
if(!empty($_ENV['domain']['defaultindex']) && !$jump) {
if($_ENV['defaultapp'][$_ENV['domain']['defaultindex']]) {
$_ENV['curapp'] = $_ENV['defaultapp'][$_ENV['domain']['defaultindex']];
} else {
$url = $_ENV['domain']['defaultindex'];
}
} else {
if($jump) {
$url = empty($_ENV['domain']['app']['default']) ? (!empty($_ENV['domain']['defaultindex']) ? $_ENV['domain']['defaultindex'] : 'forum.php') : 'http://'.$_ENV['domain']['app']['default'];
} else {
$_ENV['curapp'] = 'forum';
}
}
}
}
}
if(!empty($url)) {
$delimiter = strrpos($url, '?') ? '&' : '?';
if(isset($_GET['fromuid']) && $_GET['fromuid']) {
$url .= $delimiter.'fromuid='.$_GET['fromuid'];
} elseif(isset($_GET['fromuser']) && $_GET['fromuser']) {
$url .= $delimiter.'fromuser='.$_GET['fromuser'];
}
header("HTTP/1.1 301 Moved Permanently");
header("location: $url");
} else {
require './'.$_ENV['curapp'].'.php';
}

function checkholddomain($domain) {
global $_G;

$domain = strtolower($domain);
if(preg_match("/^[^a-z]/i", $domain)) return true;
$holdmainarr = empty($_G['setting']['holddomain']) ? array('www') : explode('|', $_G['setting']['holddomain']);
$ishold = false;
foreach ($holdmainarr as $value) {
if(strpos($value, '*') === false) {
if(strtolower($value) == $domain) {
$ishold = true;
break;
}
} else {
$value = str_replace('*', '.*?', $value);
if(@preg_match("/$value/i", $domain)) {
$ishold = true;
break;
}
}
}
return $ishold;
}
?>
...全文
1188 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
googlg 2013-09-25
  • 打赏
  • 举报
回复
$_ENV['curapp'] = 'home'; 不知道是什么意思
googlg 2013-09-25
  • 打赏
  • 举报
回复
顶你。我也想知道
Discuz! X3.1 在继承和完善 Discuz! X3.0 的基础上,针对广告垃圾防御进行了大幅度的调整,新防水墙、帐号保镖、云验证码等功能为社区的健康运转提供更加可靠的保障。 全新安装: 请参照以往版本的安装过程进行,上传程序,并执行 http://你的域名/论坛/install/ 升级: 请参照以往版本的安装过程进行,上传程序,并执行 http://你的域名/论坛/install/ 升级: 1. DiscuzX 程序 1.0, 1.5 2.0 , 2.5Beta, 2.5RC,2.5, 3.0 1)备份数据库 2)建立文件夹 old,旧程序除了 data , config, uc_client, uc_server 目录以外的程序移动进入 old目录中 3) 上传 3.1 程序(压缩包中 upload 目录中的文件), 如上传时候提示覆盖目录,请选择“是” 4)上传安装包 utility 目录中的 update.php 到论坛 install 目录,删除 install 目录中的index.php 执行 http://你的域名/论坛路径/install/update.php 参照提示进行升级即可。升级时间随着数据的大小和服务器性能而变, 依据测试,10G左右的论坛,从 2.5 升级值 3.0 大约需 1.5-2.5 个小时。如果你的版本更老一些,升级的时间消耗的会更多些。 升级完毕,进入后台,更新缓存,并测试功能。 升级成功后,old目录中的文件可以删除了。 2. Discuz! 7.2 或以下版本的程序 1)首先参看我们的转换教程, 将程序转换到 X2.0 2)上传 3.1 程序 3)上传 utility 目录中的 update.php 到 install 目录,删除目录中的index.php 执行 http://你的域名/论坛路径/install/update.php 参照提示进行升级即可
Discuz! X3 在继承和完善 Discuz! X2.5 的基础上,针对“系统架构”、“负载性能”、“用户交互体验”等几大方面,进行了全面升级。 为进一步保障正式版的稳定,我们特此发布RC版,希望广大站长协助我们进行测试。 安装说明说明: 全新安装:请参照以往版本的安装过程进行,上传程序,并执行 http://你的域名/论坛/install/ 升级: -------------------------------------------------------------------------------- 1. DiscuzX 程序 1.0、 1.5、 2.0、 2.5、3.0Beta 1)备份数据库 2)建立文件夹 old,旧程序除了 data , config, uc_client, uc_server 目录以外的程序移动进入 old目录中 3) 上传 3.0 RC程序(压缩包中 upload 目录中的文件) 4)上传安装包 utility 目录中的 update.php 到论坛 install 目录,删除 install 目录中的index.php 执行 http://你的域名/论坛路径/install/update.php 参照提示进行升级即可。升级时间随着数据的大小和服务器性能而变, 依据测试,10G左右的论坛,从 2.5 升级值 3.0 大约需 1.5-2.5 个小时。如果你的版本更老一些,升级的时间消耗的会更多些。 升级完毕,进入后台,更新缓存,并测试功能。最后,你可以将old目录中所需要的东西移动回来 -------------------------------------------------------------------------------- 2. Discuz! 7.2 或以下版本的程序 1)首先参看我们的转换教程, 将程序转换到 X2.0 2)上传 3.0 RC程序 3)上传 utility 目录中的 update.php 到 install 目录,删除目录中的index.php 执行 http://你的域名/论坛路径/install/update.php 参照提示进行升级即可

20,397

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧