install.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. // error_reporting(0);
  3. include "model.php";
  4. define('install', true);
  5. define('INSTALL_ROOT', __DIR__);
  6. define('TESTING_TABLE', 'config');
  7. $step = $_GET['step'] ?? 1;
  8. $installDir = "install";
  9. $modelInstall = new installModel();
  10. // 检查是否有安装过
  11. if ($modelInstall->appIsInstalled() && in_array($step, [1, 2, 3, 4])) {
  12. die('可能已经安装过本系统了,请删除配置目录下面的install.lock文件再尝试');
  13. }
  14. $post = [
  15. 'host' => $_POST['host'] ?? 'localhost',
  16. 'port' => $_POST['port'] ?? '3306',
  17. 'user' => $_POST['user'] ?? '',
  18. 'password' => $_POST['password'] ?? '',
  19. 'name' => $_POST['name'] ?? '',
  20. 'admin_user' => $_POST['admin_user'] ?? 'admin',
  21. 'admin_password' => $_POST['admin_password'] ?? '',
  22. 'admin_confirm_password' => $_POST['admin_confirm_password'] ?? '',
  23. 'prefix' => $_POST['prefix'] ?? 'ims_',
  24. 'import_test_data' => $_POST['import_test_data'] ?? 'off',
  25. 'clear_db' => $_POST['clear_db'] ?? 'off',
  26. ];
  27. $message = '';
  28. // 检查数据库正确性
  29. if ($step == 4) {
  30. $canNext = true;
  31. if (empty($post['prefix'])) {
  32. $canNext = false;
  33. $message = '数据表前缀不能为空';
  34. } elseif ($post['admin_user'] == '') {
  35. $canNext = false;
  36. $message = '请填写管理员用户名';
  37. } elseif (empty(trim($post['admin_password']))) {
  38. $canNext = false;
  39. $message = '管理员密码不能为空';
  40. } elseif ($post['admin_password'] != $post['admin_confirm_password']) {
  41. $canNext = false;
  42. $message = '两次密码不一致';
  43. } else {
  44. // 检查 数据库信息
  45. $result = $modelInstall->checkConfig($post['name'], $post);
  46. if ($result->result == 'fail') {
  47. $canNext = false;
  48. $message = $result->error;
  49. }
  50. // 导入测试数据
  51. if ($canNext == true && $post['import_test_data'] == 'on') {
  52. if (!$modelInstall->importDemoData()) {
  53. $canNext = false;
  54. $message = '导入测试数据错误';
  55. }
  56. }
  57. // 写配置文件
  58. if ($canNext) {
  59. $modelInstall->mkdataconfig([
  60. 'server' => $post['host'],
  61. 'username' => $post['user'],
  62. 'password' => $post['password'],
  63. 'port' => $post['port'],
  64. 'name' => $post['name'],
  65. 'prefix' => $post['prefix']
  66. ]);
  67. $modelInstall->mkLockFile();
  68. }
  69. // 恢复admin和index入口
  70. if ($canNext) {
  71. $modelInstall->restoreIndexLock();
  72. }
  73. }
  74. if (!$canNext)
  75. $step = 3;
  76. }
  77. // 取得安装成功的表
  78. $successTables = $modelInstall->getSuccessTable();
  79. $nextStep = $step + 1;
  80. include __DIR__ . "/template/main.php";