52 lines
1.7 KiB
PHP
Executable File
52 lines
1.7 KiB
PHP
Executable File
<?php
|
|
session_start();
|
|
include('inc/db.php');
|
|
|
|
// Funktion zum Löschen von Cookies und Weiterleiten zum Login
|
|
function redirect_to_login()
|
|
{
|
|
setcookie('auth_token', '', time() - 3600, "/");
|
|
setcookie('user_id', '', time() - 3600, "/");
|
|
$_SESSION = array();
|
|
session_destroy();
|
|
header("Location: login.php");
|
|
exit;
|
|
}
|
|
|
|
// 1. Prüfen, ob bereits eine Session existiert
|
|
if (isset($_SESSION['user_id'])) {
|
|
return; // Benutzer ist bereits per Session angemeldet.
|
|
}
|
|
|
|
// 2. Ansonsten: Prüfen, ob Cookies vorhanden sind
|
|
if (isset($_COOKIE['auth_token']) && isset($_COOKIE['user_id'])) {
|
|
$cookie_token = $_COOKIE['auth_token'];
|
|
$cookie_user_id = $_COOKIE['user_id'];
|
|
|
|
// Datenbank-Abfrage, um den Token und die vollständigen Benutzerdaten zu erhalten
|
|
$stmt = mysqli_prepare($conn, "SELECT id, login_token, username, email, role FROM users WHERE id = ?");
|
|
|
|
if ($stmt) {
|
|
mysqli_stmt_bind_param($stmt, "i", $cookie_user_id);
|
|
mysqli_stmt_execute($stmt);
|
|
$result = mysqli_stmt_get_result($stmt);
|
|
$user = mysqli_fetch_assoc($result);
|
|
mysqli_stmt_close($stmt);
|
|
|
|
// 3. Tokens vergleichen
|
|
if ($user && $cookie_token === $user['login_token']) {
|
|
// Tokens stimmen überein, Benutzer per Cookie authentifizieren
|
|
// Jetzt die Benutzerdaten in die Session laden
|
|
$_SESSION['user_id'] = $user['id'];
|
|
$_SESSION['username'] = $user['username'];
|
|
$_SESSION['email'] = $user['email'];
|
|
$_SESSION['role'] = $user['role'];
|
|
|
|
return; // Authentifizierung per Cookie erfolgreich, Skript fortsetzen
|
|
}
|
|
}
|
|
}
|
|
|
|
// Wenn weder Session noch gültiger Cookie gefunden wurde
|
|
redirect_to_login();
|