📄 index.php
字号:
<?php
/*
[Discuz!] (C)2001-2007 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: index.php 13624 2008-04-29 02:33:39Z heyond $
*/
error_reporting(E_ERROR | E_WARNING | E_PARSE);
@ob_start();
@set_time_limit(1000);
set_magic_quotes_runtime(0);
define('IN_DISCUZ', TRUE);
define('DISCUZ_ROOT', '../');
require DISCUZ_ROOT.'./discuz_version.php';
require DISCUZ_ROOT.'./include/db_mysql.class.php';
require DISCUZ_ROOT.'./install/install.lang.php';
require DISCUZ_ROOT.'./install/install.func.php';
require DISCUZ_ROOT.'./install/install.config.php';
$self = basename(__FILE__);
$attachdir = './attachments';
$attachurl = 'attachments';
$step = intval(getgpc('step', 'R')) ? intval(getgpc('step', 'R')) : 0;
$sqlfile = DISCUZ_ROOT.'./install/discuz.sql';
$lockfile = DISCUZ_ROOT.'./forumdata/install.lock';
@include DISCUZ_ROOT.'./config.inc.php';
if(!defined('UC_API')) {
define('UC_API', '');
}
show_header();
foreach (array('dbhost', 'dbuser', 'dbpw', 'dbname', 'tablepre', 'dbcharset', 'charset') as $key) {
if(!isset($$key)) {
show_error('error_config_vars', array(), true);
}
}
if(!ini_get('short_open_tag')) {
show_error('short_open_tag_invalid', '', true);
} elseif(file_exists($lockfile)) {
show_error('install_locked', '', true);
} elseif(!class_exists('dbstuff')) {
show_error('database_nonexistence', '', true);
}
if(empty($dbcharset) && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8'))) {
$dbcharset = str_replace('-', '', $charset);
}
$uchidden = '';
if(getgpc('ucapi', 'p')) {
$uchidden = var_to_hidden('ucapi', getgpc('ucapi', 'p'));
$uchidden .= var_to_hidden('appurl', getgpc('appurl', 'p'));
$uchidden .= var_to_hidden('ucfounderpw', getgpc('ucfounderpw', 'p'));
}
if($step == 0) {
show_license();
} elseif($step == 1) {
$PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$bbserver = 'http://'.preg_replace("/\:\d+/", '', $_SERVER['HTTP_HOST']).($_SERVER['SERVER_PORT'] && $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '');
$default_ucapi = $bbserver.'/ucenter';
$default_appurl = $bbserver.substr($PHP_SELF, 0, strpos($PHP_SELF, 'install/') - 1);
$envsubmit = getgpc('envsubmit', 'P');
if(!$envsubmit) {
$errors = check_env();
$quit = $errors['quit'];
unset($errors['quit']);
if($errors) {
show_error('error_env', $errors, $quit);
}
}
$errors = array();
$dns_error = false;
$app_type = 'DISCUZ'; // Only For Discuz!
$app_charset = $charset;
$app_dbcharset = $dbcharset;
$app_name = getgpc('app_name') ? getgpc('app_name') : 'Discuz! Board';
$app_url = getgpc('app_url') ? getgpc('app_url') : $default_appurl;
$ucapi = getgpc('ucapi', 'P') ? getgpc('ucapi', 'P') : (defined('UC_API') && UC_API ? UC_API : $default_ucapi);
$ucip = getgpc('ucip', 'P');
$ucfounderpw = getgpc('ucfounderpw', 'P');
$app_tagtemplates = 'apptagtemplates[template]='.urlencode('<a href="{url}" target="_blank">{subject}</a>').'&'.
'apptagtemplates[fields][subject]='.urlencode($lang['tagtemplates_subject']).'&'.
'apptagtemplates[fields][uid]='.urlencode($lang['tagtemplates_uid']).'&'.
'apptagtemplates[fields][username]='.urlencode($lang['tagtemplates_username']).'&'.
'apptagtemplates[fields][dateline]='.urlencode($lang['tagtemplates_dateline']).'&'.
'apptagtemplates[fields][url]='.urlencode($lang['tagtemplates_url']);
if($envsubmit) {
$ucapi = preg_replace("/\/$/", '', trim($ucapi));
if(empty($ucapi) || !preg_match("/^(http:\/\/)/i", $ucapi)) {
$errors['uc_url'] = 'uc_url_invalid';
} else {
if(!$ucip) {
$temp = @parse_url($ucapi);
$ucip = gethostbyname($temp['host']);
if(ip2long($ucip) == -1 || ip2long($ucip) === FALSE) {
$ucip = '';
$dns_error = true;
}
}
}
$connect_error = false;
if(!$errors && !$dns_error) {
include_once DISCUZ_ROOT.'./uc_client/client.php';
$ucinfo = dfopen($ucapi.'/index.php?m=app&a=ucinfo', 500, '', '', 1, $ucip);
list($status, $ucversion, $ucrelease, $uccharset, $ucdbcharset, $apptypes) = explode('|', $ucinfo);
if($status != 'UC_STATUS_OK') {
$ucip = '';
$connect_error = true;
$errors['uc_url'] = 'uc_url_unreachable';
} else {
$dbcharset = strtolower($dbcharset ? str_replace('-', '', $dbcharset) : $dbcharset);
$ucdbcharset = strtolower($ucdbcharset ? str_replace('-', '', $ucdbcharset) : $ucdbcharset);
if(UC_VERSION > $ucversion) {
show_error('uc_version_incorrect', '', TRUE);
} elseif($dbcharset && $ucdbcharset != $dbcharset) {
show_error('uc_dbcharset_incorrect', '', TRUE);
}
$postdata = "m=app&a=add&ucfounder=&ucfounderpw=".urlencode($ucfounderpw)."&apptype=".urlencode($app_type)."&appname=".urlencode($app_name)."&appurl=".urlencode($app_url)."&appip=&appcharset=".$app_charset.'&appdbcharset='.$app_dbcharset.'&'.$app_tagtemplates;
$ucconfig = dfopen($ucapi.'/index.php', 500, $postdata, '', 1, $ucip);
if(empty($ucconfig)) {
$errors['uc_url'] = lang('');
} elseif($ucconfig == '-1') {
$errors['uc_adminpw'] = 'uc_admin_invalid';
} else {
list($appauthkey, $appid) = explode('|', $ucconfig);
if(empty($appauthkey) || empty($appid)) {
$errors['uc_url'] = 'uc_data_invalid';
}elseif($succeed = save_uc_config($ucconfig."|$ucapi|$ucip", DISCUZ_ROOT.'./config.inc.php')) {
redirect($self.'?step='.($step + 1));
} else {
$errors[] = 'config_unwriteable';
}
}
}
}
}
show_tips('tips_uc_install');
show_error('', $errors);
show_setting('start');
show_setting('uc_url', 'ucapi', $ucapi, 'text', $errors['uc_url']);
($dns_error || $connect_error) && show_setting('uc_ip', 'ucip', $ucip, 'text', true);
show_setting('uc_adminpw', 'ucfounderpw', $ucfounderpw, 'password', $errors['uc_adminpw']);
show_setting('uc_app_name', 'app_name', $app_name, 'text');
show_setting('uc_app_url', 'app_url', $app_url, 'text');
show_setting('', 'envsubmit', $lang['new_step'], 'submit');
show_setting('hidden', 'step', $step);
show_setting('end');
show_footer();
} elseif($step == 2) {
$error_config = $error_admin = $adminuser = array();
$showforceinstall = false;
if($_POST['boardsubmit']) {
$dbhost = charcovert(getgpc('dbhost', 'p'));
$dbuser = charcovert(getgpc('dbuser', 'p'));
$dbpw = charcovert(getgpc('dbpw', 'p'));
$dbname = charcovert(getgpc('dbname', 'p'));
$adminemail = charcovert(getgpc('adminemail', 'p'));
$tablepre = charcovert(getgpc('tablepre', 'p'));
$forceinstall = getgpc('forceinstall', p);
if(empty($dbname)) {
$error_config['dbname'] = 'dbname_invalid';
} else {
if(!@mysql_connect($dbhost, $dbuser, $dbpw)) {
$errno = mysql_errno();
if($errno == 1045) {
$error_config['dbuser'] = 1;
$error_config['dbpw'] = 1;
} elseif($errno == 2003) {
$error_config['dbhost'] = 1;
} else {
$error_config[] = 'database_errno_'.$errno;
}
} else {
if(mysql_get_server_info() > '4.1') {
mysql_query("CREATE DATABASE IF NOT EXISTS `$dbname` DEFAULT CHARACTER SET $dbcharset");
} else {
mysql_query("CREATE DATABASE IF NOT EXISTS `$dbname`");
}
if(mysql_errno()) {
$error_config[] = 'database_errno_'.mysql_errno();
} else {
$result = mysql_query("SELECT COUNT(*) FROM `$dbname`.{$tablepre}settings");
if($result && !$forceinstall) {
$error_config['forceinstall'] = true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -