Da Tommy Test ja erfolgreich war, auch wenn ich vergessen hatte die functions.php mit in das ZIP zu legen, wofür ich mich nochmals endschuldige
Werde ich das ganze jetzt in einem Video zeigen. Vorab aber mein Ansatz hier erklärt:
Das man nicht alle Dateien über Mobirise auf den Server übertragen kann ist eigentlich logisch und sollte nicht weiter stören. Die wichtigen Dateien in dem Projekt sind ja das dashboard, die login.php und die geschützten Seiten.
Genau das kann man mit Mobirise auch übertragen, wenn man am Projekt was ändert.
In meinem Beispiel sind die Blöcke bereits so umgebaut das man sie als Userblöcke speichern kann und in jedes beliebige Projekt einbauen kann.
Auf den Server legen muss man von Hand mittels FTP Client folgende Dateien:
.htaccess, data.json, admin_panel.php, functions.php und logout.php
Diese Dateien sind nicht in Mobirise enthalten, werden aber benötigt.
Im Dashboard sind zur Zeit noch die Buttons Zum Admin Panel und Abmelden vorhanden. Die kann man auch im Code Editor dort löschen und durch Menüpunkte in Mobirise ersetzen. Das habe ich Beispielhaft schon mit dem Abmelden gemacht oben im Menü unter Log Out.
Die zu schützenden Seiten sind zwingend mit der Endung .php zu benennen und müssen im Before <!DOCTYPE> folgendes stehen haben:
Code: Alles auswählen
<?php
// Startet die Session auf dieser Seite
session_start();
// Überprüft, ob der Benutzer angemeldet ist
if (!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true) {
// Wenn nicht angemeldet, leitet es den Benutzer zur Anmeldeseite weiter
header("location: login.php");
exit;
}
?>
Diese Dateien sind bereits im Projekt mit dem Seiten Namen: test.php und volker.php und könnten auch leicht geklont werden und entsprechend umbenannt werden.
Die Seite die den Login Block hat, muss folgenden Code im Before <!DOCTYPE> haben:
<?php
// Startet die Session
session_start();
// Lädt die Hilfsfunktionen für die JSON-Datei
require_once 'functions.php';
$username_err = $password_err = "";
// Verarbeitung des Formulars, wenn es gesendet wird
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Überprüfung des Benutzernamens
if (empty(trim($_POST["username"]))) {
$username_err = "Bitte geben Sie einen Benutzernamen ein.";
} else {
$username = trim($_POST["username"]);
}
// Überprüfung des Passworts
if (empty(trim($_POST["password"]))) {
$password_err = "Bitte geben Sie Ihr Passwort ein.";
} else {
$password = trim($_POST["password"]);
}
// Überprüfung der Anmeldedaten
if (empty($username_err) && empty($password_err)) {
// JSON-Daten laden
$data = load_data();
$users = $data['users'];
$user_data = null;
// Suchen des Benutzers im JSON-Array
foreach ($users as $user) {
if ($user['username'] === $username) {
$user_data = $user;
break;
}
}
// Überprüfung, ob der Benutzer gefunden wurde und das Passwort übereinstimmt
if ($user_data && password_verify($password, $user_data['password'])) {
// Passwort ist korrekt, starte eine Session
$_SESSION["loggedin"] = true;
$_SESSION["id"] = $user_data['id'];
$_SESSION["username"] = $user_data['username'];
$_SESSION["role"] = $user_data['role'];
// Weiterleitung zum Dashboard
header("location: dashboard.php");
exit;
} else {
// Fehlermeldung
$password_err = "Ungültiger Benutzername oder Passwort.";
}
}
}
?>
Die Seite mit dem dashboard Block muss ebenfalls den Code im Before <!DOCTYPE> hier haben:
<?php
session_start();
// Lädt die Hilfsfunktionen für die JSON-Datei
require_once 'functions.php';
// Überprüft, ob der Benutzer angemeldet ist
if (!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true) {
header("location: login.php");
exit;
}
$role = $_SESSION['role'];
$user_id = $_SESSION['id'];
// JSON-Daten laden
$data = load_data();
$pages = $data['pages'];
$user_pages = $data['user_pages'];
?>
Wichtig !!! Die Seiten müssen dann auch in Mobirse dashboard.php und login.php heißen damit das alles funktioniert