❌ Installation bereits durchgeführt!
Lösche config.php für Neuinstallation oder nutze ?force=1
'); } $error = ''; $success = ''; $step = isset($_GET['step']) ? (int)$_GET['step'] : 1; // SCHRITT 2: Installation durchführen if ($_SERVER['REQUEST_METHOD'] === 'POST' && $step === 2) { try { // Korrekte Datenbankdaten aus vorherigen Chats $host = 'localhost'; $dbname = 'db123456_zeit'; $user = 'db123456_patrick'; $pass = 'Zeit2025!'; $admin_email = trim($_POST['admin_email'] ?? ''); $admin_pass = $_POST['admin_pass'] ?? ''; if (empty($admin_email) || empty($admin_pass)) { throw new Exception('Bitte Admin E-Mail und Passwort eingeben!'); } // Datenbankverbindung testen $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); // Tabellen erstellen $pdo->exec("DROP TABLE IF EXISTS time_entries, projects, users"); // Users Tabelle $pdo->exec("CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, role ENUM('admin', 'user') DEFAULT 'user', language VARCHAR(2) DEFAULT 'de', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); // Projects Tabelle mit allen neuen Feldern $pdo->exec("CREATE TABLE projects ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, client VARCHAR(255) NOT NULL, description TEXT, address_street VARCHAR(255), address_city VARCHAR(255), address_zip VARCHAR(20), address_country VARCHAR(100), lat DECIMAL(10, 8), lng DECIMAL(11, 8), geofence_enabled BOOLEAN DEFAULT 0, geofence_radius INT DEFAULT 100, materials JSON, tools JSON, active BOOLEAN DEFAULT 1, created_by INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (created_by) REFERENCES users(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); // Time Entries Tabelle $pdo->exec("CREATE TABLE time_entries ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, project_id INT NOT NULL, start_time DATETIME NOT NULL, end_time DATETIME, duration INT, type ENUM('work', 'break', 'travel') DEFAULT 'work', notes TEXT, geofence_verified BOOLEAN DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); // Admin-User erstellen $hashed_password = password_hash($admin_pass, PASSWORD_DEFAULT); $stmt = $pdo->prepare("INSERT INTO users (email, password, name, role) VALUES (?, ?, ?, 'admin')"); $stmt->execute([$admin_email, $hashed_password, 'Admin']); // Demo-Projekte erstellen $demo_project_1 = $pdo->prepare("INSERT INTO projects ( name, client, description, address_street, address_city, address_zip, address_country, lat, lng, geofence_enabled, geofence_radius, materials, tools, created_by ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $materials_1 = json_encode([ ['name' => 'Kabel NYM 3x1.5', 'quantity' => '250', 'unit' => 'm'], ['name' => 'Steckdosen', 'quantity' => '45', 'unit' => 'Stk'], ['name' => 'Leerrohre', 'quantity' => '80', 'unit' => 'm'] ]); $tools_1 = json_encode([ ['name' => 'Bohrmaschine Bosch GSB 13', 'quantity' => '2', 'unit' => 'Stk'], ['name' => 'Akkuschrauber', 'quantity' => '3', 'unit' => 'Stk'], ['name' => 'Leiter 3m', 'quantity' => '2', 'unit' => 'Stk'] ]); $demo_project_1->execute([ 'Bürogebäude Sanierung', 'Müller GmbH', 'Komplettsanierung des Bürogebäudes mit neuer Elektrik und Sanitär. Alle Räume werden neu verkabelt.', 'Hauptstraße 123', 'Stuttgart', '70173', 'Deutschland', 48.7758, 9.1829, 1, 100, $materials_1, $tools_1, 1 ]); // Config-Datei erstellen $config_content = " PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); function isLoggedIn() { return isset(\$_SESSION['user_id']); } function isAdmin() { return isset(\$_SESSION['role']) && \$_SESSION['role'] === 'admin'; } function requireLogin() { if (!isLoggedIn()) { header('Location: login.php'); exit; } } ?>"; file_put_contents('config.php', $config_content); // Login-Seite erstellen $login_content = "prepare('SELECT * FROM users WHERE email = ?'); \$stmt->execute([\$email]); \$user = \$stmt->fetch(); if (\$user && password_verify(\$password, \$user['password'])) { \$_SESSION['user_id'] = \$user['id']; \$_SESSION['user_name'] = \$user['name']; \$_SESSION['role'] = \$user['role']; \$_SESSION['language'] = \$user['language']; header('Location: index.php'); exit; } else { \$error = 'Ungültige Anmeldedaten!'; } } ?>Version 1.1
Time Track V 1.1 installiert sich automatisch mit allen Features:
Legen Sie jetzt Ihren Administrator-Account an.
Time Track V 1.1 wurde erfolgreich installiert.