setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Check if the User table exists $result = $db->query("SELECT name FROM sqlite_master WHERE type='table' AND name='User'"); $userTableExists = $result->fetchColumn(); if (!$userTableExists) { // Initialize the database structure $db->exec(" CREATE TABLE User ( id INTEGER PRIMARY KEY AUTOINCREMENT, vorname TEXT NOT NULL, nachname TEXT NOT NULL, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL, active BOOLEAN DEFAULT 0 ) "); $db->exec(" CREATE TABLE Restaurant ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, maps_link TEXT ) "); $db->exec(" CREATE TABLE Bewertung ( id INTEGER PRIMARY KEY AUTOINCREMENT, fk_user_id INTEGER NOT NULL, fk_restaurant_id INTEGER NOT NULL, bewertung INTEGER NOT NULL CHECK (bewertung BETWEEN 0 AND 10), bewertung_str TEXT, FOREIGN KEY (fk_user_id) REFERENCES User(id), FOREIGN KEY (fk_restaurant_id) REFERENCES Restaurant(id) ) "); echo "
Database structure created.
"; // Check if any users exist $checkUserStmt = $db->query("SELECT COUNT(*) FROM User"); $userCount = $checkUserStmt->fetchColumn(); if ($userCount == 0) { // Create an initial admin account $adminVorname = 'Admin'; $adminNachname = 'User'; $adminUsername = 'admin'; $adminPassword = 'admin123'; // IMPORTANT: Change this default password! $hashedPassword = password_hash($adminPassword, PASSWORD_DEFAULT); $adminActive = 2; // Let's use 2 to denote an admin user $insertAdminStmt = $db->prepare(" INSERT INTO User (vorname, nachname, username, password, active) VALUES (:vorname, :nachname, :username, :password, :active) "); $insertAdminStmt->bindParam(':vorname', $adminVorname); $insertAdminStmt->bindParam(':nachname', $adminNachname); $insertAdminStmt->bindParam(':username', $adminUsername); $insertAdminStmt->bindParam(':password', $hashedPassword); $insertAdminStmt->bindParam(':active', $adminActive, PDO::PARAM_INT); if ($insertAdminStmt->execute()) { echo "Initial admin account created: Username='admin', Password='admin123' (Please change immediately!).
"; } else { echo "Error creating initial admin account: " . print_r($insertAdminStmt->errorInfo(), true) . "
"; } } } else { // echo "Database already exists.
"; } } catch (PDOException $e) { die("Database connection failed: " . $e->getMessage()); } function sanitize_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?>