| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User: 中闽 < 1464674022@qq.com >
 
-  * Date: 2020/2/4
 
-  * Time: 12:47
 
-  */
 
- namespace app\install\controller;
 
- use mysqli;
 
- use think\Controller;
 
- use think\Env;
 
- class Index extends Controller
 
- {
 
-     protected function _initialize()
 
-     {
 
-         if (is_installed()) {
 
-             $this->error('无法重复安装,请删除install.lock才能再次安装!', '/');
 
-         }
 
-     }
 
-     public function index()
 
-     {
 
-         return $this->fetch('step1');
 
-     }
 
-     public function step2()
 
-     {
 
-         $data['pdo'] = class_exists('pdo') ? 1 : 0;
 
-         $data['pdo_mysql'] = extension_loaded('pdo_mysql') ? 1 : 0;
 
-         $data['curl'] = extension_loaded('curl') ? 1 : 0;
 
-         $data['putenv'] = function_exists('putenv') ? 1 : 0;
 
-         $data['upload_size'] = ini_get('file_uploads') ? ini_get('upload_max_filesize') : 0;
 
-         $data['session'] = function_exists('session_start') ? 1 : 0;
 
-         return $this->fetch('', ['data' => $data]);
 
-     }
 
-     public function step3()
 
-     {
 
-         $this->assign('db_host', Env::get('db_host', '127.0.0.1'));
 
-         $this->assign('db_port', Env::get('db_port', '3306'));
 
-         $this->assign('db_name', Env::get('db_name', 'tplay'));
 
-         $this->assign('db_username', Env::get('db_username', 'root'));
 
-         $this->assign('db_password', Env::get('db_password', ''));
 
-         $this->assign('db_prefix', Env::get('db_prefix', 'tplay_'));
 
-         return $this->fetch();
 
-     }
 
-     private function initEnvConfig($data)
 
-     {
 
-         $env_str = "app_debug = false
 
- app_trace = false
 
- db_host = {$data['DB_HOST']}
 
- db_port = {$data['DB_PORT']}
 
- db_name = {$data['DB_NAME']}
 
- db_username = {$data['DB_USER']}
 
- db_password = {$data['DB_PWD']}
 
- db_prefix = {$data['DB_PREFIX']}";
 
-         if (false == file_put_contents(ROOT_PATH . ".env", $env_str)) {
 
-             $this->error('创建env配置文件失败,请检查目录权限');
 
-         }
 
-     }
 
-     public function createData()
 
-     {
 
-         if ($this->request->isPost()) {
 
-             $data = $this->request->param();
 
-             $validate = new \think\Validate([
 
-                 ['DB_TYPE|数据库类型', 'require|eq:mysql'],
 
-                 ['DB_HOST|数据库地址', 'require'],
 
-                 ['DB_PORT|数据库端口', 'require'],
 
-                 ['DB_USER|数据库用户名', 'require'],
 
- //                ['DB_PWD|数据库密码', 'require'],
 
-                 ['DB_NAME|数据库名字', 'require'],
 
-                 ['DB_PREFIX|表前缀', 'require'],
 
-                 ['username|管理员账户', 'require'],
 
-                 ['password|密码', 'require|confirm'],
 
-             ]);
 
-             if (!$validate->check($data)) {
 
-                 $this->error('提交失败:' . $validate->getError());
 
-             }
 
-             // create .env
 
-             $this->initEnvConfig($data);
 
-             // connect db
 
-             $link = @new mysqli("{$data['DB_HOST']}:{$data['DB_PORT']}", $data['DB_USER'], $data['DB_PWD']);
 
-             $error = $link->connect_error;
 
-             if (!is_null($error)) {
 
-                 // 转义防止和alert中的引号冲突
 
-                 $error = addslashes($error);
 
-                 $this->error('数据库链接失败:' . $error);
 
-             }
 
-             $link->query("SET NAMES 'utf8'");
 
-             if ($link->server_info < 5.0) {
 
-                 $this->error('请将您的mysql升级到5.0以上');
 
-             }
 
-             if (!$link->select_db($data['DB_NAME'])) {
 
-                 //创建库
 
-                 $create_sql = 'CREATE DATABASE IF NOT EXISTS ' . $data['DB_NAME'] . ' DEFAULT CHARACTER SET utf8;';
 
-                 if (!$link->query($create_sql)) {
 
-                     $this->error('数据库链接失败');
 
-                 }
 
-                 $link->select_db($data['DB_NAME']);
 
-             }
 
-             // 导入sql
 
-             if (file_exists(APP_PATH . 'install/data/db.sql')) {
 
-                 $tplay_sql = file_get_contents(APP_PATH . 'install/data/db.sql');
 
-             } else {
 
-                 $tplay_sql = file_get_contents(APP_PATH . 'install/data/tplay.sql');
 
-             }
 
-             $search = [
 
-                 "tplay_",
 
-                 "USE `tplay`",
 
-                 "CREATE DATABASE IF NOT EXISTS `tplay`",
 
-             ];
 
-             $replace = [
 
-                 $data['DB_PREFIX'],
 
-                 "USE `" . $data['DB_NAME'] . "`",
 
-                 "CREATE DATABASE IF NOT EXISTS `" . $data['DB_NAME'] . "`",
 
-             ];
 
-             $sql_array = preg_split("/;[\r\n]+/", str_replace($search, $replace, $tplay_sql));
 
-             foreach ($sql_array as $k => $v) {
 
-                 if (!empty($v)) {
 
-                     $link->query($v);
 
-                 }
 
-             }
 
-             // create install.lock
 
-             $salt = random_string();
 
-             if (false == file_put_contents(ROOT_PATH . "install.lock", "安装鉴定文件,请勿删除,勿修改,勿泄露此文件!!!此次安装时间:" . date('Y-m-d H:i:s', time()) . " - {$salt}")) {
 
-                 $this->error('创建安装鉴定文件失败,请检查目录权限');
 
-             }
 
-             // update admin password
 
-             $link->query("UPDATE `{$data['DB_PREFIX']}admin` SET `name` = '{$data['username']}',`password` = '" . password($data['password']) . "' WHERE `id` = 1");
 
-             $link->close();
 
-             $this->success('安装成功');
 
-         }
 
-     }
 
- }
 
 
  |