<?php
version_compare(PHP_VERSION, '5.2.0', '>') || die('require PHP > 5.2.0 !');
define('NZCMS_INST', dirname(__FILE__));
define('NZCMS_CORE', dirname(NZCMS_INST));
define('NZCMS_ROOT', dirname(NZCMS_CORE));
define('APP_NAME', basename(NZCMS_CORE));
error_reporting(0);
date_default_timezone_set('Asia/Shanghai');
header('Content-Type: text/html; charset=UTF-8');
if(is_file(NZCMS_CORE.'/config/config.php')) {
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
include NZCMS_INST.'/tpl/lock.php';
exit;
}
include NZCMS_CORE.'/finephp/base/base.func.php';
include NZCMS_INST.'/function.php';
$do = isset($_GET['do']) && in_array($_GET['do'], array('license', 'check_env', 'check_db', 'complete')) ? $_GET['do'] : 'license';
if($do == 'license') {
include NZCMS_INST.'/tpl/header.php';
include NZCMS_INST.'/tpl/license.php';
include NZCMS_INST.'/tpl/footer.php';
}elseif($do == 'check_env') {
include NZCMS_INST.'/tpl/header.php';
include NZCMS_INST.'/tpl/check_env.php';
include NZCMS_INST.'/tpl/footer.php';
}elseif($do == 'check_db') {
$mysql_support = function_exists('mysql_connect');
$pdo_mysql_support = extension_loaded('pdo_mysql');
$isphp5 = is_php('5.5.0');
include NZCMS_INST.'/tpl/header.php';
include NZCMS_INST.'/tpl/check_db.php';
include NZCMS_INST.'/tpl/footer.php';
}elseif($do == 'complete') {
include NZCMS_INST.'/tpl/header.php';
echo '<div id="cont" class="content"></div><div class="button"></div>';
include NZCMS_INST.'/tpl/footer.php';
if(!isset($_POST['dbhost'])) {
js_back('<u>非法访问!</u>');
}
$dbtype = isset($_POST['dbtype']) ? trim($_POST['dbtype']) : '';
$dbhost = isset($_POST['dbhost']) ? trim($_POST['dbhost']) : '';
$dbport = isset($_POST['dbport']) ? trim($_POST['dbport']) : '';
$dbuser = isset($_POST['dbuser']) ? trim($_POST['dbuser']) : '';
$dbpw = isset($_POST['dbpw']) ? trim($_POST['dbpw']) : '';
$dbname = isset($_POST['dbname']) ? trim($_POST['dbname']) : '';
$charset = 'UTF8';
$tablepre = isset($_POST['dbpre']) ? trim($_POST['dbpre']) : '';
$adm_user = isset($_POST['adm_user']) ? trim($_POST['adm_user']) : '';
$adm_pass = isset($_POST['adm_pass']) ? trim(str_replace(' ', '', $_POST['adm_pass'])) : '';
if(empty($dbhost)) {
js_back('<u>数据库主机不能为空!</u>');
}elseif(empty($dbuser)) {
js_back('<u>数据库用户名不能为空!</u>');
}elseif(!preg_match('/^\w+$/', $dbname)) {
js_back('<u>数据库名不正确!</u>');
}elseif(empty($tablepre)) {
js_back('<u>数据库表前辍不能为空!</u>');
}elseif(!preg_match('/^\w+$/', $tablepre)) {
js_back('<u>数据库表前辍不正确!</u>');
}elseif(empty($adm_user)) {
js_back('<u>创始人用户名不能为空!</u>');
}elseif(strlen($adm_pass) < 8) {
js_back('<u>密码不能小于8位数!</u>');
}
// 连接数据库
if($dbtype == 'mysql'){
if(!function_exists('mysql_connect')) {
js_back('函数 mysql_connect() 不存在,请检查 php.ini 是否加载了 mysql 模块!');
}
$link = mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpw);
if(!$link) {
js_back('MySQL 主机、账号或密码不正确!<br><u>'.mysql_error().'</u>');
}
try{
mysql_select_db($dbname, $link);
if(mysql_errno() == 1049) {
mysql_query("CREATE DATABASE $dbname DEFAULT CHARACTER SET UTF8");
if(!mysql_select_db($dbname, $link)) {
js_back('自动创建数据库失败!您的MySQL账号是否有权限创建数据库?<br><u>'.mysql_error().'</u>');
}
}
// 为防止意外,让用户自己做选择
if(empty($_POST['cover'])) {
$query = mysql_query("SHOW TABLES FROM $dbname");
while($row = mysql_fetch_row($query)) {
if(preg_match("#^{$tablepre}#", $row[0])) {
js_back('<u>发现有相同表前缀,请返回选择“覆盖安装”或“修改表前缀”。</u>');
}
}
}
// 设置编码
mysql_query("SET names utf8, sql_mode=''");
}catch(Exception $e) {
js_back('<u>未知错误!</u><br><u>'.mysql_error().'</u>');
}
}
if($dbtype == 'pdo_mysql'){
try {
$attr = array(
PDO::ATTR_TIMEOUT => 5,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
$link = new PDO("mysql:host=$dbhost;port=$dbport;dbname=$dbname", $dbuser, $dbpw, $attr);
$link->query("SET names utf8, sql_mode=''");
} catch (Exception $e){
//js_back('<u>'.$e->getMessage().'</u>');
$error = $e->getMessage() ;
}
if(!empty($error)) {
if(strpos($error, 'Unknown database') !== FALSE) {
$error = "Database $dbname 不存在:<span class=\"small\">$error</span>";
js_show("$error");
js_show("请稍候,正在尝试建立数据库...");
$link = new PDO("mysql:host=$dbhost;port=$dbport;", $dbuser, $dbpw);
try {
$query = $link->query("CREATE DATABASE $dbname DEFAULT CHARACTER SET UTF8");
} catch (Exception $e) {
$s = $link->errorInfo();
$s = str_replace($this->tablepre, '***', $s); // 防止泄露敏感信息
js_back('自动创建数据库失败!您的MySQL账号是否有权限创建数据库?<br><u>'.$s.'</u>');
}
// 为防止意外,让用户自己做选择是否覆盖原数据
}else{
js_back("$error");
}
}
if(empty($_POST['cover'])) {
$query = $link->query("SHOW TABLES FROM $dbname");
$row = $query->fetchAll();
foreach($row as $data) {
if(preg_match("#^{$tablepre}#", $data[0])) {
js_back('<u>发现有相同表前缀,请返回选择“覆盖安装”或“修改表前缀”。</u>');
}
}
}
}
// 创建数据表
$file = NZCMS_INST.'/data/mysql.sql';
if(!is_file($file)) {
js_back('mysql.sql 文件 <u>丢失</u>');
}
$s = file_get_contents($file);
$sqls = split_sql($s, $tablepre);
foreach($sqls as $sql) {
$sql = str_replace("\n", '', trim($sql));
if($dbtype == 'mysql'){
$ret = mysql_query($sql);
}else{
$ret = $link->query($sql);
}
if(substr($sql, 0, 6) == 'CREATE') {
$name = preg_replace("/CREATE TABLE ([`a-z0-9_]+) .*/is", "\\1", $sql);
if($ret) {
js_show('创建数据表 '.$name.' ... <i>成功</i>');
}else{
js_back('创建数据表 '.$name.' ... <u>失败</u> (您的数据库没有写权限?)');
}
}
if(!$ret) {
js_back('创建数据表失败</u> (您的数据库没有权限?)<br><u>'.($dbtype == 'mysql') ? mysql_error() : $e->getMessage().'</u>');
}
}
// 创建基本数据
$file = NZCMS_INST.'/data/mysql_data.sql';
if(!is_file($file)) {
js_back('mysql_data.sql 文件 <u>丢失</u>');
}
$s = file_get_contents($file);
$sqls = split_sql($s, $tablepre);
$ret = true;
foreach($sqls as $sql) {
$sql = str_replace("\n", '', trim($sql));
$name = preg_replace("/INSERT INTO ([`a-z0-9_]+) .*/is", "\\1", $sql);
if($dbtype == 'mysql'){
$res = mysql_query($sql);
}else{
$res = $link->query($sql);
}
if($res){
js_show('创建基本数据'.$name.' ... <i>成功</i>');
}else{
js_back('创建基本数据'.$name.' ... 失败!<u>'.($dbtype == 'mysql') ? mysql_error() : mysqli_error($link).'</u>');
}
//mysql_query($sql) || $ret = false;
}
if(!$ret) exit;
$salt = random(16, 3, '0123456789abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+<>,.');
$password = md5(md5($adm_pass).$salt);
$ip = ip2long(ip());
$time = time();
if($dbtype == 'mysql'){
$ret = mysql_query("INSERT INTO `{$tablepre}user` (`uid`, `upid`, `username`, `password`, `pinpass`, `salt`, `groupid`, `email`, `mobile`, `regip`, `regdate`, `loginip`, `logindate`, `lastip`, `lastdate`, `contents`, `logins`, `author`, `status`, `isadmin`, `avatar`, `qd_time`, `qd_days`, `money`, `dmoney`, `bond`, `bond_exit`, `bond_exit_time`, `gold`, `alipay`, `alipay_name`, `qq`, `email_staus`, `mobile_staus`, `order_0`, `order_1`, `order_2`, `order_3`, `sorder_0`, `sorder_1`, `sorder_2`, `sorder_3`, `credit_seller`, `cred
php网站安装向导程序
1星 需积分: 50 109 浏览量
2020-05-04
11:51:14
上传
评论
收藏 57KB ZIP 举报
美奇开发工作室
- 粉丝: 1596
- 资源: 46
最新资源
- 基于 LSTM(长短期记忆)(即改进的循环神经网络)预测风力发电厂中风力涡轮机产生的功率+源代码+文档说明
- 基于stm32f103+空心杯电机+oled按键+运动算法
- 《CKA/CKAD应试指南/从docker到kubernetes 完全攻略》学习笔记 第1章docker基础(1.1-1.4)
- 基于python实现的水下压缩空气储能互补系统建模仿真与经济效益分析+源代码+论文
- 华中科技大学-自然语言处理实验,Bi-LSTM+CRF的中文分词框架,并且利用基于深度学习的方法进行中文命名实体识别++源码报告
- 基于动态罚函数的铁路车流分配与径路优化模型python源码
- 鱼群算法求解组环问题python源码+文档说明
- 基于决策优化的多波束测深测线规划模型MATLAB代码
- 课程设计-基于python实现的多目标优化算法求解带时间窗的车辆路径规划问题+源代码+文档说明+界面截图+pptx
- 基于通信信号与通信系统的MATLAB仿真源码-课程设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