setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 创建数据库 $pdo->exec("CREATE DATABASE IF NOT EXISTS " . DB_NAME); $pdo->exec("USE " . DB_NAME); // 用户表 $pdo->exec("CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL, credits INT DEFAULT 10, invite_code VARCHAR(20) UNIQUE NOT NULL, invited_by INT DEFAULT NULL, is_admin TINYINT DEFAULT 0, is_verified TINYINT DEFAULT 0, verification_token VARCHAR(64), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_sign_in DATE, INDEX idx_invite_code (invite_code), INDEX idx_email (email), FOREIGN KEY (invited_by) REFERENCES users(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); // 签到记录表 $pdo->exec("CREATE TABLE IF NOT EXISTS sign_in_logs ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, sign_in_date DATE NOT NULL, credits_earned INT DEFAULT 2, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY unique_signin (user_id, sign_in_date), FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); // 域名表 $pdo->exec("CREATE TABLE IF NOT EXISTS domains ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, main_domain VARCHAR(100) NOT NULL, subdomain VARCHAR(100) NOT NULL, record_type VARCHAR(10) NOT NULL, record_value VARCHAR(255) NOT NULL, status TINYINT DEFAULT 1, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY unique_domain (main_domain, subdomain), FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, INDEX idx_user (user_id), INDEX idx_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); // 邀请记录表 $pdo->exec("CREATE TABLE IF NOT EXISTS invite_logs ( id INT PRIMARY KEY AUTO_INCREMENT, inviter_id INT NOT NULL, invitee_id INT NOT NULL, credits_earned INT DEFAULT 10, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (inviter_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY (invitee_id) REFERENCES users(id) ON DELETE CASCADE, UNIQUE KEY unique_invitee (invitee_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); // 系统设置表 $pdo->exec("CREATE TABLE IF NOT EXISTS settings ( setting_key VARCHAR(50) PRIMARY KEY, setting_value TEXT, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); // 插入默认设置 $pdo->exec("INSERT IGNORE INTO settings (setting_key, setting_value) VALUES ('theme', 'dark'), ('credit_per_domain', '5'), ('max_domains_per_user', '10'), ('sign_in_credit', '2'), ('invite_credit', '10'), ('site_name', '域名分发系统') "); // 创建管理员账户(提示用户输入) echo "
您已安装 Parlz Domains Beta 0.1。
" echo "请访问 注册页面 来创建管理员账户。
"; echo ""; } catch (PDOException $e) { die("安装失败: " . $e->getMessage()); } ?>