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