Files
DBWT/M5/Dossier/M5.md
2023-12-20 17:23:38 +01:00

5.4 KiB

Aufgabe 1

1. Tabelle Benutzer anlegen

CREATE TABLE benutzer (  
	id                BIGINT       AUTO_INCREMENT PRIMARY KEY,  
	name              VARCHAR(200) NOT NULL,  
	email             VARCHAR(100) NOT NULL UNIQUE,  
	passwort          VARCHAR(200) NOT NULL,  
	admin             TINYINT(1)   NOT NULL DEFAULT 0,  
	anzahlfehler      INT          NOT NULL DEFAULT 0,  
	anzahlanmeldungen INT          NOT NULL DEFAULT 0,  
	letzteanmeldung   DATETIME              DEFAULT NULL,  
	letzterfehler     DATETIME              DEFAULT NULL  
);

3. Admin anlegen

INSERT INTO benutzer (name, email, passwort, admin)  
VALUES ('admin', 'admin@emensa.example',  2e2b6533a81bc15430cf65de46dc097eeb5ba70c', 1);

9. Transaktion

mysqli_begin_transaction und mysqli_commit sind Funktionen, die im Zusammenhang mit Transaktionen in MySQL verwendet werden. Eine Transaktion ist eine Sequenz von Datenbankoperationen, die als eine einzige logische Einheit ausgeführt wird. Transaktionen gewährleisten, dass entweder alle Operationen erfolgreich durchgeführt werden oder keine von ihnen, wenn ein Fehler auftritt. Dieses Konzept wird als ACID-Eigenschaften bekannt: Atomarität, Konsistenz, Isolation und Dauerhaftigkeit.

  • mysqli_begin_transaction: Diese Funktion startet eine neue Transaktion. Ab diesem Punkt können mehrere SQL-Operationen ausgeführt werden, die entweder alle gleichzeitig bestätigt (commited) oder abgebrochen (rolled back) werden. Das heißt, keine der Operationen ist für andere Verbindungen sichtbar, bis sie bestätigt werden.
  • mysqli_commit: Diese Funktion wird verwendet, um alle Änderungen, die während der Transaktion gemacht wurden, zu bestätigen und dauerhaft in der Datenbank zu speichern. Nach dem Aufruf dieser Funktion werden alle Änderungen für andere Benutzer und Prozesse sichtbar.

Im Kontext des gegebenen PHP-Codes wird eine Transaktion verwendet, um die Sicherheit und Integrität der Datenbank zu erhöhen, wenn die Informationen eines Benutzers aktualisiert werden. Hier ist ein Überblick über die Abläufe in der Funktion anmelden:

  1. Eine Verbindung zur Datenbank wird hergestellt (connectdb).
  2. Es wird ein SQL-Select-Statement ausgeführt, um den Benutzer mit der spezifizierten E-Mail zu finden.
  3. Wenn kein Passwort für den Benutzer gesetzt ist, wird die Funktion frühzeitig mit einem Rückgabewert von 0 beendet.
  4. Wenn das Passwort des Benutzers übereinstimmt, werden die folgenden Schritte innerhalb einer Transaktion durchgeführt:
    • Die Transaktion wird mit mysqli_begin_transaction begonnen.
    • Ein Update-Statement wird vorbereitet und ausgeführt, um die letzteanmeldung auf die aktuelle Zeit und anzahlfehler auf 0 zu setzen.
    • Ein weiteres Update-Statement wird vorbereitet und ausgeführt, um die anzahlanmeldungen um eins zu erhöhen.
    • Die Transaktion wird mit mysqli_commit abgeschlossen.
    • Sitzungsvariablen werden gesetzt, und die Funktion gibt 1 zurück, was eine erfolgreiche Anmeldung bedeutet.
  5. Wenn das Passwort nicht übereinstimmt, wird ebenfalls eine Transaktion durchgeführt:
    • Die Transaktion wird mit mysqli_begin_transaction begonnen.
    • Ein Update-Statement wird vorbereitet und ausgeführt, um anzahlfehler um eins zu erhöhen und letzterfehler auf die aktuelle Zeit zu setzen.
    • Die Transaktion wird mit mysqli_commit abgeschlossen.
    • Die Funktion gibt 0 zurück, was eine fehlgeschlagene Anmeldung bedeutet.

Durch die Verwendung von Transaktionen wird sichergestellt, dass, wenn z.B. ein Fehler bei einer der Update-Operationen auftritt oder die Verbindung zur Datenbank verloren geht, keine teilweise aktualisierten Daten zurückbleiben, was zu Inkonsistenzen führen könnte. Stattdessen würde die gesamte Transaktion automatisch zurückgerollt oder abgebrochen werden (rollback), sodass die Datenbank in einem konsistenten Zustand bleibt.

Aufgabe 3

  1. Composer installieren
    1. Download der Composer-Installer-EXE: Gehen Sie zur offiziellen Composer-Website getcomposer.org und klicken Sie auf den Button "Download" oder direkt auf "Composer-Setup.exe", um den Installer für Windows herunterzuladen.
    2. Ausführen des Installers: Führen Sie die heruntergeladene "Composer-Setup.exe"-Datei aus. Es wird ein Installationsassistent gestartet.
    3. Installationsoptionen: Folgen Sie den Anweisungen im Installationsassistenten. Der Assistent wird Sie nach dem Pfad zur PHP-Executable fragen. Wenn Sie PHP bereits installiert haben und die Umgebungsvariable PATH gesetzt ist, kann der Assistent PHP automatisch finden. Falls nicht, müssen Sie den Pfad zur PHP-Executable (php.exe) manuell angeben.
    4. Abschluss der Installation: Führen Sie den Installationsprozess durch. Am Ende können Sie die Option aktivieren, um die Befehlszeileneingabe zu ändern und den Pfad zu Composer in die Windows-Umgebungsvariable PATH aufzunehmen. Damit wird Composer global zugänglich gemacht.
    5. Überprüfung der Installation: Öffnen Sie nach Abschluss der Installation die Kommandozeile (CMD) oder PowerShell und geben Sie composer ein, um zu überprüfen, ob Composer erfolgreich installiert wurde. Wenn alles korrekt installiert wurde, sollten Informationen und verfügbare Befehle von Composer angezeigt werden.
  2. Abhängigkeiten laden
    1. Verzeichnis ./emensa wechseln
    2. composer require monolog/monolog ausführen