summaryrefslogtreecommitdiff
path: root/login/index.php
diff options
context:
space:
mode:
authorstefan_gey <stfngy@proton.me>2025-03-25 22:51:39 +0100
committerstefan_gey <stfngy@proton.me>2025-03-25 22:51:39 +0100
commitf99b7701847efec51466d6a54f5f057cc6234d88 (patch)
tree0fe595f297aa9d83a74f124b2c7a0cbd1e7ae6ab /login/index.php
commit
Diffstat (limited to 'login/index.php')
-rwxr-xr-xlogin/index.php156
1 files changed, 156 insertions, 0 deletions
diff --git a/login/index.php b/login/index.php
new file mode 100755
index 0000000..229b130
--- /dev/null
+++ b/login/index.php
@@ -0,0 +1,156 @@
+<?php
+/* error_reporting(E_ALL);
+ini_set('display_errors', 1); */
+session_start();
+
+if (isset($_POST['abmelden'])) unset($_SESSION['benutzer']);
+
+$benutzername = $_POST['input_benutzername'];
+$passwort = $_POST['input_passwort'];
+
+$datenbank = new mysqli('localhost', 'root', 'sexyweyer', 'Annapurna');
+
+if ($_POST['abmelden_loeschen'] == 'abmelden') {
+ unset($_SESSION['benutzer']);
+} elseif ($_POST['abmelden_loeschen'] == 'loeschen') {
+ $benutzer = $_SESSION['benutzer'];
+ $datenbank->query("DELETE FROM benutzer WHERE benutzer_id = '$benutzer'");
+ unset($_SESSION['benutzer']);
+}
+if (isset($_POST['konto_loeschen'])) {
+ $datenbank->query("DELETE FROM benutzer WHERE benutzer_id = '{$_SESSION['benutzer']}'");
+}
+
+if ($_POST['login'] == 'anmeldung') {
+
+ $statement = $datenbank->prepare("SELECT * FROM benutzer WHERE benutzername = ?");
+ $statement->bind_param('s', $benutzername);
+ $statement->execute();
+ $result = $statement->get_result();
+ $statement->close();
+
+ if ($user = $result->fetch_assoc()) {
+ if (password_verify($passwort, $user['passwort'])) {
+ $_SESSION['benutzer'] = $user['benutzer_id'];
+ } else {
+ $nachricht = "Passwort ist falsch!";
+ }
+ } else {
+ $nachricht = "Benutzername nicht registriert!";
+ }
+
+} else if ($_POST['login'] == 'registrierung') {
+
+ if (str_contains($benutzername, ' ')) {
+ $nachricht = "Benutzername darf keine Leerzeichen enthalten!";
+ } else if (str_contains($passwort, ' ')) {
+ $nachricht = "Passwort darf keine Leerzeichen enthalten!";
+ } else if (!preg_match('/[^a-zA-Z0-9]/', $passwort)) {
+ $nachricht = "Passwort muss ein Sonderzeichen enthalten!";
+ }
+ $statement = $datenbank->prepare("SELECT * FROM benutzer WHERE benutzername = ?");
+ $statement->bind_param('s', $benutzername);
+ $statement->execute();
+ $result = $statement->get_result();
+
+ if ($result->num_rows) {
+ $nachricht = "Benutzername ist schon registriert!";
+ } else {
+ $passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
+
+ $statement = $datenbank->prepare(
+ "INSERT INTO benutzer (benutzername, passwort, letzter_login)
+ VALUES (?, ?, NOW())"
+ );
+ $statement->bind_param('ss', $benutzername, $passwort_hash);
+
+ if ($statement->execute()) {
+ $nachricht = "Benutzer wurde erfolgreich registriert!";
+ } else {
+ $nachricht = "Fehler bei der Registrierung(" . $statement->errno . "): " . $statement->error;
+ }
+ }
+ $statement->close();
+}
+$datenbank->close();
+?>
+
+<!DOCTYPE html>
+<html lang="de">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>Login</title>
+ <link rel="icon" type="image/x-icon" href="/style/avocado.png">
+ <link rel="stylesheet" type="text/css" href="/style/style.css">
+</head>
+
+<body>
+
+<nav class="medium_box">
+ <ul class="hor_spacing">
+ <li class="hor_spacing_item">
+ <a class="small_box tertiary_color_style" href="/login">Login</a>
+ </li>
+ <li class="hor_spacing_item">
+ <a class="small_box color_inverse_on_hover" href="/kalorien_rechner">Kalorien-rechner</a>
+ </li>
+ <li class="hor_spacing_item">
+ <a class="small_box color_inverse_on_hover" href="/kalorien_zaehler">Kalorien-zähler</a>
+ </li>
+ <li class="hor_spacing_item">
+ <a class="small_box color_inverse_on_hover" href="/rezepte">Rezepte</a>
+ </li>
+ <li class="hor_spacing_item">
+ <a class="small_box color_inverse_on_hover" href="/workouts">Workouts</a>
+ </li>
+ </ul>
+</nav>
+
+<main class="big_box hor_spacing">
+ <h1>Anmeldung / Registrierung</h1>
+
+ <?php if (isset($_SESSION['benutzer'])) { ?>
+
+ <div class="medium_box">
+ <h2>Sie sind eingeloggt!</h2>
+ <form class="flexbox" action="" method="POST">
+ <button class="small_box color_inverse_on_hover" style="flex: 1" type="submit" name="abmelden_loeschen" value="abmelden"><h2 style="margin: 0">Abmelden</h2></button>
+ <button class="small_box color_inverse_on_hover" style="flex: 1" type="submit" name="abmelden_loeschen" value="loeschen"><h2 style="margin: 0">Konto löschen</h2></button>
+ </form>
+ </div>
+
+ <?php } else {
+ ?>
+
+ <form class="hor_spacing_item" method="POST" action="">
+ <ol style="list-style-position: inside">
+ <p><li>Benutzername und Passwort dürfen keine Leerzeichen enthalten.</li></p>
+ <p><li>Das Passwort muss mindestens ein Sonderzeichen enthalten.</li></p>
+ <p><li>Benutzername und Passwort dürfen nicht weniger als 8 und mehr als 24 Charaktere enthalten.</li></p>
+ <p><li>Durch die Registrierung akzeptieren Sie die <a href="/agb.html" style="text-decoration: underline">AGBs</a></li></p>
+ </ol>
+ <br>
+ <div class="flexbox hor_spacing_item">
+ <div class="medium_box" style="flex: 1">
+ <h2>Benutzername: </h2>
+ <input class="small_box color_inverse_on_hover" type="text" minlength="8" maxlength="24" name="input_benutzername" required>
+ </div>
+ <div class="medium_box" style="flex: 1">
+ <h2>Passwort: </h2>
+ <input class="small_box color_inverse_on_hover" type="password" minlength="8" maxlengh="24" name="input_passwort" required>
+ </div>
+ </div>
+ <div class="flexbox hor_spacing_item">
+ <button class="medium_box color_inverse_on_hover" style="flex: 1" type="submit" name="login" value="anmeldung"><h2 style="margin: 0">ANMELDEN</h2></button>
+ <button class="medium_box color_inverse_on_hover" style="flex: 1" type="submit" name="login" value="registrierung"><h2 style="margin: 0">REGISTRIEREN</h2></button>
+ </div>
+ </form>
+
+ <?php if ($nachricht) { ?>
+ <div class="medium_box hor_spacing_item"><h2><?= $nachricht ?></h2></div>
+ <?php }
+ } ?>
+</main>
+</body>
+</html>