First Implementation

This commit is contained in:
2026-05-26 00:20:34 +02:00
parent ee7986bef3
commit 4d4b8aeb99
8 changed files with 245 additions and 26 deletions
Generated
+1
View File
@@ -10,6 +10,7 @@
<option name="highlightLevel" value="WARNING" /> <option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.5" />
<component name="PhpStanOptionsConfiguration"> <component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
+25
View File
@@ -0,0 +1,25 @@
<?php
session_start();
require_once "includes/UserDAO.php";
$dao = new UserDAO();
/*
Deregistrierung
Funktion: Entfernt User aus Dummy-Daten und beendet Session
*/
if (isset($_SESSION["user_email"])) {
$email = $_SESSION["user_email"];
$dao->deleteUser($email);
}
/* Session beenden */
$_SESSION = [];
session_destroy();
header("Location: index.php?pfad=register");
exit();
+67 -7
View File
@@ -1,3 +1,40 @@
<?php
session_start();
require_once "includes/UserDAO.php";
$dao = new UserDAO();
$error = null;
/*
Verarbeitung des Login-Formulars
Funktion: Prüft Benutzerdaten und erstellt Session für eingeloggten Nutzer
*/
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = $_POST["email"];
$password = $_POST["password"];
// Benutzer im DAO suchen (Dummy-Daten)
$user = $dao->findUser($email);
// Prüfung der Zugangsdaten
if ($user && $user["password"] === $password) {
// Session setzen = User ist eingeloggt
$_SESSION["user"] = $user["username"];
$_SESSION["user_email"] = $user["email"];
// Weiterleitung zum Profil
header("Location: index.php?pfad=profile");
exit();
} else {
$error = "Login fehlgeschlagen. Bitte überprüfe deine Eingaben.";
}
}
?>
<!-- <!--
Form: Login-Bereich Form: Login-Bereich
Funktion: Benutzerauthentifizierung und Zugang zum eigenen Profil, Erstellen von Beiträgen, etc. Funktion: Benutzerauthentifizierung und Zugang zum eigenen Profil, Erstellen von Beiträgen, etc.
@@ -7,26 +44,49 @@
<h1>Bitte anmelden</h1> <h1>Bitte anmelden</h1>
<form> <!-- Fehlermeldung anzeigen -->
<label id ="inputEmail" class="screenreader-only">E-Mail Adresse / </label> <?php if ($error): ?>
<p style="color:red;"><?php echo $error; ?></p>
<?php endif; ?>
<form method="post" action="index.php?pfad=login">
<p class="input-label">Benutzername/E-Mail-Adresse:</p> <p class="input-label">Benutzername/E-Mail-Adresse:</p>
<input type="email" name="email" class="login-input" placeholder="E-Mail-Adresse" required autofocus> <input type="email"
name="email"
class="login-input"
placeholder="E-Mail-Adresse"
required
autofocus>
<p class="input-label">Passwort:</p> <p class="input-label">Passwort:</p>
<input type="password" name="password" class="login-input" placeholder="Passwort" required> <input type="password"
name="password"
class="login-input"
placeholder="Passwort"
required>
<div class="checkbox-wrapper"> <div class="checkbox-wrapper">
<label> <label>
<input type="checkbox" name="remember-me" value="1"> angemeldet bleiben <input type="checkbox" name="remember-me" value="1">
angemeldet bleiben
</label> </label>
</div> </div>
<button type="submit" value="anmelden" name="loginSubmit" class="login-button">anmelden</button> <button type="submit"
value="anmelden"
name="loginSubmit"
class="login-button">
anmelden
</button>
<div class="register-link"> <div class="register-link">
<a href="register.php">Noch keinen Account? Jetzt hier registrieren!</a> <a href="index.php?pfad=register">
Noch keinen Account? Jetzt hier registrieren!
</a>
</div> </div>
</form> </form>
</div> </div>
</main> </main>
+6
View File
@@ -0,0 +1,6 @@
<?php
session_start();
session_destroy();
header("Location: index.php?pfad=login");
exit();
+8
View File
@@ -1,3 +1,11 @@
<?php
session_start();
if (!isset($_SESSION["user"])) {
header("Location: index.php?pfad=login");
exit();
}
?>
<!-- <!--
Content: Profil Content: Profil
Inhalt: Das eigene Profil, wenn man angemeldet ist. Dort hat man die Möglichkeit seine Angaben zu ändern. Inhalt: Das eigene Profil, wenn man angemeldet ist. Dort hat man die Möglichkeit seine Angaben zu ändern.
+42 -3
View File
@@ -1,3 +1,33 @@
<?php
session_start();
require_once "includes/UserDAO.php";
$dao = new UserDAO();
/*
Verarbeitung des Registrierungs-Formulars
Funktion: Erstellt neuen Benutzer (Dummy) und speichert ihn im DAO + Session
*/
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = $_POST["email"];
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$password = $_POST["password"];
// Benutzer im DAO speichern (Dummy-Daten)
$dao->addUser($email, $vorname . " " . $nachname, $password);
// Session setzen = User ist eingeloggt
$_SESSION["user"] = $vorname . " " . $nachname;
$_SESSION["user_email"] = $email;
// Weiterleitung zum Profil
header("Location: index.php?pfad=profile");
exit();
}
?>
<!-- <!--
Form: Registrierung Form: Registrierung
Funktion: Erstellung neuer Benutzerkonten Funktion: Erstellung neuer Benutzerkonten
@@ -7,7 +37,8 @@
<h1>Jetzt Registrieren!</h1> <h1>Jetzt Registrieren!</h1>
<form> <form method="post" action="index.php?pfad=register">
<p class="input-label">Email:</p> <p class="input-label">Email:</p>
<input type="email" name="email" class="login-input" placeholder="mustermann@web.de" required> <input type="email" name="email" class="login-input" placeholder="mustermann@web.de" required>
@@ -22,11 +53,19 @@
<div class="checkbox-wrapper"> <div class="checkbox-wrapper">
<label> <label>
<input type="checkbox" value="remember-me"> angemeldet bleiben <input type="checkbox" value="remember-me">
angemeldet bleiben
</label> </label>
</div> </div>
<button type="submit" value="anmelden" name="loginSubmit" class="login-button">kostenlos registrieren</button> <button type="submit"
value="register"
name="registerSubmit"
class="login-button">
kostenlos registrieren
</button>
</form> </form>
</div> </div>
</main> </main>
+40
View File
@@ -0,0 +1,40 @@
<?php
class UserDAO {
private static array $users = [
[
"email" => "test@test.de",
"username" => "test",
"password" => "1234"
]
];
public function findUser($email) {
foreach (self::$users as $user) {
if ($user["email"] === $email) {
return $user;
}
}
return null;
}
public function addUser($email, $username, $password) {
self::$users[] = [
"email" => $email,
"username" => $username,
"password" => $password
];
}
public function deleteUser($email) {
foreach (self::$users as $i => $user) {
if ($user["email"] === $email) {
unset(self::$users[$i]);
self::$users = array_values(self::$users);
return true;
}
}
return false;
}
}
+48 -8
View File
@@ -1,3 +1,7 @@
<?php
session_start();
?>
<!-- <!--
Globales Menü, wird via PHP später in alle Seiten eingebunden Globales Menü, wird via PHP später in alle Seiten eingebunden
--> -->
@@ -11,13 +15,23 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
<!-- Mobile navbar mit Burger-Symbol --> <!-- Mobile navbar mit Burger-Symbol -->
<input type="checkbox" id="nav-toggle" class="nav__checkbox"> <input type="checkbox" id="nav-toggle" class="nav__checkbox">
<label for="nav-toggle" id="mobile-nav"> <label for="nav-toggle" id="mobile-nav">
<span></span> <!-- Burger Icon Symbol --> <span>☰</span>
</label> </label>
<ul id="mobile-nav" class="nav__mobile-menu"> <ul id="mobile-nav" class="nav__mobile-menu">
<?php if (isset($_SESSION['user'])): ?>
<li><a href="index.php?pfad=profile">Profil</a></li> <li><a href="index.php?pfad=profile">Profil</a></li>
<li><a href="index.php?pfad=logout">Abmelden</a></li>
<?php else: ?>
<li><a href="index.php?pfad=login">Anmelden</a></li> <li><a href="index.php?pfad=login">Anmelden</a></li>
<li><a href="index.php?pfad=register">Registrieren</a></li> <li><a href="index.php?pfad=register">Registrieren</a></li>
<?php endif; ?>
<li> <li>
<label class="nav__mobile-label">Sprachen</label> <label class="nav__mobile-label">Sprachen</label>
<ul class="nav__mobile-submenu"> <ul class="nav__mobile-submenu">
@@ -35,7 +49,7 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
<li><a href="index.php?pfad=mathe">Mathematik</a></li> <li><a href="index.php?pfad=mathe">Mathematik</a></li>
<li><a href="index.php?pfad=biologie">Biologie</a></li> <li><a href="index.php?pfad=biologie">Biologie</a></li>
<li><a href="index.php?pfad=chemie">Chemie</a></li> <li><a href="index.php?pfad=chemie">Chemie</a></li>
<li><a href="index.php?pfad=englisch">Physik</a></li> <li><a href="index.php?pfad=physik">Physik</a></li>
<li><a href="index.php?pfad=informatik">Informatik</a></li> <li><a href="index.php?pfad=informatik">Informatik</a></li>
<li><a href="index.php?pfad=astronomie">Astronomie</a></li> <li><a href="index.php?pfad=astronomie">Astronomie</a></li>
</ul> </ul>
@@ -81,6 +95,7 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
<a href="index.php?pfad=literatur">Literatur</a> <a href="index.php?pfad=literatur">Literatur</a>
</div> </div>
</div> </div>
<div class="nav__item nav__dropdown"> <div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">MINT</button> <button class="nav__dropdown-toggle">MINT</button>
<div class="nav__dropdown-menu"> <div class="nav__dropdown-menu">
@@ -92,6 +107,7 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
<a href="index.php?pfad=astronomie">Astronomie</a> <a href="index.php?pfad=astronomie">Astronomie</a>
</div> </div>
</div> </div>
<div class="nav__item nav__dropdown"> <div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">Gesellschaft & Werte</button> <button class="nav__dropdown-toggle">Gesellschaft & Werte</button>
<div class="nav__dropdown-menu"> <div class="nav__dropdown-menu">
@@ -108,6 +124,7 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
<a href="index.php?pfad=theater">Theater</a> <a href="index.php?pfad=theater">Theater</a>
</div> </div>
</div> </div>
<div class="nav__item nav__dropdown"> <div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">Technik & Praxis</button> <button class="nav__dropdown-toggle">Technik & Praxis</button>
<div class="nav__dropdown-menu"> <div class="nav__dropdown-menu">
@@ -120,13 +137,36 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
</div> </div>
<div class="nav__right"> <div class="nav__right">
<a href="index.php?pfad=profile" class="nav_item nav__link">Profil</a>
<?php if (isset($_SESSION['user'])): ?>
<a href="index.php?pfad=profile" class="nav__item nav__link">
Profil
</a>
<div class="nav__search"> <div class="nav__search">
<?php <?php include_once 'search.php'; ?>
include_once 'search.php';
?>
</div> </div>
<a href = "index.php?pfad=login" class="nav__item nav__button">Anmelden</a>
<a href = "index.php?pfad=register" class="nav__item nav__button">Registrieren</a> <a href="index.php?pfad=logout" class="nav__item nav__button">
Abmelden
</a>
<?php else: ?>
<div class="nav__search">
<?php include_once 'search.php'; ?>
</div>
<a href="index.php?pfad=login" class="nav__item nav__button">
Anmelden
</a>
<a href="index.php?pfad=register" class="nav__item nav__button">
Registrieren
</a>
<?php endif; ?>
</div> </div>
</nav> </nav>