Einfache Serververwaltung mit PHP und MySQL Verbesserung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde geleert.)
Markierung: Geleert
 
(35 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Ziel des Projekts ==
 
Dieses Projekt zeigt, wie eine einfache Serververwaltungs-Webseite aufgebaut wird. Dabei lernen die Teilnehmer die grundlegende Interaktion zwischen PHP, MySQL und einer Web-Oberfläche.
 
  
Die Webseite soll folgende Daten verwalten:
 
* Rechnername
 
* IP-Adresse mit Netzmaske
 
* Betriebssystem
 
* Festplattenspeicher
 
* RAM
 
* Hauptdienst
 
 
Zusätzlich wird eine Benutzerverwaltung integriert:
 
* Bestimmte Benutzer dürfen Daten eintragen, ändern und löschen
 
* Andere Benutzer dürfen nur Daten lesen
 
* Am Ende wird die Webseite mit HTTPS gesichert
 
 
== Installation der benötigten Pakete ==
 
Zuerst müssen die notwendigen Pakete installiert werden:
 
 
Pakete aktualisieren:
 
* '''apt update && apt upgrade -y'''
 
 
Benötigte Software installieren:
 
* '''apt install apache2 mariadb-server php php-mysql libapache2-mod-php -y'''
 
 
Apache und MariaDB starten und aktivieren:
 
* '''systemctl enable --now apache2 mariadb'''
 
 
Datenbank absichern:
 
* '''mysql_secure_installation'''
 
  (Fragen zur Absicherung beantworten und Root-Passwort setzen)
 
 
== Anmeldung an der Datenbank ==
 
* '''mysql -u root'''
 
 
== Einrichtung der Datenbank ==
 
Datenbank erstellen:
 
* '''create database serververwaltung;'''
 
 
Zur neuen Datenbank wechseln:
 
* '''use serververwaltung;'''
 
 
Tabelle für die Serverdaten anlegen:
 
<pre>
 
create table server (
 
  id int auto_increment primary key,
 
  rechnername varchar(50) not null,
 
  ip_adresse varchar(50) not null,
 
  betriebssystem varchar(50) not null,
 
  festplattenspeicher int not null,
 
  ram int not null,
 
  hauptdienst varchar(50) not null
 
);
 
</pre>
 
 
Tabelle für die Benutzerverwaltung anlegen:
 
<pre>
 
create table benutzer (
 
  id int auto_increment primary key,
 
  benutzername varchar(50) not null unique,
 
  passwort varchar(255) not null,
 
  rolle enum('admin', 'user') not null
 
);
 
</pre>
 
 
== Benutzer anlegen ==
 
* '''insert into benutzer (benutzername, passwort, rolle) values ('admin', password('radler'), 'admin');'''
 
* '''insert into benutzer (benutzername, passwort, rolle) values ('kit', password('kit'), 'user');'''
 
 
== Speicherort der Skripte ==
 
; Die Skripte werden im Verzeichnis '''/var/www/html''' abgelegt.
 
 
== Dateien ==
 
 
=== db.php ===
 
<pre>
 
<?php
 
session_start();
 
$servername = "localhost";
 
$username = "root";
 
$password = "passwort";
 
$dbname = "serververwaltung";
 
$conn = new mysqli($servername, $username, $password, $dbname);
 
if ($conn->connect_error) {
 
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
 
}
 
?>
 
</pre>
 
Erläuterung: Stellt die Verbindung zur MySQL-Datenbank her.
 
 
=== index.html ===
 
<pre>
 
<!DOCTYPE html>
 
<html>
 
<head>
 
    <title>Serververwaltung</title>
 
</head>
 
<body>
 
    <h2>Willkommen zur Serververwaltung</h2>
 
    <p><a href="liste.php">Serverliste anzeigen</a></p>
 
    <p><a href="login.html">Anmelden</a></p>
 
</body>
 
</html>
 
</pre>
 
Erläuterung: Die Startseite mit Links zur Serverliste und Anmeldung.
 
 
=== login.php ===
 
<pre>
 
<?php
 
include 'db.php';
 
if ($_SERVER["REQUEST_METHOD"] == "POST") {
 
    $benutzername = $_POST["benutzername"];
 
    $passwort = $_POST["passwort"];
 
    $sql = "SELECT * FROM benutzer WHERE benutzername='$benutzername' AND passwort=password('$passwort')";
 
    $result = $conn->query($sql);
 
    if ($result->num_rows == 1) {
 
        $_SESSION["benutzername"] = $benutzername;
 
        header("Location: dashboard.php");
 
        exit;
 
    } else {
 
        echo "Falsche Anmeldedaten.";
 
    }
 
}
 
?>
 
</pre>
 
Erläuterung: Prüft die Anmeldedaten und startet eine Session.
 
 
=== dashboard.php ===
 
<pre>
 
<?php
 
include 'db.php';
 
session_start();
 
if (!isset($_SESSION["benutzername"])) {
 
    header("Location: login.html");
 
    exit;
 
}
 
echo "<h2>Willkommen, " . $_SESSION["benutzername"] . "</h2>";
 
echo "<p><a href='liste.php'>Server anzeigen</a></p>";
 
echo "<p><a href='eintragen.html'>Server eintragen</a></p>";
 
echo "<p><a href='loeschen.php'>Server löschen</a></p>";
 
echo "<p><a href='logout.php'>Abmelden</a></p>";
 
?>
 
</pre>
 
Erläuterung: Das Dashboard mit Links zum Eintragen und Löschen von Servern.
 
 
=== loeschen.php ===
 
<pre>
 
<?php
 
include 'db.php';
 
session_start();
 
if (!isset($_SESSION["benutzername"])) {
 
    header("Location: login.html");
 
    exit;
 
}
 
$result = $conn->query("SELECT * FROM server");
 
if ($result->num_rows > 0) {
 
    echo "<form method='post' action='loeschen_verarbeitung.php'>";
 
    echo "<select name='server_id'>";
 
    while ($row = $result->fetch_assoc()) {
 
        echo "<option value='" . $row["id"] . "'>" . $row["rechnername"] . "</option>";
 
    }
 
    echo "</select>";
 
    echo "<input type='submit' value='Löschen'>";
 
    echo "</form>";
 
} else {
 
    echo "Keine Server zum Löschen.";
 
}
 
?>
 
</pre>
 
Erläuterung: Stellt eine Auswahl für das Löschen von Servern bereit.
 
 
=== loeschen_verarbeitung.php ===
 
<pre>
 
<?php
 
include 'db.php';
 
session_start();
 
if (!isset($_SESSION["benutzername"])) {
 
    header("Location: login.html");
 
    exit;
 
}
 
if ($_SERVER["REQUEST_METHOD"] == "POST") {
 
    $server_id = $_POST["server_id"];
 
    $sql = "DELETE FROM server WHERE id=$server_id";
 
    if ($conn->query($sql) === TRUE) {
 
        header("Location: liste.php");
 
        exit;
 
    } else {
 
        echo "Fehler: " . $conn->error;
 
    }
 
}
 
?>
 
</pre>
 
Erläuterung: Löscht einen ausgewählten Server aus der Datenbank.
 
 
 
 
== TLS-Absicherung ==
 
Es wird empfohlen, HTTPS zu aktivieren, um die Verbindung abzusichern. Dies kann mit Let's Encrypt oder einem eigenen SSL-Zertifikat erfolgen.
 
 
== Fazit ==
 
Mit diesen Verbesserungen ist die Serververwaltung sicherer und funktionaler. Administratoren können nun Server über eine Checkbox auswählen und löschen, während Eingaben validiert werden, um Missbrauch zu verhindern.
 

Aktuelle Version vom 25. März 2025, 16:41 Uhr