Allgemeines
Datenbankzugriff für die Gäste eines Gästebuchs realisieren.
Außer der Datenbank benötigen wir eine Klasse für den Datenbankzugriff (DBCon). Diese Klasse legen wir in unserem Projekt bzw. in der Bibliotheksdatei (lib.php) ab. Sie stellt die benötigten Eigenschaften und Verhaltensweisen für unser Datenverbindungsobjekt zur Verfügung.
Voraussetzung für die Implementierung des Gästebuchs ist der Import der dazugehörigen Datenbank:
→ freundedb_Struktur.sql
→ freundedb_Daten.sql
Serverseitige Lösung:
Die Software und Datenbank liegen extern. Der Webserver (Apache) und das Datenbanksystem MySQL werden beispielsweise über das Softwarepaket XAMPP oder ggf. über das Startmenü der Digitalen Tasche (Informatikstick) gesteuert. Die Datenbank und Testdaten müssen zuvor importiert werden.
Lokale Lösung:
Die Software und Datenbank liegen lokal auf dem Endgerät. Eine lokale Lösung macht dann Sinn, wenn die Datenbank ausschließlich von dem Benutzer der Anwendung und des Endgerätes selbst genutzt wird. Für das Gästebuch macht diese Lösung wenig Sinn, da viele Benutzer zugreifen sollen. Eine lokale Kontaktverwaltung, Notizbuch-App oder eine Shoppinglist-App sind sinnvolle Beispiele dafür. Das Datenbanksystem SQLite ist Bestandteil der Betriebssysteme mobiler Endgeräte und bietet dazu die technischen Lösungsansätze (Mobile Apps).
Quellcodeanalyse: Algorithmik, Code Reading
Was passiert im Quellcode. Wir analysieren den Quellcode zeilenweise...
dblogin1.php:
Der Benutzer gibt den Benutzername und sein Passwort ein. Wenn der Benutzer auf die Schaltfläche → Anmelden klickt werden die folgenden Schritte ausgeführt:
- Die Sitzung wird gestartet
- Aus dem eingegeben Passwort (pPasswort) und dem geheimen Wort (pTrick) wird, wie zuvor auch, ein Hashwert erzeugt.
- Alle Werte (pName, pPasswort und pTrick) werden an entsprechende Sessionvariable übergeben.
- Zum testen lassen wir uns den erzeugten Hashwert auf der Benutzeroberfläche ausgeben.
dblogin2.php:
Mit einem Klick auf die Schaltfläche → Weiter werden dann die folgenden Schritte ausgeführt.
- Die Sitzung wird fortgeführt
- Die in den Sitzungsvariablen gespeicherten Werte werden an lokale Variablen übergeben.
- Die Datebankverbindung wir hergestellt. Dazu wird ein Datenverbindungsobjekt erzeugt und die Verbindung aufgebaut.
- Das Datenbankverbindungsobjekt wird einer Sessionvariablen übergeben.
- Die SQL-Auswahl-Abfrage wird erzeugt und an eine lokale Variable übergeben.
- Die Abfrage wird mittels des Datenbankverbindungsobjektes auf der Datenbank ausgeführt, der Rückgabewert wird in die lokale Variable $ergebnis übernommen. Das Ergebnis beinhaltet nun die Zugangsdaten aller Benutzer (ist eine Liste).
- Schleife/Wiederholung: Schrittweise (zeilenweise) werden die Zugangsdaten dem Ergebnis entnommen
- Werte der Zeile (Datensatz) werden in lokale Variablen/Attribute übergeben
- Das Passwort wird verifiziert, der Rückgabewert der Verifizierung wird in eine lokale Variable übernommen (0 oder 1)
- Fallunterscheidung:
1.Fall:
Wenn die Verifizierung erfolgreich und der Benutzername stimmig sind (Wert = 1)
- Wird die Meldung "Passwort verifiziert!" erzeugt
- Die Werte an die Sessionvariablen übergeben
- Eine positive Ausgabe erzeugt und der Wiederholvorgang wird abgebrochen
- Fallunterscheidung:
2.Fall:
Ansonsten, also wenn keine Übereinstimmung zustande kommt (Wert = 0)
- Wird die Meldung "Passwort konnte nicht verifiziert werden!" erzeugt.
- Ein Text mit der erzeugten Meldung wird auf der Benutzeroberfläche ausgeben.
dblogin3.php:
Mit einem Klick auf die Schaltfläche → Abmelden werden dann die folgenden Schritte ausgeführt.
- Die Sitzung wird gestartet bzw. fortgeführt.
- Die in den Sitzungsvariablen gespeicherten Werte werden an lokale Variablen übergeben.
- Daten der Sitzung werden gelöscht.
- Die Sitzung wird gelöscht.
- Ausgabe wird erzeugt.
Testfälle
Aufgaben
Beantworten Sie die Fragen und dokumentieren Sie die Antworten.
- Wie lauten die Quellcode-Anweisungen, um eine Gästebuch-Sitzung (Session) zu starten bzw. fortzuführen?
- Wie lautet die Quellcode-Anweisung, um Werte an entsprechende Sitzungsvariablen, zu übergeben?
- Wie lautet die Gegenoperation im Quellcode, um einen in einer Sitzungsvariablen gespeicherten Wert an eine lokale Variablen, zu übergeben
- Wie lauten die Quellcode-Anweisungen, um ein neues Datenbankverbindungsobjekt und den Aufbau der Datenbankverbindung zu erzeugen?
- Wie lautet die Quellcode-Anweisungen, um das eingegebene Passwort, zu verifizieren?
- Formulieren Sie in SQL die Auswahlabfrage zur Ermittlung der Zugangsdaten aller Benutzer des Gästebuchs!
- Wie lautet die Meldung für den Fall, dass bei der Ermittlung der Zugangsdaten aller Benutzer des Gästebuchs keine Daten ermittelt werden konnten
- Wie lauten die Quellcode-Anweisungen, um die Daten der Sitzung abschließend zu löschen?
Zusatzaufgabe
Studieren Sie die Datenbankarchitektur (freundedb). Wie müssen die SQL-Abfragen lauten, um:
- Posts (Beiträge) anzuzeigen?
- Post (Beitrag) löschen?
- Post (Beitrag) ändern?
- Post (Beitrag) einfügen?