Intranetsoftware für jedermann – Teil 3

Veröffentlicht von Lukas am

Kommen wir zu Teil 3 der Reihe Intranetsoftware für jedermann.
Und nun wollen wir auch voll durchstarten. Wir erstellen eine gute Basis, auf der wir später das komplette System aufbauen. Das System bauen wir nach dem Bottom-Up-Prinzip auf. Wir beginnen also auf der untersten Ebene.

Datenbank

Die Datenbank ist das unterste – und wichtigste – Element im ganzen System. Ohne diese wird später absolut gar nichts funktionieren. Sie enthält alle Informationen, mit denen das System arbeiten kann.

Zu Beginn genügt es, wenn wir Benutzerdaten speichern, so dass wir uns anmelden können. Wer allerdings bereits eine gute Struktur haben möchte, stellt sich die Fragen, was alles gespeichert werden muss.

Tipp: Id, Benutzername, Passwort, Vorname, Nachname, Geburtsdatum, …

Man erstellt also nun innerhalb der Datenbank eine Tabelle und nennt diese beispielsweise benutzer oder users.

Mithilfe dieser Daten können wir dann einen ersten Versuch der Authentifizierung starten. Sollte das klappen, ist bereits ein Schritt geschafft.

Datenbankzugriffsschicht

Die Datenbankzugriffsschicht (oder: Datenbankmanager) greift später als einziges Modul auf die Daten zu. Dadurch verhindern wir, dass keine Prüfung erfolgen kann.

Somit muss diese Schicht sämtliche Operationen implementieren: Lesen, Schreiben, Löschen, Ändern.

Jede Operation wird in einer eigenen Methode realisiert, welche als Parameter die Tabelle, die Felder und die Werte enthält. Nachdem diese Werte übergeben wurden kann man prüfen, ob diese Variablen Anweisungen wie select o. ä. enthalten. Wenn ja, sortieren wir diese Anfrage an die Datenbank aus und werfen eine Ausnahme, da wir vermutlich einen Angriff auf die Datenbank verhindert haben.

Da diese Prüfung in jeder der Methoden erfolgen muss, kann man diese Prüfung ebenfalls in eine eigene Methode auslagern. Hierbei muss man natürlich beachten, welche Methoden man public und welche private macht.

Nun müssen die Methoden anhand der übergebenen Parametern die SQL-Anweisung zusammen setzen, an die Datenbank schicken und das Ergebnis zurückliefern.

Loginmanager

Der Loginmanager ist für die Authentifizierung der Benutzer zuständig. Er nimmt die Daten, welche ein Benutzer auf der Loginseite eingibt an und verarbeitet diese weiter. Schlussendlich übergibt er sie dem Datenbankmanager, welcher die Informationen aus der Datenbank liest. Der Loginmanager prüft die Daten und bei positiver Prüfung erstellt er eine neue Session mit allen benötigten Informationen über den Benutzer.

Vertiefe dein Wissen:  Das richtige Werkzeug für PHP-Einsteiger

Neben der Authentifizierung muss der Loginmanager auch den Logout vollziehen können. Er zerstört eine Session und beendet damit die Sitzung im Intranet.

Der Loginmanager enthält daher mindestens zwei Methoden, damit er diese Aufgaben bewältigen kann.

Konfigurationsdatei

Um auch nach der Inbetriebnahme das Intranet in seiner Arbeitsweise beeinflussen zu können, erstellen wir eine zentrale Konfigurationsdatei.

Sollte später eine andere Person das Intranet betreiben wollen, so muss er sich nicht mit dem Quellcode auseinandersetzen. Man kann Werte ändern und dadurch beispielsweise einzelne Module aktivieren oder deaktivieren. Auch die Informationen zum Datenbankzugang sind dort gespeichert, so dass man diese leicht ändern kann, sollte sich die Datenbank eines Tages ändern.

Weiterhin könnte man hier festlegen, welche Benutzernamen später nicht registriert werden dürfen oder auch welche Benutzerränge es gibt.

Die Konfigurationsdatei kommt in einen eigenen Ordner und wird in jedes Modul geladen, sofern man Werte aus der Datei benötigt. In diesem Fall wird die Datei per require() geladen, da ohne diese Datei das System nicht arbeiten darf. Eine Prüfung von Benutzernamen oder Rängen könnte nämlich nicht mehr durchgeführt werden.

