Guten Tag
und zwar bin ich gerade daran ein simples Login System zu erstellen.
Dabei habe ich 4 Dateien:
Index.html (Loginfenster) ;
login.php (Datenbankzugriff und Überprüfung der Daten) ;
Dashboard.php (Wenn Zugangsdaten korrekt)
logout.php (Um die Session zu löschen)
Also kurz zum Ablauf:
Wenn die Daten korrekt sind, startet er eine Session und speichert in nem Array, ob er angemeldet ist, sprich: login = true und welchen user.
Danach wird er auf die Dashboard.php Seite weitergeleitet.
Dort überprüft er auf der Seite, ob die Session login leer ist und leitet sonst wieder auf die index.html um, wo man sich anmelden kann. Falls diese nicht leer sein sollte, zeigt er nur kurz an, mit welchen Benutzer man angemeldet ist und ob man die Sitzung beenden will.
Mein Problem:
Ich möchte die Session auch bei der index.html Seite überprüfen, da man nicht gleich wieder sich neu anmelden muss, wenn man nur die dashboard.php Seite verlassen hat, sondern auch, solange man sich nicht abgemeldet hat, auch wieder direkt auf die dashboard.php Seite weitergeleitet wird.
Dies funktioniert leider nicht, es passiert schlichtweg gar nichts und der passende PHP Code wird nur angezeigt auf der Seite.
Codes:
PHP Code zur Überprüfung ob die Session leer ist bei der index.html:
Session Eintragung bei der Login.php:
Überprüfung ob die Session leer ist bei der Dashboard.php:
Session Löschung bei der logout.php:
Ich hoffe ihr könnt mir da weiterhelfen, weil ich finde den Fehler einfach nicht, habe bestimmt einfach nur mal wieder Tomaten auf den Augen..
Vielen Dank im vorraus!
und zwar bin ich gerade daran ein simples Login System zu erstellen.
Dabei habe ich 4 Dateien:
Index.html (Loginfenster) ;
login.php (Datenbankzugriff und Überprüfung der Daten) ;
Dashboard.php (Wenn Zugangsdaten korrekt)
logout.php (Um die Session zu löschen)
Also kurz zum Ablauf:
Wenn die Daten korrekt sind, startet er eine Session und speichert in nem Array, ob er angemeldet ist, sprich: login = true und welchen user.
Danach wird er auf die Dashboard.php Seite weitergeleitet.
Dort überprüft er auf der Seite, ob die Session login leer ist und leitet sonst wieder auf die index.html um, wo man sich anmelden kann. Falls diese nicht leer sein sollte, zeigt er nur kurz an, mit welchen Benutzer man angemeldet ist und ob man die Sitzung beenden will.
Mein Problem:
Ich möchte die Session auch bei der index.html Seite überprüfen, da man nicht gleich wieder sich neu anmelden muss, wenn man nur die dashboard.php Seite verlassen hat, sondern auch, solange man sich nicht abgemeldet hat, auch wieder direkt auf die dashboard.php Seite weitergeleitet wird.
Dies funktioniert leider nicht, es passiert schlichtweg gar nichts und der passende PHP Code wird nur angezeigt auf der Seite.
Codes:
PHP Code zur Überprüfung ob die Session leer ist bei der index.html:
PHP-Code:
<?php
session_start();
session_regenerate_id();
if (empty($_SESSION['login']))
{
exit;
}
else
{
echo "<meta http-equiv='refresh' content='0; URL=../dashboard.php'> ";
exit;
}
?>
PHP-Code:
if ($row = $result->fetch_array(MYSQLI_ASSOC))
{
if (md5($_POST['password']) == $row['password'])
{
session_start();
$_SESSION = array(
'login' => true,
'user' => array('username' => $row['username'] )
);
$message['success'] = 'Anmeldung erfolgreich, <a href="dashboard.php">weiter zum Inhalt.';
mysqli_query($mysqli, "UPDATE users Set lastlogin = NOW() WHERE id = 1"); // Lastlogin wird aktualisiert
mysqli_query($mysqli, "UPDATE users Set onlinestatus = 1 WHERE id = 1"); // Onlinestatus wird auf 1 gesetzt
header("Location: dashboard.php");
exit();
}
else
{
$message['error'] = 'Das Kennwort ist nicht korrekt.';
}
}
else
{
$message['error'] = 'Der Benutzer wurde nicht gefunden.';
}
PHP-Code:
<?php
session_start();
session_regenerate_id();
if (empty($_SESSION['login']))
{
echo "<meta http-equiv='refresh' content='1; URL=../index.html'> ";
exit;
}
else
{
$login_status = '
<div style="border: 1px solid black">
Sie sind als <strong>' . htmlspecialchars($_SESSION['user']['username']) . '</strong> angemeldet.<br />
<a href="./logout.php">Sitzung beenden</a>
</div>
';
}
?>
PHP-Code:
<?php
session_start();
$_SESSION = array();
$mysqli = @new mysqli('localhost', 'xxx', 'xxx', 'xxx');
mysqli_query($mysqli, "UPDATE users Set onlinestatus = 0 WHERE id = 1"); // Onlinestatus wird auf 0 gesetzt
if (ini_get('session.use_cookies')) {
$params = session_get_cookie_params();
setcookie(
session_name(),
'',
time() - 42000,
$params['path'],
$params['domain'],
$params['secure"'],
$params['httponly']
);
}
session_destroy();
echo "<p>Sie wurden erfolgreich abgemeldet! Sie werden in 5 Sekunden automatisch weitergeleitet.</p>";
echo "<p>Falls die automatische Weiterleitung nicht funktioniert, klicken Sie <a href='../index.html' style='color:red'>hier</a>.";
echo "<meta http-equiv='refresh' content='5; URL=../index.html'> ";
exit;
?>
Ich hoffe ihr könnt mir da weiterhelfen, weil ich finde den Fehler einfach nicht, habe bestimmt einfach nur mal wieder Tomaten auf den Augen..
Vielen Dank im vorraus!
Kommentar