Dokumentation Web – Interface Komplexe Softwaresysteme Lars Weger, Bastian Kirchner Fachbereich Informatik Universität Rostock Eingereicht am 02.9.2003 Inhaltsverzeichnis 1. Allgemeines 1.1. Einführung, Vorbereitung, Anforderungen, Kontext 1.2. Umsetzung 1.2.1. Hard- und Software 1.2.2. Applikation 2. Nutzerdokumentation 2.1. Anmeldung 2.2. Nutzerdatenbank 2.3. Modul Abkürzungsdatenbank 2.4. Modul Personendatenbank 2.5. Modul Glossardatenbank 3. Entwicklerdokumentation 3.1. Sicherheit 3.2. Modulspezifikationen 3.2.1. Anmeldung 3.2.2. Abkürzungsdatenbank 3.2.3. Glossardatenbank 3.2.4. Personendatenbank 3.3. Datenbankspezifikation 3.4. Layout 3.5. Dateiliste 2 1. Allgemeines 1.1. Einführung, Vorbereitung und Anforderungen Das Projekt WWR (Wissenswerkstatt Rechensysteme) hat als Zielstellung die Erstellung von ca. 150 multimedialen, multidimensionalen Lehr- und Lernmodulen aus dem Bereich der technischen Informatik. Bei dem Vorhaben handelt es sich um ein Verbundprojekt des BMBF (Bundesministerium für Bildung und Forschung), an dem 12 deutsche Hochschulen beteiligt sind. Die zu erstellenden Module sollen sich dabei in den drei Dimensionen • Intensität, • Ausgabemedium und • Zielgruppe skalieren lassen. Hinsichtlich der Intensität sind eine einführende (Basis-), eine erweiterte sowie eine vertiefende (Experten-) Version vorgesehen. Als Ausgabemedium werden eine OnlineVariante auf Grundlage von XHTML für Selbstlerner, eine druckfähige Fassung (Skript) im PDF-Format sowie Folien für die Präsenzlehre im MS-Powerpoint-Format abgedeckt. Die Zielgruppe umfasst Lernende und Lehrende mit ihren spezifischen Anforderungen. Für Selbstlerner-Szenarien existiert eine flexible, austauschbare didaktische Struktur, um den Lehrstoff optimal an dieses Einsatzgebiet anzupassen. Zur Umsetzung der oben genannten Aspekte wurde eine auf XML basierende Sprache entwickelt, die es erlaubt, alle Dimensionen eines Moduls innerhalb einer einzelnen Beschreibung seiner selbst zu formulieren. Die Realisierung der konkreten Ausprägung eines Moduls mit den gesetzten Parametern Intensität, Ausgabemedium und Zielgruppe erfolgt halbautomatisch überwiegend unter Verwendung der XSL (Extensible Stylesheet Language), einer Sprache zur Umwandlung von XML - Formaten in andere textbasierte Ausgabeformate, z.B. HTML. Im Zusammenhang mit der Umsetzung der Ausgabe der WWR-Lehr-/Lernmodule werden unterschiedliche Datenbanken benötigt. Konkret sind dies eine Personen-, eine Abkürzungsund eine Glossar-Datenbank. Diese dienen dazu, die korrespondierenden Verzeichnisse 3 (Personen-, Abkürzungs- und Glossarverzeichnis) in der Modulausgabe automatisch zu generieren. Aufgrund der großen Anzahl der Modulersteller sollen durch die zentrale Datenhaltung Redundanzen vermieden sowie durch Wiederverwendung bereits vorhandener Einträge die Umsetzung der Module effizienter gestaltet werden. Die Verwaltung der gehaltenen Daten soll auf einfachem Wege über einen Web Browser möglich sein. Im Rahmen des KSWS-Praktikums waren zu diesem Zweck folgende Teilaufgaben zu lösen: 1. Realisierung eines Datenbankentwurfs für die genannten Datenbanken, 2. Konzipierung und Realisierung einer einfach zu bedienenden Benutzerschnittstelle auf Grundlage von HTML-Formularen zur Datenerfassung, 3. Konzipierung und Implementierung der web-server-seitigen Software-Komponenten zur Datenbankanbindung sowie zur Verwaltung der Datenbestände. Für die Datenverwaltung sind im Einzelnen folgende Funktionen bereitzustellen: • Anzeigen von Datensätzen, • Einfügen neuer Datensätze, • Ändern von Datensätzen, • Löschen von Datensätzen. Um eine gewisse Grundsicherheit des Systems zu gewährleisten und beabsichtigte sowie unbeabsichtigte Manipulationen einzuschränken, sind eine Nutzerauthentifikation und ein Session Management zu implementieren. Des Weiteren soll eine einfache Rechteverwaltung in der Weise umgesetzt werden, dass authentifizierte Nutzer lediglich ihre eigenen Daten ändern oder löschen können. Für die Durchführung der Aufgabe soll die folgende Software verwendet werden: • Apache Web Server, • MySQL als Datenbank-Server, • PHP als Apache-Modul oder per CGI eingebunden zur Datenbankanbindung, zur dynamischen Generierung der Seiten der Nutzerschnittstelle sowie zur Umsetzung der weiteren Programmlogik. 4 1.2. Umsetzung 1.2.1. Hard- und Software Im Rahmen des KSWS–Praktikums wurde ein Webinterface für eine Abkürzungs-, Glossarund Personendatenbank als Client–Server–Applikation entwickelt. Als Webserver kam ein Apache Webserver Version 2.0.46 mit PHP Version 4.3.2 und MYSQL Version 3.23.38 zum Einsatz. Andere Versionen dieser Software konnten im Rahmen des Praktikums nicht getestet werden. Es wurden HTML, Java Script sowie CSS verwendet. Zu Entwicklungs- und Testzwecken wurde der Webserver auf folgenden Umgebungen eingesetzt: • Intel Pentium 4, 1.8 GHz, 640 MB RAM, Windows XP Home Edition • Intel Pentium 4, 2.5 GHz, 512 MB RAM , Windows XP Professional Edition • Intel Pentium 3, 500 MHz, 256 MB RAM, Windows 2000 • Intel Pentium 4, 2 GHz, 1 GB RAM, Windows 2000 • AMD Athlon, 1.2 GHz, 256 MB RAM, Windows 2000 Als User–Frontend wurden eingesetzt: • Microsoft Internet Explorer Version 5 • Microsoft Internet Explorer Version 6 • Netscape Communicator 7 • Mozilla 1.4 1.2.2. Applikation Das Web-Interface bietet einen Datenbankzugriff, der auf Einzel-User-Rechten basiert. Für Standard-User sind alle Datenbanken mit Ausnahme der Datenbank der Webinterfacenutzer sichtbar. Der Administrator erhält zusätzlich Vollzugriff auf die Nutzerdatenbank. Schreib- und Leserechte werden vom Administrator vergeben. Es gibt genau einen Administrator. Er besitzt den Benutzernamen „admin“. Jede Veränderung der Datenbank durch einen Benutzer wird in Logdateien protokolliert, anhand derer jede Aktion eindeutig nachvollzogen werden kann. Neben der Protokollierung nach Datum und Uhrzeit erfolgt auch eine separate Aufzeichnung der Aktionen jedes Nutzers. Eine Auflistung und Beschreibung der Module des Web-Interface befindet sich in Teil 3 dieser Dokumentation. 5 2. Nutzerdokumentation 2.1. Startscreen und Einloggen Nach Aufruf des Webinterfaces erscheint der Anmeldebildschirm (Bild 1). Bild 1: Anmeldebildschirm Nachdem Benutzername und Passwort korrekt eingegeben und der Button „Anmelden“ betätigt wurde, erscheint der Willkommensbildschirm (Bild 2). Bei falschem Benutzernamen / Passwort werden die Eingabefelder gelöscht und die Eingabe kann wiederholt werden. Die Anzahl der Versuche wurde nicht eingeschränkt. Bild 2: Willkommenbildschirm Standartbenutzer Der Benutzer wird über seine Zugriffsrechte auf die Datenbanken informiert. Über die linke Navigationsleiste kann nun eine Datenbank angewählt werden. Je nach Rechten kann ein Eintrag hinzugefügt, nach einem Eintrag gesucht oder der Inhalt angezeigt werden. Dies wird ausführlich in den folgenden Abschnitten beschrieben. 6 2.2. Nutzerdatenbank (nur für den Administrator) Dem Administrator wird nach dem Einloggen das Interface der Nutzerdatenbank angezeigt (Bild 3). Von hier aus kann er Nutzer anlegen, löschen oder deren Rechte verändern. Der Startbildschirm des Nutzerdatenbank-Interfaces zeigt neben der Gesamtanzahl die Rechte der in der Datenbank gespeicherten Nutzer an. Es werden höchstens fünf Einträge pro Seite angezeigt. Weiterhin sind jedem Nutzer die Symbole Pfeilsymbole und zugeordnet. Über die kann bei Bedarf beliebig vor und zurück geblättert werden. Bild 3: Willkommensbildschirm Administrator Neuen Nutzer anlegen Mittels des Symbols kann ein neuer Nutzer angelegt werden. Es erscheint ein entsprechender Dialog, in welchem Nutzername, Passwort sowie die Rechte für jede einzelne Datenbank einzugeben sind. Nutzer entfernen Über das ihm zugehörige Symbol wird der entsprechende Nutzer gelöscht. Nutzerrechte verändern Mit Hilfe des Symbols können die Rechte eines Nutzers sowie dessen Name verändert werden. Es wird ein entsprechender Dialog angezeigt. 7 2.3. Abkürzungsdatenbank Mittels der linken Navigationsleiste kann auf die Abkürzungsdatenbank zugegriffen werden. Abhängig von den durch den Administrator vergebenen Rechten ist es möglich, den Inhalt der Abkürzungsdatenbank anzeigen zu lassen (Bild 4), nach einer bestimmten Abkürzung zu suchen (Bild 5) und einen neuen Begriff sowie Erklärungen in die Abkürzungsdatenbank einzutragen. Bild 4: Abkürzungsdatenbank anzeigen Falls der Benutzer Schreibzugriff auf die Abkürzungsdatenbank besitzt, so werden ihm neben den eingetragenen Begriffen und deren Bedeutungen zusätzlich jeweils eine Checkbox und die Symbole bearbeitet ( , sowie angezeigt. Über sie kann das jeweilige Element gelöscht ( ), ) oder ein neues hinzugefügt werden ( ). Mittels der jeweiligen Checkboxen können ein oder mehrere, mit dem Button „Alle Einträge Markieren“ alle Einträge markiert werden. Der Button „Keine Einträge Markieren“ hebt die Markierung aller Einträge auf. Alle markierten Einträge können mittels des Buttons „Ausgewählte Löschen“ entfernt werden. Alle Nutzer haben die Möglichkeit, die Anzahl der auf einer Seite angezeigten Einträge über die Combobox zu verändern. Über die Pfeilsymbole zurück geblättert werden. Das Symbol Abkürzungsdatenbank, das Symbol über das obere rechte Symbol kann bei Bedarf beliebig vor und öffnet den Suchdialog für die öffnet ggf. das Ergebnis einer vorherigen Suche und kann, falls der Nutzer über Schreibrechte verfügt, eine neue Abkürzung hinzugefügt werden. Je nach verwendetem Browser kann durch Klicken auf das Symbol der Schlüssel der entsprechenden Abkürzungserklärung in die Zwischenablage 8 des Betriebssystems kopiert werden. Wird diese Funktion vom Browser nicht unterstützt, so kann auf den Schlüssel über das zugehörige Textfeld zugegriffen werden. Bild 5: Abkürzungsdatenbank durchsuchen Die Suche in der Abkürzungsdatenbank kann auf Abkürzungen oder Erklärungen beschränkt werden. Über den Button „Anzeigen“ werden alle Datensätze der Datenbank angezeigt (Bild 4). Bild 6: Suchergebnisse der Abkürzungsdatenbank Neben jedem Suchergebnis befindet sich das Symbol . Darüber gelangt man zu dem entsprechenden Eintrag der Abkürzungsdatenbank (Bild 6). Das Symbol öffnet den Suchdialog erneut und über das Symbol kann, falls der Nutzer über Schreibrechte verfügt, eine neue Abkürzung hinzugefügt werden. Bild 7: Begriff Hinzufügen 9 2.4. Personendatenbank Mittels der linken Navigationsleiste kann auf die Personendatenbank zugegriffen werden. Abhängig von den durch den Administrator vergebenen Rechten ist es möglich, den Inhalt der Personendatenbank anzeigen zu lassen (Bild 8), nach einer bestimmten zu suchen und eine Person einzutragen. Falls der Benutzer Schreibzugriff auf die Personendatenbank besitzt, so werden ihm neben den Personeneinträgen zusätzlich jeweils eine Checkbox und die Symbole angezeigt. Über sie kann die jeweilige Person gelöscht ( ) oder bearbeitet ( und ) werden. Mittels der jeweiligen Checkboxen können ein oder mehrere, mit dem Button „Alle Einträge Markieren“ alle Einträge markiert werden. Der Button „Keine Einträge Markieren“ hebt die Markierung aller Einträge auf. Alle markierten Einträge können mittels des Buttons „Ausgewählte Löschen“ entfernt werden. Bild 8: Personendatenbank anzeigen Alle Nutzer haben die Möglichkeit, die Anzahl der auf einer Seite angezeigten Einträge über die Combobox zu verändern. Über die Pfeilsymbole zurück geblättert werden. Das Symbol das Symbol kann bei Bedarf beliebig vor und öffnet den Suchdialog für die Personendatenbank, öffnet ggf. das Ergebnis einer vorherigen Suche und über das obere rechte 10 Symbol kann, falls der Nutzer über Schreibrechte verfügt, eine neue Person hinzugefügt werden. Je nach verwendetem Browser kann durch Klicken auf das Symbol der Schlüssel der entsprechenden Person in die Zwischenablage des Betriebssystems kopiert werden. Wird diese Funktion vom Browser nicht unterstützt, so kann auf den Schlüssel über das zugehörige Textfeld zugegriffen werden. Jeder Person kann ein Bild zugeordnet werden. Dieses muss im GIF - oder JPEG – Format vorliegen und sollte eine Auflösung von 120 mal 80 Pixeln besitzen. Anderenfalls wird das Bild verzerrt dargestellt. Durch einen Klick auf das Bild wird es in einem separaten Browserfenster angezeigt. Bild 9: Person hinzufügen Zu den Personenangaben können jeweils beliebig viele Adressen, Telefonnummern, E-Mailund Internetadressen hinzugefügt werden. 11 Bild 10: Person hinzufügen 12 2.5. Glossardatenbank Die Benutzung der Glossardatenbank ist identisch zu der der Abkürzungsdatenbank. 13 3. Entwicklerdokumentation 3.1. Sicherheit Neben dem in Abschnitt 1 dieser Dokumentation beschriebenen Zugriff auf die Datenbanken sowie der Rechtevergabe durch den Administrator sind weitere Sicherheitsmerkmale implementiert worden. Die Passwörter wurden mit dem MD5-System verschlüsselt. Dabei steht anstelle des Klartextes ein Hash-Wert des Passwortes in der Nutzerdatenbank. Vor jedem Datenbankzugriff werden die Rechte des Benutzers geprüft. Das Cachen von HTMLSeiten im Browser wurde in sicherheitskritischen Bereichen deaktiviert. Die Navigation erfolgt ausschließlich über die im Webinterface bereitgestellten Symbole und Hyperlinks. Temporäre Daten werden nicht in Cookies sondern in PHP-Sessionvariablen gespeichert. Zum Nachverfolgen von Änderungen in einzelnen Datenbanken werden nutzer- und datumsbezogene Logdateien angelegt (siehe Abschnitt 1). 3.2. Modulspezifikation Flussdiagramme des Webinterfaces; Anmeldung, Interface für jede Datenbank 14 3.2.1. Spezifikation Anmeldung Abschicken Login Screen Login korrekt? Nein Ja Welcome Screen Anzeige: Welche Rechte in welchen Datenebanken Falls Nutzer = Admin: Anzeige Nutzerdatenbank "löschen" "hinzufügen" "ändern" Nutzerdatenbank Hinzufügen Screen Ändern Screen "hinzufügen" / "zurück" "hinzufügen" / "zurück" 15 3.2.2. Spezifikation Abkürzungsdatenbank 16 3.2.3. Spezifikation Glossardatenbank Glossardatenbank Hinzufügen Neue Suche Suchen Anzeigen Suchergebnis Screen Suchen Suchen Screen Anzeigen Screen Begriff Ändern Erkl. Hinzufügen Löschen Begriff Hinzufügen Screen Eintragen Eintragen Begriff Ändern Screen Begriff Hinzufügen Eintragen Eintragen Erkl. Ändern Erklärung Ändern Screen Erklärung Hinzufügen Screen 17 3.2.4. Spezifikation Personendatenbank 18 3.3. Datenbankspezifikation Die Datenbank wurde mit MySQL Version 3.23.38 erstellt. Sie trägt den Namen KSWS und enthält folgende Tabellen: Tabellen +----------------+ | Tables_in_ksws | +----------------+ | abk | | abk_erkl | | glo | | glo_erkl | | nutzer | | pers | | pers_adr | | pers_http | | pers_mail | | pers_telefon | +----------------+ Die Feldbezeichner in den Tabellen wurden so gewählt, dass sie zunächst mit der Tabelle beginnen, in der sie sich befinden, gefolgt von einem Unterstrich und weiteren Zeichen die die Bedeutung kurz wiederspiegeln sollen. abk +-------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------+------+-----+---------+----------------+ | abk_id | bigint(20) | | PRI | NULL | auto_increment | | abk_abk | char(30) | | UNI | | | | nutzer_name | char(20) | | | | | +-------------+------------+------+-----+---------+----------------+ abk_id abk_abk nutzer_name Schlüssel zur Identifizierung der Abkürzung, autom. von MySQL vergeben Die Abkürzung als String, Schlüsselattribut, d.h. es darf jede Abkürzung nur einmal in der Datenbank vorkommen Nutzer, der die Abkürzung erstellt hat abk_erkl +--------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------+------+-----+---------+----------------+ | abk_erkl_id | bigint(20) | | PRI | NULL | auto_increment | | abk_id | bigint(20) | | | 0 | | | abk_erkl | char(80) | YES | | NULL | | | nutzer_name | char(20) | | | | | | abk_erkl_key | char(10) | YES | MUL | NULL | | +--------------+------------+------+-----+---------+----------------+ 19 abk_erkl_id abk_id abk_erkl abk_erkl_key nutzer_name Schlüssel zur Identifizierung der Erklärung, autom. von MySQL vergeben Schlüssel der zur Erklärung zugehörigen Abkürzung Erklärungstext an sich Zweitschlüssel textbasierend für einfachere Suche (setzt sich aus der Abkürzung und einer Zahl zusammen) Nutzer, der die Erklärung erstellt hat glo +-------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------+------+-----+---------+----------------+ | glo_id | bigint(20) | | PRI | NULL | auto_increment | | glo_glo | char(30) | | UNI | | | | nutzer_name | char(20) | | | | | +-------------+------------+------+-----+---------+----------------+ glo_id glo_glo nutzer_name Schlüssel zur Identifizierung des Glossareintrags, autom. von MySQL vergeben Glossareintrag an sich, Schlüsselattribut Nutzer, der den Glossareintrag erstellt hat glo_erkl +--------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------+------+-----+---------+----------------+ | glo_erkl_id | bigint(20) | | PRI | NULL | auto_increment | | glo_id | bigint(20) | | | 0 | | | glo_erkl | char(80) | YES | | NULL | | | nutzer_name | char(20) | | | | | | glo_erkl_key | char(10) | YES | MUL | NULL | | +--------------+------------+------+-----+---------+----------------+ glo_erkl_id glo_id glo_erkl glo_erkl_key nutzer_name Schlüssel zur Identifizierung der Bedeutung, autom. von MySQL vergeben Schlüssel des zur Bedeutung zugehörigen Glossareintrags Bedeutung an sich Zweitschlüssel textbasierend für einfachere Suche nach Glossareinträgen Nutzer, der die Bedeutung erstellt hat 20 nutzer +-----------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+----------+------+-----+---------+-------+ | nutzer_name | char(20) | | PRI | | | | nutzer_passwort | char(20) | YES | | NULL | | | abk_read | int(2) | | | 1 | | | abk_write | int(2) | | | 0 | | | pers_read | int(2) | | | 1 | | | pers_write | int(2) | | | 0 | | | glo_read | int(2) | | | 1 | | | glo_write | int(2) | | | 0 | | +-----------------+----------+------+-----+---------+-------+ nutzer_name nutzer_passwort abk_read abk_write pers_read pers_write glo_read glo_write Kennung des Nutzers, Schlüsselattribut md5 Wert des vom Nutzer angegebenen Passwortes Bestimmt Leserechte des Nutzers in der Abkürzungsdatenbank 0-Kein Leserecht; 1-Leserecht Bestimmt Schreibrechte des Nutzers in der Abkürzungsdatenbank 0-Kein Schreibrecht; 1-Einfaches Schreibrecht; 2-Admin Schreibrecht Bestimmt Leserechte des Nutzers in der Personendatenbank 0-Kein Leserecht; 1-Leserecht Bestimmt Schreibrechte des Nutzers in der Personendatenbank 0-Kein Schreibrecht; 1-Einfaches Schreibrecht; 2-Admin Schreibrecht Bestimmt Leserechte des Nutzers in der Glossardatenbank 0-Kein Leserecht; 1-Leserecht Bestimmt Schreibrechte des Nutzers in der Glossardatenbank 0-Kein Schreibrecht; 1-Einfaches Schreibrecht; 2-Admin Schreibrecht pers +-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ | pers_id | bigint(20) | | PRI | NULL | auto_increment | | pers_name | varchar(50) | | | | | | pers_vname | varchar(50) | | | | | | pers_titel | varchar(50) | YES | | NULL | | | pers_geb | date | YES | | NULL | | | pers_llauf | blob | YES | | NULL | | | nutzer_name | varchar(20) | | | | | | pers_key | varchar(10) | YES | MUL | NULL | | +-------------+-------------+------+-----+---------+----------------+ pers_id pers_name pers_vname pers_titel pers_geb pers_llauf nutzer_name pers_key Schlüssel zur Identifizierung der Person, autom. von MySQL vergeben Name der Person Vorname der Person Titel der Person Geburtsdatum der Person Lebenslauf der Person (wird als String in das BLOB hineingeschrieben) Nutzer, der die Person erstellt hat Zweitschlüssel textbasierend für einfachere Suche nach Personen (je 2 Buchstaben aus Vor- und Nachname und eine Zahl) 21 pers_adr +--------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------+------+-----+---------+----------------+ | pers_adr_id | bigint(20) | | PRI | NULL | auto_increment | | pers_id | bigint(20) | | | 0 | | | pers_adr_str | char(50) | YES | | NULL | | | pers_adr_nr | char(10) | YES | | NULL | | | pers_adr_plz | char(10) | YES | | NULL | | | pers_adr_ort | char(50) | YES | | NULL | | | nutzer_name | char(20) | | | | | +--------------+------------+------+-----+---------+----------------+ pers_adr_id pers_id pers_adr_str pers_adr_nr pers_adr_plz pers_adr_ort nutzer_name Schlüssel zur Identifizierung der Adresse, autom. von MySQL vergeben Schlüssel des Person, zu welcher die Adresse gehört Strassenname der Adresse Hausnummer der Adresse Postleitzahl der Adresse Ortsangabe der Adresse Nutzer, der die Adresse erstellt hat pers_telefon +-----------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+------------+------+-----+---------+----------------+ | pers_telefon_id | bigint(20) | | PRI | NULL | auto_increment | | pers_id | bigint(20) | | | 0 | | | pers_telefon | char(50) | YES | | NULL | | | nutzer_name | char(20) | | | | | +-----------------+------------+------+-----+---------+----------------+ pers_telefon_id pers_id pers_telefon nutzer_name Schlüssel zur Identifizierung der Telefonnummer, autom. von MySQL vergeben Schlüssel der Person, zu welcher die Telefonnummer gehört die Telefonnummer an sich Nutzer, der die Telefonnummer erstellt hat pers_mail +--------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------+------+-----+---------+----------------+ | pers_mail_id | bigint(20) | | PRI | NULL | auto_increment | | pers_id | bigint(20) | | | 0 | | | pers_mail | char(50) | YES | | NULL | | | nutzer_name | char(20) | | | | | +--------------+------------+------+-----+---------+----------------+ pers_mail_id pers_id pers_mail nutzer_name Schlüssel zur Identifizierung der E-Mail Adresse, autom. von MySQL vergeben Schlüssel der Person, zu welcher die E-Mail Adresse gehört die E-Mail Adresse an sich Nutzer, der die E-Mail Adresse erstellt hat 22 pers_http +--------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------+------+-----+---------+----------------+ | pers_http_id | bigint(20) | | PRI | NULL | auto_increment | | pers_id | bigint(20) | | | 0 | | | pers_http | char(80) | YES | | NULL | | | nutzer_name | char(20) | | | | | +--------------+------------+------+-----+---------+----------------+ pers_http_id pers_id pers_http nutzer_name Schlüssel zur Identifizierung der Web Adresse, autom. von MySQL vergeben Schlüssel der Person, zu welcher die Web Adresse gehört die Web Adresse an sich Nutzer, der die Web Adresse erstellt hat 23 3.4. Layout Zur Gestaltung Layouts der Bildschirmelemente des Webinterfaces wurde folgende CSS – Datei erstellt: CSS - Style .body { Verwendung Grundlegendes Seitenlayout background-color:#fffff0; font-family: Verdana,Arial,Helvetica,sansserif; font-size:11px; scrollbar-base-color:#fffff0; } .topicbox { margin:10px 15px 10px 0px; padding:5px 5px; font-size:12px; background-color:#f1e2cb; border: 3px #e3cba5 solid; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-weight: bold; } Layout des Rahmens der Überschrift .topictext { margin-left: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-align:justify; Layout des Textes der Überschrift } .text { Sonstiges Textlayout margin:20px 0px; text-align:justify; font-family: Arial, Helvetica, sans-serif; font-size: 11px } .dialogbox { margin:10px 15px 10px 0px; background-color:#dce6f0; bordercolor:#c1cdd9; border-width:3px; border-style:solid; } Layout des Rahmens von Dialogen .beschriftung { margin:10px 15px 10px 0px; font-size:12px; border: #e8e8d4 none; font-weight: bold } Layout des Beschriftungstextes in den Dialogen .options { margin:10px 15px 10px 0px; font-size:12px; border: #e8e8d4 none;font-weight: normal } 24 .info { Layout der oberen Informations- und Optionsleiste margin:10px 15px 10px 0px; font-size:12px; border: #e8e8d4 none; font-weight: normal } .table { Layout der Tabellen der Datensätze font-size:10px; vertical-align:top; border: #000000; border-style: solid; border-top-width: 1px; borderright-width: 1px; border-bottomwidth: 1px; border-left-width: 1px } .tablecell1 { background-color: #FFFFFF; fontfamily: Arial, Helvetica, sansserif; font-size: 10px; fontweight: normal; } Layout der Tabellenzellen der Zeilen mit gerader laufender Nummer .tablecell2 { background-color: #f9f9d9; fontfamily: Arial, Helvetica, sansserif; font-size: 10px; fontweight: normal; } Layout der Tabellenzellen der Zeilen mit ungerader laufender Nummer .table-cell-header-row { background-color: #c1cdd9; fontfamily: Arial, Helvetica, sansserif; font-size: 12px; fontweight: bold; text-indent: 4pt Spaltenüberschriften der Tabellen der Datensätze } 25 3.5. Übersicht der verwendeten Dateien Hauptverzeichnis Dateiname Endung Zweck abksearch htm abkstart php adminwelcome php datetools php doLogin php doLogout php glosearch htm glostart php index html left htm logfile login logout php htm htm main html menu personensearch htm htm personenstart php Server ini welcome php Stellt komplexes Formular zum Suchen in AbkDB zur Verfügung Startscreen zur AbkDB, zeigt Rechte an und Links zum Suchformular, Anzeigenseite, neue DS erfassen Startscreen für den Admin, zeigt die Nutzerdatenbank an Tools zur Formatkonvertierung von Datumseingaben in und aus MySQL Registrieren der Sessionvariablen, Auswerten von Nutzername und Passwort Belegen der Sessionvariablen mit entsprechenden Werten Auslesen der Server.ini, Weiterleitung auf Welcome Screen Löschen der Session, Weiterleitung auf Login Screen Stellt komplexes Formular zum Suchen in GlossarDB zur Verfügung Startscreen zur GlossarDB, zeigt Rechte an und Links zum Suchformular, Anzeigenseite, neue DS erfassen Frameset, vor dem Login, stellt links die left.htm und rechts die login.htm da Wird vor dem Login im linken Frame angezeigt (Dummyseite) Tools zur Ausgabe der Logdateien Formular zum Einloggen Wird von doLogout.php aufgerufen, leitet weiter zu index.html Frameset, nach dem Login, stellt links die Menüleiste und rechts den Welcome-Screen dar Stellt das Navigationsmenü im linken Frame dar Stellt komplexes Formular zum Suchen in PersonenDB zur Verfügung Start-Screen zur PersonenDB, zeigt Rechte an und Links zum Suchformular, Anzeigenseite, neue DS erfassen Textdatei, sichert den zu verwendenden MySql Server, Port und den Datenbanknamen Welcome-Screen, zeigt den angemeldeten Nutzernamen und die Rechte für jede Datenbank ./abkuerzung Dateiname Endung Zweck AddAbkuerzung php AddAbkuerzungen php AenderAbkuerzung php Fügt neue Abk mit Erkl oder nur Erkl hinzu, Testen der Rechte, Weiter nach ShowAbkuerzungen.php Formular zum Hinzufügen von Abk und Erkl oder Erkl zu vorhandener Abk Formular zum Ändern von Abkürzungen 26 AenderErklaerung DeleteAbkuerzung DeleteAbkuerzungErklaerung DeleteAbkuerzungErklaerungen php php php php DoAenderAbkuerzung php DoAenderErklaerung ShowAbkuerzungen php php Suche php Formular zum Ändern von Erklärungen Löscht eine Abkürzung mit allen Erklärungen Löscht eine Erklärung Löscht mehrere Erklärungen (markierte Erklärungen) Ändert eine Abkürzung, legt sie neu an und überträgt Erklärungen des Nutzers auf sie Ändert eine Erklärung Übersicht über die Abkürzungen die GET Variablen "von" und "anz" bestimmen, welche DS angezeigt werden sind sie nicht angegeben werden die entspr. Sessionvariablen genutzt Anzeige der Suchergebnisse in Tabellenform. Die Suche wird in den Sessionvariablen "suchfelda" und "suchtexta" gesichert. Die GET bzw. Session Variablen "von" und "anz" bestimmen welche Datensätze angezeigt werden. ./glossar Dateiname Endung Zweck AddAbkuerzung php AddAbkuerzungen php AenderAbkuerzung AenderErklaerung DeleteAbkuerzung DeleteAbkuerzungErklaerung DeleteAbkuerzungErklaerungen php php php php php DoAenderAbkuerzung php DoAenderErklaerung ShowAbkuerzungen php php Suche php Fügt neuen GloEintrag mit Erkl oder nur Erkl hinzu, Testen der Rechte, Weiter nach ShowAbkuerzungen.php Formular zum Hinzufügen von GloEintrag und Erkl oder Erkl zu vorhandenem GloEintrag Formular zum Ändern von GloEinträgen Formular zum Ändern von Erklärungen Löscht einen GloEintrag mit allen Erklärungen Löscht eine Erklärung Löscht mehrere Erklärungen (markierte Erklärungen) Ändert einen GloEintrag, legt ihn neu an und überträgt Erklärungen des Nutzers auf ihn Ändert eine Erklärung Übersicht über die GloEinträge die GET Variablen "von" und "anz" bestimmen, welche DS angezeigt werden sind sie nicht angegeben werden die entspr. Sessionvariablen genutzt Anzeige der Suchergebnisse in Tabellenform. Die Suche wird in den Sessionvariablen "suchfeldg" und "suchtextg" gesichert. Die GET bzw. Session Variablen "von" und "anz" bestimmen welche Datensätze angezeigt werden. ./nutzer ./nutzer/log_by_date ./nutzer/log_by_user Logfiles nach Datum geordnet Logfiles geordnet nach Nutzerrn Dateiname Endung Zweck AddNutzer DeleteNutzer DoAddNutzer php php php Formular zum Hinzufügen und Ändern von Nutzern Entfernen eines Vorhandenen Nutzers Hinzufügen eines Nutzers zur NutzerDB 27 DoAenderNutzer php Ändern eines Nutzers in der NutzerDB ./personen ./personen/pic Bilder der Personendatenbank Dateiname Endung Zweck AddAdresse php AddAdressen php AddEmail php AddEmails php AddHttp php AddHttps php AddPerson php AddPersonen php AddTelefon php AddTelefone php AenderAdresse AenderHttp AenderMail AenderPerson AenderTelefon DeleteAdresse DeleteHttp DeleteMail DeletePerson DeletePersonen php php php php php php php php php php DeleteTelefon ShowDetails php php ShowPersonen php Suche php Fügt eine Adresse zu einer vorhandenen Person hinzu Formulare zum Erfassen, Ändern und Löschen der Adressen einer Person Fügt eine Email-Adresse zu einer vorhandenen Person hinzu Formulare zum Erfassen, Ändern und Löschen der E-Mail-Adressen einer Person Fügt eine Webadresse zu einer vorhandenen Person hinzu Formulare zum Erfassen, Ändern und Löschen der Webadressen einer Person Fügt eine neue Person in die PersonenDB ein; Kopieren des Bildes auf den Server Formulare zum Erfassen einer neuen oder ändern einer vorhandenen Person Fügt eine Telefonnummer zu einer vorhandenen Person hinzu Formulare zum Erfassen, Ändern und Löschen der Telefonnummern einer Person Ändern einer Adresse der AdressDB Ändern einer WebAdresse der HttpDB Ändern einer Email-Adresse der MailDB Ändern einer Person der PersonenDB Ändern einer Telefonnummer der TelefonDB Löscht eine Adresse aus der AdressDB Löscht eine WebAdresse aus der HttpDB Löscht eine Email-Adresse aus der MailDB Löscht eine Person aus der PersonenDB Löscht mehrer Person aus der PersonenDB (markierte Einträge) Löscht eine Telefonnummer aus der TelefonDB Anzeige der Detaileigenschaften (Bild, Adressen, Telefonnummern...) zu einer Person Links zu Formularen zum Bearbeiten der Details Ubersicht über die Personen, Darstellung der wichtigsten Eigenschaften und des Bildes; die GET Variablen "von" und "anz" bestimmen, welche Datensätze angezeigt werden; sind sie nicht angegeben werden die entspr. Sessionvariablen genutzt Anzeige der Suchergebnisse in Tabellenform. Die Suche wird in den Sessionvariablen "suchfeldp" und "suchtextp" gesichert. Die GET bzw. Session Variablen "von" und "anz" bestimmen welche Datensätze angezeigt werden. ./wwr_css ./wwr_images ksws.css Layout Verwendete Icons 28