diff --git a/init.php b/init.php index c92c0e2..ca8abbe 100644 --- a/init.php +++ b/init.php @@ -1,7 +1,7 @@ @@ -885,6 +885,67 @@ class HomeController extends Controller { } PHP; +$files['WEBROOT/src/MVC/Controller/AuthController.php'] = <<<'PHP' + 'password123', + 'user' => 'user123' + ]; + + if (isset($users[$username]) && $users[$username] === $password) { + $_SESSION['user_logged_in'] = true; + $_SESSION['username'] = $username; + header('Location: ?service=home'); + exit; + } else { + return $this->render('login', ['error' => 'Ungültige Anmeldedaten']); + } + } + + return $this->render('login'); + } + + public function logout() { + session_destroy(); + header('Location: ?service=login'); + exit; + } +} +PHP; + +$files['WEBROOT/src/MVC/Controller/DocsController.php'] = <<<'PHP' +render('docs', [ + 'title' => '📚 System-Dokumentation' + ]); + } +} +PHP; + $files['WEBROOT/src/MVC/Controller/TestController.php'] = <<<'PHP' Dashboard
Willkommen in de $files['WEBROOT/src/MVC/View/test1.php'] = "
= \$msg ?>
"; $files['WEBROOT/src/MVC/View/test2.php'] = "Dieses Framework basiert auf dem Model-View-Controller (MVC) Entwurfsmuster und nutzt einen Front Controller (index.php). Alle Anfragen werden zentral verarbeitet, was globale Middleware (wie Authentifizierung) und ein einheitliches Layout ermöglicht.
+service Parameter in der URL.render() für Views und json() für API-Responses.databaseMethods.php in ein objektorientiertes Interface.dev und live Umgebungen.MVC\ Namespace.APIs liegen im Verzeichnis WEBROOT/api/v1/. Sie nutzen die ApiController-Klasse.
+// Beispiel: WEBROOT/api/v1/get.php +use MVC\Classes\Api; +use MVC\Controller\ApiController; + +Api::jsonResponse((new ApiController())->get()); ++
Das Framework nutzt mysqli mit Prepared Statements für maximale Sicherheit.
DatabaseShow($table, $columns, $where, ...$values)DatabaseInsert($table, $columns, ...$values)DatabaseUpdate($table, $set, $where, ...$values)DatabaseDelete($table, $where, ...$values)method(), queryParams(), headers().ip(), userAgent(), country().set(), read(), Delete() von Cookies.php create_module.php [Name] - Erstellt Controller & View.
php create_model.php [Tabelle] [Spalten] - Erstellt ein Model.
Naming: Controller immer mit Controller-Suffix. Models im Singular.
Security: Nutze ['auth'] Middleware konsequent für alle internen Seiten.
" . $e->getMessage() . "
"; +} catch (\Throwable $e) { + http_response_code(500); + echo "" . htmlspecialchars($e->getMessage()) . "
"; + if (ini_get('display_errors')) echo "" . htmlspecialchars($e->getTraceAsString()) . ""; } PHP; @@ -1159,7 +1368,8 @@ if (!file_exists($viewFile)) { // 3. Anleitung ausgeben echo "\n--- NÄCHSTE SCHRITTE ---\n"; echo " Registriere das Modul in WEBROOT/index.php beim Router:\n"; -echo " \$router->add('{$key}', \\MVC\\Controller\\{$className}Controller::class, '{$key}', ['auth']);\n\n"; +echo " \$router->add('{$key}', \\MVC\\Controller\\{$className}Controller::class, '{$key}', ['auth']);\n"; +echo " (Lösche ['auth'] wenn kein Login erforderlich ist)\n\n"; echo "------------------------\n"; PHP; @@ -1173,4 +1383,4 @@ foreach ($files as $file => $content) { echo "\n✨ Projekt '$projectName' wurde initialisiert!\n"; echo "1. Richte deine Datenbankverbindung in WEBROOT/src/config/env.ini ein.\n"; echo "2. Starten: php server.php\n"; -echo "3. Öffnen: http://localhost:8000\n"; \ No newline at end of file +echo "3. Öffnen: http://localhost:8000\n";