Oberfläche

Die Oberfläche ist die Schnittstelle zwischen Benutzer und System. Sie muss also die Informationen, die das System verarbeitet, für den Benutzer darstellen können.

Um sich später eine Menge Arbeit zu sparen, steht auf der Seite nur das Nötigste. Die Seite enthält einen Titel, ein Menü und ein iFrame. Innerhalb des iFrames spielen sich alle Aktionen mit dem System ab. Nach dem Login muss sich die Seite natürlich komplett aktualisieren, was nur mithilfe von JavaScript möglich ist. Sonst würde sich nur das iFrame neu laden.

Das Menü enthält jedoch Elemente, die nur angezeigt werden, wenn der Benutzer angemeldet ist. Weiterhin möchte man eventuell auf der Seite den Benutzernamen des aktuell angemeldeten Benutzers anzeigen.

Erscheinungsbild

Das Erscheinungsbild der Oberfläche wird durch eine CSS-Datei beeinflusst. Dadurch lassen sich Farben, Größen und vieles andere verändern.

Eine zentrale CSS-Datei hilft, dass später alle Seiten gleich aussehen und wir bei Bedarf schnell die Optik verändern können. Haben wir verschiedene CSS-Dateien, so können wir diese auch zu verschiedenen Jahreszeiten wechseln.

Die CSS-Datei legen wir hierfür in den gleichen Ordner wie die Dateien für die Oberfläche. Damit fällt das Einbinden leichter.

Vertiefe dein Wissen:  Chatbots und Conversational User Interfaces

Schlusswort

Nun ist deine Kreativität gefragt. Viele Gedankenanstöße sind hier aufgeführt und wenn man gut programmieren kann oder bereit ist sich damit zu beschäftigen, sollte die Erstellung kein Problem darstellen.

Wer an dieser Stelle enttäuscht ist, dass ich kein fertiges Produkt liefere, sollte sich die Frage stellen, ob er wirklich programmieren möchte. Wer lernen möchte und sich gute Kenntnisse aneignen möchte, muss einen steinigen Weg gehen und selbst aktiv werden.

Übrigens: Bei der Speicherung von Daten in der Datenbank sollte man auf  Verschlüsselung zurückgreifen. Daten im Klartext können sehr leicht genutzt werden, sofern die Datenbank geknackt wurde. PHP stellt hierfür beispielsweise eine gute Funktion bereit, die dafür genutzt werden kann. Daher sollte man sich mit der Funktion password_hash() beschäftigen. Zur Not kann das natürlich auch im Nachhinein noch erfolgen.

Ich hoffe der eine oder andere Leser kann durch die Beiträge neue Ideen umsetzen oder gar auf neue Ideen kommen. Die Ausarbeitung des Systems ist nicht schwer, wenn man die Grundidee verstanden hat. Man lagert einzelne Module in die jeweiligen Ordner aus und spezialisiert diese sozusagen auf ihre Aufgaben. Später lassen sich einzelne Module dadurch besser warten, indem man nur den Code innerhalb der Datei ändert. Es ist lediglich wichtig, dass die Module dieselben Schnittstellen zur Verfügung stellen. Wie das Ganze realisiert wird, ist völlig egal.

Wer nun kreativ ist, der kann einen Kalendermanager, einen Manager für die Inhalte etc. umsetzen.
Dadurch erhält man ein funktionierendes System, das die Grundfunktionen erfüllt.

Viel Spaß und Erfolg beim Programmieren.


Avatar-Foto

Lukas

Als Softwareentwickler und Projektmanager mit einem Master of Science in Wirtschaftsinformatik weiß ich genau, wie die Dinge in der IT zu funktionieren haben. In meinem Blog kombiniere ich seit mehr als 7 Jahren mein Wissen mit meiner Neugier im Bereich Smart Home. Transparenz und Praxisnähe stehen für mich dabei im Vordergrund. Mein Fokus liegt vor allem auf der Software ioBroker, da ich mein eigenes Smart Home damit betreibe. Meine Beiträge basieren somit nicht nur auf theoretischem Know-how, sondern auch auf praktischen Erfahrungen aus meinem vernetzten Zuhause. Mein persönliches Ziel ist es, dir Einblicke in das Smart Home zu geben, die dich wirklich voranbringen.

0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert