Home

Web-basierte Datenbank zur Verwaltung administrativer Daten

image

Contents

1. uoisseg ininsuj joajas u jo xoqyoayoAu jo eaJe xa jo A joajas jo jxajAu jo Xoqyoeuo jo P 1x jo juawa a Jo I ud w10 Ibs 19 mysu q Jo Io e3qe y uoa 4S1 g ossepy NI q V assepy JOPUIMIIA g SLTA V uJeg inisu AN Wad uny eBuejeu Mysu uoisses bs 19 insu ga lbs aa yny Abbildung 3 3 Hierarchie der Klassen KAPITEL 3 ENTWICKLUNGSPROZESS 4 Dateien die die Klasse DB_Sq1 f r verschiedene Datenbankserver implementie ren db_mysql inc db odbc inc und andere je nach vorhandenem Server ist eine davon auszuw hlen Die Klasse erledigt den Verbindungsauf und Abbau zum Datenbankserver und wird haupts chlich ber die Methoden query und next record angesprochen Die abgeleitete Version DB Institut beinhaltet neben einigen zus tzlichen Methoden noch die Anmeldedaten f r den Datenbank server DB Institut wird sehr h ufig ben tigt um Abfragen an den SQL Server zu senden Session Authentifizierung und Privilegien CT_Sql und die abgeleitete Institut_CT_Sql bilden aufbauend auf die Datenbankklasse DB_Institut ei ne Vermittlerklasse zu Institut_Session
2. ten Daten und ein Programm zum Bearbeiten der Daten an 85 KAPITEL 4 BENUTZERHANDBUCH Tabelle Eine Tabelle ist eine Ansammlung von gleichartigen Da tens tzen Sie besteht aus Spalten auch Felder genannt deren Name und Bedeutung im Entwurf der Datenbank festgelegt wird und aus Zeilen den Datens tzen Jede einzelne Person wird also in einer eigenen Zeile in der Personen Tabelle gespeichert die Spalten hei en zum Beispiel Nachname Adresse oder Geburtsdatum 86 Anhang A Abk rzungen und Begriffe Die folgenden Begriffserkl rungen beziehen sich haupts chlich auf das Beispiel einer http Session in Kapitel 2 3 2 AR Address Resolution Protocol Ein Protokoll mit dem zu einer bekannten IP Adresse Layer 3 die zu geh rige Hardware Adresse MAC Adresse Layer 2 ermittelt werden kann um den zugeh rigen Rechner direkt ansprechen zu k nnen Client In einer Client Server Beziehung ist der Client je ner Partner der einen Dienst von einem Server ab ruft Es kann sich dabei um unterschiedlichste Ar ten von Diensten handeln etwa eine Datenbank Auskunft oder der Abruf einer html Seite IP Adresse Internet Adresse Mit dem Internet verbundene Rech ner k nnen ber diese zumindest tempor r weltweit eindeutige Adresse angesprochen werden Im Gegen satz zur MAC Adresse ist die IP Adresse struktu riert d h routbar IP Datenpakete k nnen sehr effi zient an ihr Ziel weitergelei
3. Cookie im Pro gramm einfach als globale Variablen angesprochen werden Die Option auto_prepend_file kann verwendet werden um prepend php3 automatisch einzubinden Diese Datei ist Teil von PHPLIB und wird ben tigt um weitere PHPLIB Dateien einzubinden und Konstanten zu definieren Sollte die Verwendung dieser Direktive nicht m glich sein so kann prepend php3 auch per include Befehl in der Datei pagestart php eingebunden werden weil diese in allen Dateien verwendet wird Die Direktive include_path sollte den Pfad zu den PHPLIB Dateien enthal ten Als Alternative kann auch die Konstante PHPLIB libdir verwendet werden die in prepend php3 definiert wird SSL Eine sehr empfehlenswerte Einf hrung in das Thema Verschl sselung bie tet die Dokumentation zu mod_ss1 18 dem Verschl sselungsmodul f r Apache Das Grundprinzip der Verschl sselung ist da bestimmte mathematische Funk tionen nach bisherigem Wissensstand nur unter gro em Aufwand umkehrbar sind Zum Beispiel die Aufspaltung extrem gro er Zahlen in ihre Primfaktoren wenn sie aus genau zwei Primfaktoren bestehen Als besonders sicher und gleichzei tig einfach gilt die Bildung einer Art Ziffernsumme aus der sich der Originaltext nicht ermitteln l t die aber auch f r geringf gig ver nderte Originaltexte be reits m glichst stark abweichende Ergebnisse liefert Damit k nnen Daten bert ragungsfehler und absichtlich eingef gte Manipulationen erkannt werden Mit
4. Eine Datenbank speichert Informationen Aber sie kann nur solche Informa tionen speichern f r die sie auch ausgelegt ist Das bedeutet da zu Beginn der Entwicklung dieser Datenbank ganz genau festgelegt worden ist welche Informa tionen gespeichert werden sollen Wenn sich neue Anforderungen ergeben kann die Datenbank nat rlich erweitert werden sie kann aber immer nur ganz genau die Felder z B Vorname Nachname oder Raumnummer verarbeiten die vorge sehen sind KAPITEL 4 BENUTZERHANDBUCH 68 Diese Datenbank ist tats chlich nicht viel mehr als eine neue Art von Kartei kasten Die Karten werden aber im Computer gespeichert man braucht keinen Kasten mehr und es gibt noch ein paar zus tzliche Vorteile Die Suche nach einer bestimmten Karteikarte kann nach beliebigen Suchbegriffen erfolgen und ist au erdem extrem schnell Die Informationen werden immer nur ein mal ge speichert und dann untereinander in Beziehung gesetzt also zum Beispiel Eine Person geh rt zu einer Abteilung hier gibt es eine Beziehung zwischen Personen und Abteilungen Da es keine Karteikarten auf Papier gibt k nnen diese auch nicht verloren gehen und der Karteikasten wird auch nie zu klein Telefon E Mail Abteilungen Netzwerkadressen Abbildung 4 1 bersicht der Institutsdatenbank Schl ssel Die Abbildung 4 1 zeigt welche Daten in dieser Datenbank berhaupt ge speichert werden Die Linien zeigen an welche Daten mitei
5. Schl sselfeldnamen sollen aus dem Tabellennamen abgeleitet werden k nnen Deshalb ist der Schl sselname derselbe wie der Tabellenname jedoch im Singular und mit nachgestelltem ID Identification sprich Ei Di KAPITEL 3 ENTWICKLUNGSPROZESS 37 In manchen Fallen wird jedoch noch ein Zeichen eingefiigt um die Aussprache zu vereinfachen beispielsweise FaxKlappenID statt FaxKlappeID Fremdschl sselfelder Schl sselfelder die eine Beziehung zu einer anderen Tabelle realisieren z B die RaumID der Personen werden manchmal umbenannt um die Verst ndlichkeit wiederherzustellen Zu Rechnern wird beispielsweise die verantwortliche Person gespeichert Das Fremdschl sselfeld hei t jedoch nicht Rechner PersonID sondern Rechner VerantwortlicherID weil ein Rechner keine Person besitzt sondern einen Verantwortlichen hat Diese Methode muB aber sparsam verwendet werden da gleiche Dinge auch gleich hei en sollen Attribute sollen m glichst ber die gesamte Datenbank hinweg eindeutig be nannt sein Es wurde vermieden allgemeine Namen wie Text Name oder Be schreibung zu verwenden da nicht eindeutige Attribute bei Verwendung mit dem Tabellennamen qualifiziert werden m ssen Deshalb hei t es auch beispielswei se AnschlussTypen AnschlussTyp und nicht AnschlussTypen Name obwohl das eigentlich ein Versto gegen das Datenbankmodell ist Ein AnschlussTyp hat n mlich eigentlich keinen AnschlussTyp als
6. hrte Seite liegt also auf der dritten Hierarchieebene index personen gt publik Jeder Eintrag hat folgende Attribute Die ID zur eindeutigen Kennzeich nung jedes einzelnen Eintrages unabh ngig von der Position in der Hierarchie Querverweise der Seiten untereinander werden mit Hilfe der IDs realisiert da mit sie unabh ngig von der Organisation des Baumes funktionieren Das Feld table gibt einen Tabellennamen an Verkn pfungen werden nur angezeigt wenn der Benutzer Leseberechtigung auf eines der Felder in der angegebenen Tabelle besitzt Das file Attribut benennt die zu ffnende php Datei und label gibt die Beschriftung f r die Links an Das help Attribut enth lt den Namen der Hilfeda tei die zu dieser Seite angezeigt werden soll Farbschema Die farbliche Gestaltung der Seiten die Schriftarten und Abst nde R nder wer den ausschlie lich ber Style Klassen definiert Da alle Styles in einer Datei style css zusammengefa t sind kann die Oberfl che leicht an ein bevorzugtes Farbschema angepa t werden Das vorliegende Layout mit hellgelben Hintergrundfarben und dunkler Schrift wurde gew hlt um m glichst hohen Kontrast zu erzielen au erdem belasten helle KAPITEL 3 ENTWICKLUNGSPROZESS 47 Hintergrundfarben die Augen weniger als dunkle In der Farbenlehre steht helles Gelb fiir Verstand und Wissen sowie fiir Heiterkeit und strahlenden Sonnenschein Die Hintergrundfarbe der Formulare kann zwar ein schlechtes Progra
7. t sich ein Attribut in weitere Teile aufspalten so m ssen grunds tzlich die Einzelteile voneinander getrennt als Einzelattribute ge speichert werden Zu dieser Regel gibt es nur wenige Ausnahmen beispielsweise Adressen Eine Adresse besteht zwar aus Stra enname und Hausnummer wenn es jedoch mit absoluter Sicherheit nicht n tig ist auf die Stra e bzw die Haus nummer alleine zuzugreifen kann ein Feld Adresse definiert werden das Stra e KAPITEL 3 ENTWICKLUNGSPROZESS 33 und Hausnummer gemeinsam enth lt Zweite Normalform Ein Attribut wird zu einer Entity wenn das Attribut mehrere Werte aufnehmen soll beispielsweise Telefonnummern Das Attribut wird aus seiner urspr nglichen Entity herausgenommen und statt dessen als neue eigene Entity mit der Urspr nglichen in Beziehung gesetzt Jede eingetragene Te lefonnummer wird so zu einer eigenen Zeile in der Telefonnummern Tabelle Dritte Normalform Ein Attribut z B Raumnummer wird zu einer Entity wenn noch weitere von diesem Attribut abh ngige Attribute existieren z B die L nge des Raumes Das Attribut samt seiner abh ngigen Attribute wird aus der urspr nglichen Entity z B Personen herausgenommen und mit ihm in Bezie hung gesetzt Diese Regel mu besonders streng befolgt werden damit Inkonsi stenzen vermieden werden Trotzdem gibt es Ausnahmen Bei der Anschrift einer Person ist der Ortsname funktional von der Postleitzahl abh ngig Beide Felder werden
8. tzen Durch Plattformunabh ngigkeit und Verwendung standardisierter Sprachen und Protokolle bleibt der Weg offen die Datenbank in der Zukunft auf einer anderen Serverhardware mit einer anderen Serversoftware weiterverwenden zu k nnen Um die L sung m glichst langlebig zu gestalten wurde an mehreren Stellen versucht etwas mehr als nur den aktuell geforderten Leistungsumfang zu implementieren etwa bei den Attributen Um der neuen Datenbank berhaupt die Chance zu geben von den Benutzern angenommen zu werden sind gro e Anstrengungen unternommen worden um ein einheitliches Layout mit konsistenten Navigationshilfen und einer ansprechen den Farbgebung zu erzielen Bei der Entwicklung der Seiten wurde stets versucht den Blickwinkel des Benutzers einzunehmen um m glichst einfache und klare Abl ufe zu erreichen Verwaltungssoftware mu regelm ig angepa t werden um neuen Anforde rungen gerecht zu werden die h ufig von au en vorgegeben sind Erweiterungen werden durch den modularen Aufbau und den erreichten hohen Grad an Abstrak tion besonders unterst tzt Die Formulare besitzen einen einheitlichen Aufbau deshalb kann beim Entwurf einer neuen Seite ein bestehendes Formular als Vor lage verwendet werden In der aktuellen Form ist die Institutsdatenbank nunmehr auf ein neues stabiles Fundament gestellt worden das ausbauf hig ist Die erste Phase der Anwendung der Applikation wird zeigen welche weiteren Anforderungen noch zu er
9. 124 aT qe 1032 gt 80 ACK Seq 18 un inetd m 1032 gt 80 GET Institut person php PersonID 507 HTTP 1 0 Connection Keep Alive User Agent Mozilla 4 04 de Min85 I Nav Host 10 100 17 10 Accept image gif image x xbitmap image jpeg image pjpeg image png Accept Language de Accept Charset iso 8859 1 utf 8 80 gt 1032 ACK Seg 125 1 244 a 7 7 defer to httpd Abbildung 2 2 Erster Teil Aufbau einer TCP Session KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 24 che Webserver Proze hier Apache bergeben Der inetd dient so als Vermittler zwischen Protokollen Ports und Server Prozessen Im zweiten Teil der Bearbeitung der GET Anfrage wechseln nun die Rol len W hrend der Browser auf eine Antwort wartet wird jetzt der httpd der Web Server zum Client gegentiber dem Datenbankserver Nach Erhalt der GET Anfrage tibergibt der httpd die Bearbeitung der Anfra ge an einen von mehreren wartenden Kind Prozessen Die Kind Prozesse werden bereits beim Start des httpd erstellt fork und bearbeiten mehrere Anfragen bevor sie aus Sicherheitsgr nden beendet und wieder erneuert werden Der Kind Proze bekommt die Daten aus dem GET Paket als Aufrufparameter bergeben und startet seinerseits das integrierte php Modul um die Quelldatei zu interpre tieren Im Bild 2 3 ist oben der Quelltext der angeforderten Datei abgedruckt Das Programm richtet eine Anfrage an die zugrundeliegende
10. BENUTZERHANDBUCH 75 Wenn Sie keine passenden Benutzergruppen definiert haben lesen Sie bitte bei Vergeben von Privilegien 4 5 3 weiter Wenn auch noch keine geeigneten Feldgruppen definiert sind m ssen Sie anhand des n chsten Abschnittes 4 5 2 zuerst welche definieren 4 5 2 Erstellen von Feldgruppen Feldgruppen werden verwendet um mehrere einzelne Felder der Datenbank zu gemeinsamen Einheiten zusammenzufassen um f r alle Felder gemeinsam Privi legien vergeben zu k nnen Die Aufteilung der Datenbank in geeignete Feldgrup pen sollte gut geplant werden damit man die bersicht beh lt Zum Erstellen einer neuen Feldgruppe gehen Sie so vor e Loggen Sie sich mit einem Benutzernamen ein der berechtigt ist Feldgrup pen zu erstellen e ffnen Sie das Feldgruppenformular Einstellungen Privilegien Feld gruppen e Geben Sie in der ersten Zeile des Formulars den Namen der neuen Feld gruppe ein Der Name darf in der Liste noch nicht vorkommen und sollte m glichst kurz und pr gnant beschreiben welche Daten die Feldgruppe ent halten wird Klicken Sie auf Neu anlegen um die Feldgruppe zu erstellen e Sie haben nun eine leere Feldgruppe in der Liste Klappen Sie sie auf um Felder hinzuzuf gen klicken Sie auf den Pfeil links e W hlen Sie in der Auswahlliste der Reihe nach jene Felder aus die Sie hinzuf gen m chten und klicken Sie zum Hinzuf gen auf die entsprechende Schaltfl che Anstatt alle Felder ei
11. Datenbank und gibt das Ergebnis als minimalen html Quelltext aus Im ersten Schritt erzeugt das Programm eine neue Instanz der Datenbank Zugriffs Klasse Diese Klasse ist Bestandteil von PHPLIB und dient dem Zu griff auf MySQL Datenbankserver Die hier verwendete abgeleitete Klasse DB Institut ist identisch mit der originalen Klasse es wurden nur in der abge leiteten Version die Zugangsdaten Server Adresse Benutzername und Pa wort des Datenbankservers berschrieben Im zweiten Schritt wird an die Datenbank klasse eine SQL Abfrage bergeben Die Abfrage holt aus der Personen Tabelle jene Vor und Nachnamen bei denen das Prim rschl sselfeld PersonID berein stimmt Aus Sicherheitsgr nden wird die Variable PersonID durch die Funktion addslashes vorbehandelt damit eventuell vorhandene Sonderzeichen in der SQL Anweisung keine Sch den anrichten k nnen Der Einfachheit halber sei angenommen da Webserver und Datenbankserver auf demselben Computer laufen Dadurch erfolgt die Kommunikation zwischen den Beiden ber Unix Sockets also nicht ber TCP und das Netzwerk und wir beschr nken uns hier auf die wesentlichen Schritte der Kommunikation Die Methode query erkennt nun da noch keine Verbindung zum Daten bankserver besteht und baut diese sofort auf 8 Der mysqld MySQL Daemon der Datenbank Server Proze ist multithreaded aufgebaut es wird also ein neuer Thread erzeugt der die Anfrage entgegennimmt Als Antwort meld
12. Die dritte Beziehung stellt den Fall einer n m Beziehung dar Dabei k nnen von beiden beteiligten Entities beliebig viele an der Beziehung teilnehmen Im Beispiel nehmen also mehrere Personen an einem Projekt teil und eine Person kann auch an mehreren Projekten teilnehmen Die letzte Beziehung schlie lich geh rt nicht zu den Grundtypen Sie wird hier erl utert weil sie im ER Modell der Institutsdatenbank vorkommt Diese Be ziehung stellt dar daB Personen mehrere Tatigkeiten ausfiihren k nnen Zu jeder T tigkeit die eine Person ausf hrt geh rt jedoch genau ein Betreuer eine an dere Person Ein Betreuer kann mehrere T tigkeiten betreuen zu jeder T tigkeit geh rt jedoch genau eine betreute Person Schlie lich geh rt zu jeder T tigkeit genau eine ausf hrende Person und genau ein Betreuer Abteilungen Personen Raeume Personen Taetigkeiten Abbildung 3 2 Grade der Komplexit t von Beziehungen P leitet A P sitztin R Pe nimmt an Pr teil P1 betreut P2 bei T Beziehungen werden durch Austausch von Schliisseln Attribut das Zeilen in der jeweiligen Tabelle eindeutig definiert h ufig einfach nur eine Zeilennummer realisiert Bei 1 1 Beziehung kann in eine der beiden Entities das Schliisselfeld 2Man kann jede Beziehung von jeder der beteiligten Entities aus betrachten die angegebenen Komplexit ten m ssen unabh ngig vom Blickwinkel den realen Gegebenheiten entsprechen KAPITEL
13. Eigenschaft sondern einen Namen So gesehen ist daher die Bezeichnung falsch gew hlt Um aber die Qualifizierung mit dem Tabellennamen zu vermeiden wird dieser praxisnahe Weg gew hlt 3 2 Programmentwicklung Dieser Teil beschreibt den Kern des Projektes n mlich die Entwicklung der Soft ware Im Kapitel 2 1 wurden die Anforderungen aufgelistet die an die Benutzero berfl che gestellt werden Die enthaltenen Anforderungen wie zum Beispiel die berpr fung der Zugriffsrechte oder die Plausibilit tspr fungen f r eingegebe ne Daten w rden ohne Modularisierung und Verkapselung von Basisfunktionen zu einem un berschaubaren und kaum wartbaren Programmcode f hren Deshalb wurde von Beginn an auf objektorientiertes Programmieren und Klassenbildung geachtet und h ufig verwendete Programmteile nach und nach in die Hilfsklas sen aufgenommen Dadurch konnte die Programml nge auf durchschnittlich 150 Zeilen pro Formular reduziert werden Zun chst werden die verwendeten Programme und Bibliotheken vorgestellt auf denen die selbsterstellten Klassen aufbauen Danach folgt der gesamte Ent KAPITEL 3 ENTWICKLUNGSPROZESS 38 wicklungsproze bis zur Installation und Wartung 3 2 1 Werkzeuge Quanta Die Wahl der richtigen Werkzeuge beginnt beim Editor F r die In stitutsdatenbank wurde Quanta verwendet ein Editor f r KDE Selbstverst nd lich existieren viele weitere sehr gute Editoren die folgenden Eigenschaften von Quanta haben sic
14. Hilfe solcher Funktionen kann man zwei wichtige Effekte erzielen e Man kann Nachrichten verschl sseln Der Nachrichtentext wird mit dem Public Key der ffentlich zug nglich ist einem Verschl sselungsalgorith mus unterworfen Der entstandene Ciphertext kann nur von dem Benutzer wieder lesbar gemacht werden der den geheimen Private Key kennt e Man kann verifizieren da eine Nachricht unverf lscht ist und tats chlich von dem Absender stammt der angegeben ist digitale Signatur Dazu Es ist nicht bewiesen da kein effizientes Verfahren zum Aufspalten langer Zahlen existiert der ffentlichkeit ist jedoch kein Verfahren bekannt KAPITEL 3 ENTWICKLUNGSPROZESS 62 wird die Priifsumme der Nachricht das Message Digest mit dem Pri vatschliissel des Absenders verschliisselt Jeder kann die digitale Signa tur mit dem ffentlichen Schl ssel des Absenders lesen aber nur wer den Privatschl ssel kennt kann die digitale Signatur korrekt erstellen so ist die Authentizit t der Nachricht sichergestellt wenn das Schl sselpaar tats chlich dem Absender geh rt Da die Erzeugung von neuen Schl sselpaaren kein Problem darstellt ben tigt man eine vertrauensw rdige Stelle Certificate Authority die glaubhaft best ti gen kann da ein bestimmter ffentlicher Schl ssel tats chlich jener Person geh rt die im Zertifikat angegeben ist Im Zuge der Registrierung eines Schl ssel paares wird die Identit t des Antragsteller
15. Kar teikarte zu finden w ren Vorname Nachname Adresse Erst alle Felder zusammen ergeben den kompletten Daten satz Felder k nnen auch dazu verwendet werden um auf andere Datens tze zu verweisen Zu jeder Person wird das Sitzzimmer gespeichert Das dazu verwendete Feld bein haltet aber nur einen Verweis auf den jeweiligen Zimmer Datensatz und genaue Informationen tiber das Sitzzimmer z B die Ausma e findet man wenn man in der Zimmer Tabelle nachschl gt Wie in der realen Welt auch ist ein Formular zum Einge ben von Daten gedacht Wenn in einem Formular genau ein Datensatz angezeigt wird dann kann man das Formular wie eine Karteikarte sehen Man kann sich auch ein bereits aus gef lltes Formular wieder anzeigen lassen um Informatio nen nachzuschlagen Ein paar Zeichen die nur der echte Benutzer wissen darf um sich auszuweisen Pa w rter m ssen unbedingt geheim gehalten werden und d rfen nicht zu einfach gew hlt sein Beachten Sie auch da alle Aktionen die Sie ausf hren aufgezeichnet werden k nnen Wenn Sie also Ihr Pa wort weitergeben bernehmen Sie die Verantwortung f r alles was damit angerichtet wird Ein Server ist vereinfacht ein Computer der an das Netz werk zumeist das Internet angeschlossen ist und der ein Service anbietet Zum Beispiel ein Web Server Er bie tet Internetseiten zum Herunterladen und Ansehen an Oder der Server der Institutsdatenbank Er bietet die gespeicher
16. aber als Attribute der Person zugeordnet W rde man eine eigene Entity Orte anlegen so br uchte man nur noch die Postleitzahl eingeben und der Orts name w re damit automatisch festgelegt Andererseits w rde sich ein Tippfehler in der Postleitzahl besonders stark auswirken da sofort ein v llig anderer Ortsna me entstehen w rde Au erdem besteht bei manueller Eingabe die M glichkeit den Ortsteil anzugeben Der Vollst ndigkeit halber werden an dieser Stelle noch ein paar Worte zur Komplexit t von Beziehungen angef gt Darunter versteht man die m gliche An zahl von Objekten die auf jeder Seite einer Beziehung teilnehmen k nnen Ab bildung 3 2 zeigt die drei M glichkeiten die f r zweiwertige Beziehungen also zwei beteiligte Entities existieren sowie ein Beispiel f r eine dreiwertige Bezie hung Der erste Fall stellt eine 1 1 Beziehung dar Das bedeutet da auf jeder Seite der Beziehung genau eine Instanz der Entities beteiligt sein kann In diesem Fall also wird eine Abteilung von genau einer Person geleitet und eine Person kann genau eine Abteilung leiten Bei der zweiten Beziehung handelt es sich um eine 1 n Beziehung Dabei wird jeweils eine Entity von der 1 Seite mit vielen Entities auf der n Seite verbun den Die n Seite wird durch die schwarz ausgefiillte Halfte markiert Im Beispiel k nnen in einem Raum mehrere Personen sitzen jede Person sitzt aber in genau einem Raum KAPITEL 3 ENTWICKLUNGSPROZESS 34
17. der Datens tze wird ben tigt um die Schleife zur Ausgabe der einzelnen Formulare zu starten choose_content wird in Endlosformularen verwendet um die Initia lisierung der Steuerelemente zu vereinfachen Die Methode retourniert den ersten Parameter wenn es sich um den leeren Datensatz handelt sonst den zweiten und vermeidet so eine Anh ufung von Operatoren check delete erh lt eine L schabfrage und eine Instanz der Daten bankklasse Die Methode tiberpriift ob Privilegien zum L schen der in der Pro perty table angegebenen Tabelle nicht der in der Abfrage verwendeten Ta belle existieren AnschlieBend wird die Abfrage gegebenenfalls ausgefiihrt Als Ergebnis retourniert die Methode die Information ob die Abfrage ausgefiihrt wur de Boolean Diese Methode hat an Bedeutung verloren da in den meisten For mularen nur noch ein weiches L schen in Form einer UPDATE Anweisung zum Verstecken der Datens tze verwendet wird do insert und do_update haben das gleiche Funktionsprinzip wie check_delete Wenn die ben tigten Privilegien vorhanden sind f hren sie die Abfrage aus und teilen dies dem aufrufenden Programm mit add_buttons und add_deletebutton f gen dem bergebenen Formular Schaltfl chen zum Neu Anlegen und Speichern sowie zum L schen und Wiederherstellen von Datens tzen hinzu show buttons und show_deletebutton zeigen die zuvor hin zugef gten Schaltfl chen nun tats chlich an
18. der Mitarbeit eine Bezahlung resultiert e W hlen Sie das Projekt in der zweiten Auswahlliste und geben Sie ein ab wann die Teilnahme erfolgt und ob daraus tats chlich eine Bezahlung resul tiert e Speichern Sie die Projektteilnahme und berpr fen Sie da keine Fehler meldung angezeigt wird e Wechseln Sie ins Funktionen Formular Hier wird die neue T tigkeit bzw die Teilnahme am Projekt angezeigt KAPITEL 4 BENUTZERHANDBUCH 80 4 5 6 Austritt eines Institutsangeh rigen Wenn Personen das Institut wieder verlassen sollten sie auch aus der Datenbank gel scht werden damit sie nicht mehr auf Telefonlisten o erscheinen Bevor eine Person aber gel scht werden kann m ssen alle Beziehungen gel st werden Die Person darf keine T tigkeiten mehr aus ben sie mu die Verantwortlichkeit f r Abteilungen R ume und Computer an andere Personen bergeben haben und darf keine Projekte mehr leiten Um eine Person zu l schen beachten Sie die folgenden Schritte e Loggen Sie sich mit einem Benutzernamen ein der berechtigt ist Personen zu l schen e ffnen Sie das Suchformular der Personen und geben Sie einen Teil des Namens ein um die richtige Person schneller zu finden Klicken Sie auf Suchen und w hlen Sie den Namen in der angezeigten Liste Sie werden auf die Karteikarte der Person weitergeleitet e Klicken Sie auf die L schen Schaltfl che im Formular ffentliche Daten e Wenn das L schen f
19. der Option g wie global funktioniert nicht mit Konqueror 2 2 1 er ersetzt nur das erste Vorkommen Man mu sich deshalb eine eigene Funktion aufbauen Konqueror 2 2 1 ignoriert auch die Option i wie case Insensitive er sucht bei JavaScript Regul ren Ausdr cken immer case sensitive Durchlaufen von Feldern eines Array Vor einem while list key value each feld darf niemals auf das reset feld vergessen werden Der Fehler zeigt sich durch seltsames Verhalten Es wird nur das erste oder letzte Element bearbeitet So als w re das Feld ab geschnitten worden Wenn eine Variable zumeist eine Formularvariable einen Wert haben m te und trotzdem im Programm keinen Wert hat dann ist sie wahrschein lich nicht globalisiert worden Bei der Institutsdatenbank l uft der gesamte ANHANG C TYPISCHE FEHLERQUELLEN 94 Code im Kontext einer Klassenmethode Deshalb miissen alle globalen Va riablen am besten gleich zu Beginn der Methode durch global variable erst zug nglich gemacht werden e Fragezeichen Doppelpunkt Operatoren die in php Stringverkettungen ein gebaut sind sollen in Klammern eingefa t werden da sonst der Ergebnis string seltsam abgeschnitten wird php 4 04p11 So sollte es gemacht wer den cout Anzahl count Person count 1 en e Leerzeilen in php Dateien vor dem ffnenden oder nach dem schlie enden php Tag k nnen seltsame F
20. die Abfragen der ein zelnen Benutzer ausgerichtet Um die Erstellung der Abfragen zu vereinfachen werden die Verkn pfungsausdr cke JOIN in unterschiedlichen Setups vorde finiert Der Benutzer w hlt also einen Ausschnitt der Datenbank und definiert Kriterien fiir die darin enthaltenen Felder Abfragen werden getrennt nach Benutzern gespeichert Es soll jedoch trotz dem m glich sein Abfragen fiir die Allgemeinheit freizugeben wobei nur der Besitzer einer Abfrage die M glichkeit hat diese zu ver ndern speichert ein Be nutzer die Abfrage eines anderen Benutzers in ver nderter Form ab so wird eine Kopie im Namensraum des neuen Besitzers erstellt das Original bleibt davon un ber hrt Zum Erstellen der Datenabfrage werden die Parameterwerte aus dem Such Formular verwendet Auch beim Abspeichern von Abfragen werden nur die Va riablen und nicht die fertige SQL Abfrage gesichert weil aus der fertigen Abfrage nur unter gro em Aufwand wieder auf die eingestellten Parameterwerte r ckge schlossen werden kann Die Erstellung der SQL Abfragen aus den Variablen wird in einer eigenen Klasse implementiert und in die Datei query_setup inc ausgelagert Aufgabe der Klasse ist die Auswertung der Formular Variablen Erstellung einer internen Repr sentation aus den Variablen sowie Erstellung der SQL Abfrage Im Such Formular w hlt der Benutzer FeldIDs wenn er Datenfelder f r Kri terien oder zum Anzeigen selektiert Aus den nume
21. erleichtern k nnen Sie die Anfangsbuchstaben ein geben wird nicht in allen Programmen unterst tzt Wichtig Dr cken Sie unbedingt die Speichern Schaltfl che bevor Sie das Formular wieder verlassen Wenn Sie das vergessen sind die nderungen verlo ren und Sie werden auch nicht gefragt ob Sie die nderungen speichern m chten 4 2 5 Zugriffsrechte Wenn Sie sich bei der Datenbank anmelden bekommen Sie durch Ihren Benutzer namen Rechte zuerkannt Diese Rechte beziehen sich immer auf bestimmte Felder KAPITEL 4 BENUTZERHANDBUCH 71 in der Datenbank und es gibt fiinf Stufen der Berechtigung die aufeinander auf bauen Wenn Sie zum Beispiel Datens tze neu erstellen diirfen dann diirfen Sie sie auch lesen und ver ndern Jedes Privileg beinhaltet also automatisch alle we niger starken Privilegien keines Ohne Privileg d rfen Sie die Daten nicht einmal lesen Sie diirfen die Daten lesen Sie diirfen bestehende Daten bearbeiten Sie diirfen auch neue Datens tze anlegen l schen Sie diirfen auch bestehende Datens tze l schen oder wiederherstellen Tabelle 4 1 Zugriffsrechte Die Privilegien werden vom Administrator verliehen und gelten jeweils fiir einen Benutzernamen und fiir alle Datens tze der jeweiligen Tabelle unabh ngig davon wer die Datens tze erstellt hat 4 3 Formulare Hier ein paar Hinweise zum Ben tzen der Formulare e Geben Sie die Werte in normaler Schreibweise ein Umlaute
22. geb hren und Kosten f r Support im Umfeld eines Universit tsinstituts eine be sonders wichtige Rolle Au erdem soll eine Bindung an bestimmte Softwareher steller m glichst vermieden werden In den folgenden Abs tzen wird die Auswahl der beteiligten Softwarekomponenten kurz erl utert und begr ndet Betriebssystem Das Betriebssystem als Fundament der gesamten Serverarchi tektur mu vor allem eine stabile sichere und leistungsf hige Plattform bieten Beim Server kann gut auf graphische Benutzeroberfl chen verzichtet werden f r die Clients stehen sie ohnehin zur Verf gung KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 15 Die Auswahl beschr nkt sich aufgrund des vorhandenen Know hows und der vorhandenen Hardware auf Windows sowie UNIX und Linux Die beiden Letzt genannten bieten vergleichbaren Leistungsumfang jedoch ist Linux frei verfiigbar w hrend UNIX Derivate k uflich zu erwerben sind Von den am Markt befindlichen Windows Versionen sind nur die Server Versionen Windows 2000 oder XP geeignet die Desktop Versionen gelten als nicht ausreichend stabil Gegen den Einsatz von Windows als Serverbetriebssy stem sprechen mehrere prinzipbedingte Schw chen die bei Linux nicht zu finden sind W hlt man Windows als Betriebssystem so beschr nkt sich die Auswahl der nativ f r dieses Betriebssystem programmierten Webserver neben einigen klei neren Produkten auf den Internet Information Server IIS von Microsoft Die meisten an
23. geeignete Navigationshilfen mu jederzeit erkennbar sein in welchem Formu lar er sich gerade befindet Auch der Wechsel zwischen Formularen mu dem Benutzer auf einfache Weise erm glicht werden In Anbetracht der vielen Ver kn pfungsbeziehungen der Daten untereinander sind besonders effiziente Wege zu finden um die Beziehungen anschaulich und bersichtlich darzustellen Optische Gestaltung Selbstverst ndlich mu die Software ein ansprechendes u eres besitzen ohne jedoch den Benutzer mit zu vielen Details oder unn tigen Design Elementen zu verwirren Eine einfache M glichkeit die Software auch nach Fertigstellung noch anzupassen w re w nschenswert da so auf R ckmel dungen der Benutzer in der Anfangsphase der Einf hrung reagiert werden kann Server Als Server steht eine Maschine mit einem 500 MHz Prozessor zur Verf gung Es ist darauf zu achten die vorhandenen Ressourcen effizient einzusetzen und akzeptable Antwortzeiten einzuhalten Client Im Gegensatz zur bisherigen L sung sollen m glichst viele Client Plattformen die Anwendung ben tzen k nnen Es soll eine m glichst weitgehende Unabh ngig keit von Softwareversionen erreicht werden Da Benutzer sich im Allgemeinen von einer Anwendung beim Verlassen nicht abmelden ist darauf zu achten da am Server keine Ressourcen auf Dauer be legt werden Nach Ablauf von Sperrzeiten sind belegte und nicht mehr benutzte Ressourcen wieder freizugeben Archiv Funktion
24. l schen Vorname Nachname Pers Abteilung Tatigkeiten Gehalt Beginn Ende lesen andern erstellen l schen Verrechnung L v L J L Y J Benutzergruppen Privilegien Feldgruppen Abbildung 4 2 Prinzip der Privilegienvergabe Wenn Sie nderungen an den Privilegien vornehmen so werden diese nde rungen erst wirksam wenn sich die betroffenen Benutzer neu anmelden Beachten Sie auch da Sie sich selbst aussperren k nnen wenn Sie der Benutzergruppe aus der Sie die n tigen Privilegien erhalten das Privileg zum ndern der Privile gien entziehen In diesem Fall mu Ihnen ein anderer privilegierter Benutzer die n tigen Privilegien wieder neu erteilen Zur Anwendung des Privilegiensystems finden Sie Beispiele in den typischen Vorg ngen 4 5 4 5 Typische Vorg nge Hier sollen einige typische Arbeitsabl ufe dargestellt werden um die Arbeit mit der Datenbank in der Praxis zu erleichtern Manche Abl ufe k nnen Sie direkt bernehmen aber f r viele andere Aufgaben sind die hier aufgef hrten Beispiele nur als Anleitung gedacht KAPITEL 4 BENUTZERHANDBUCH 74 4 5 1 Hinzuf gen eines neuen Datenbank Benutzers Wenn Sie einem neuen Benutzer Zugriff auf die Datenbank gew hren wollen sollten Sie zun chst genau planen welche Bereiche dem Benutzer zug nglich gemacht werden sollen Wenn Sie einen neuen Zugang nach dem Muster eines bestehenden einrichten m chten brauchen Si
25. mod_layout 1 0 mod fastcgi 2 2 2 PHP 4 0 4p11 X Powered By PHP 4 0 4p11 Expires Mon 26 Jul 1997 05 00 00 GMT Last Modified Wed 10 Jul 2002 12 53 43 GMT Cache Control post check 0 pre check 0 Pragmat no cache Connection close Content Type text html lt html gt lt body gt Harald Kleiner lt body gt lt html gt gt inetd gt 1032 vr 80 gt 1032 FIN ACK 1032 gt 80 ACK inetd wu eme 1032 gt 80 FIN ACK en inetd Pur 80 gt 1032 ACK 3 Netscape i OF x Datei Bearbeiten Ansicht Gehe Fenster Hilfe E L Adresse i 10 100 17 10 Institut person php PersonID 507 D Harald Kleiner eil Dokument bermittelt h Abbildung 2 4 Dritter Teil bertragung der Seite und Verbindungsabbau Kapitel 3 Entwicklungsproze Dieses Kapitel behandelt den eingeschlagenen Weg der zur Entwicklung der Web Applikation gef hrt hat Vom Datenbankentwurf ber den Aufbau von Klas senbibliotheken bis hin zur Installation sollen jeweils die getroffenen Entschei dungen untermauert und begr ndet werden Teile dieses Kapitels k nnen als tech nische Dokumentation dazu dienen den Leser an die verwendete Programmier methodik heranzuf hren so da er nach Erlangen eines berblicks ber den Quellcode in der Lage ist selbst Erweiterungen vorzunehmen 3 1 Datenbankentwurf Im Datenbankentwurf wird das Fundament gelegt auf dem anschlie end das Geb ude der Applikation er
26. nicht vorhanden sind werden diese Felder einfach ignoriert und nicht angezeigt Zur Erzeugung der SQL Abfrage dienen die in den folgenden Abs tzen beschriebenen Methoden create_selectpart erzeugt den SELECT Teil der Abfrage und die berschriftenzeile f r die Ergebnistabelle Das Schl sselwort DISTINCTRON ist in der Abfrage unbedingt notwendig weil durch den f r die meisten Abfragen unn tig ausf hrlichen Verkn pfungsausdruck es werden nicht immer aus allen Tabellen im Verkn pfungsausdruck Felder angezeigt redundante Zeilen im Ergebnis erzeugt werden create_frompart setzt die vordefinierten Suchprofile in Verkn pfungsaus dr cke um Diese werden als Kette von LEFT JOIN Konstrukten aufgebaut und beginnen mit der Tabelle nach der das Suchprofil benannt ist So wird sicher gestellt da alle Datens tze der Haupttabelle im Ergebnis enthalten sind Alle weiteren Felder enthalten nur dann Werte wenn verkn pfte Datens tze vorhanden sind W rde man INNER JOIN als Verkn pfung verwenden so w rden nur jene Datens tze im Ergebnis enthalten sein die Beziehungen zu allen Tabellen im Ver kn pfungsausdruck besitzen was mit zunehmender Anzahl verkn pfter Tabellen immer unwahrscheinlicher wird create_wherepart erstellt die Liste der Kriterien Zu den benutzerdefi nierten Kriterien m ssen noch die zum Ausschlu der gel schten Datens tze hin zugef gt werden Diese Bedingungen h tten am besten in die FROM Ab
27. sein Mit OpenS SL kann ein Schl sselpaar erstellt werden das in Form eines Certificate Signing Request CSR an eine Zertifizierungsstelle bergeben wird Man erh lt ein si gniertes Zertifikat mit dem sich der Server als authentisch ausweisen Kann Man KAPITEL 3 ENTWICKLUNGSPROZESS 63 kann das Zertifikat zum Testen auch selbst mit dem eigenen soeben erzeugten Pri vate Key signieren Internet Explorer akzeptiert selbstsignierte Zertifikate jedoch nicht F r die tats chliche Anwendung ist also ein echtes Zertifikat unbedingt notwendig Das Zertifikat und der private Schliissel werden nun auf den Server kopiert Die Schliisseldatei sollte nur von root und dem Webserver lesbar sein Sie wird zus tzlich verschl sselt abgespeichert und beim Starten des Serverprozesses ist die Eingabe einer Passphrase notwendig damit der private Schliissel gelesen wer den kann Fiir sonst gut abgesicherte Umgebungen kann auf diese zus tzliche Sicherheit verzichtet werden um einen unbeaufsichtigten Start des Servers zu erm glichen In der Konfiguration httpd conf kann eingestellt werden f r welche Dom nen welche Verschl sselung zu verwenden ist Dazu sind in der Dokumen tation bereits einige Beispiele aufgef hrt 3 4 Wartung Im laufenden Betrieb ist es notwendig den zu Beginn gesetzten Qualit tsstandard der gespeicherten Informationen aufrecht zu erhalten Dazu dienen zun chst die laufend durchgef hrten berpr fungen etwa vor
28. und scharfes sind erlaubt und sollen verwendet werden Wenn Sie ung ltige Zeichen verwenden so weist Sie die Datenbank mit einer Fehlermeldung nach dem Speichern darauf hin und Sie m ssen die Eingabe korrigieren und erneut speichern e Vergessen Sie nicht nach dem Bearbeiten auf Speichern zu klicken Ach ten Sie immer nach dem Speichern darauf ob eine Fehlermeldung angezeigt wird Wenn nur ein Wert ung ltig eingegeben wurde wird der Speichervor gang abgebrochen und es wird keiner der anderen Werte gespeichert e Verwenden Sie die normale Gro und Kleinschreibung Schreiben Sie nicht in BLOCKBUCHSTABEN KAPITEL 4 BENUTZERHANDBUCH 12 e Tragen Sie stets nur einen Wert in ein Feld ein Wenn eine Person beispiels weise zwei Kontonummern hat soll eine davon ausgew hlt und eingegeben werden e L schen Sie niemals alle Felder eines Formulars einzeln Wenn Sie einen Datensatz l schen m chten lesen Sie bitte im Kapitel L schen und Wiederherstellen 4 6 weiter und ben tzen Sie die entsprechende L sch Schaltfl che e Uberschreiben Sie niemals die Felder einer bestehenden Karteikarte mit den Werten eines neuen Datensatzes Zum Erstellen eines neuen Datensatzes verwenden Sie bitte den entsprechenden Link auf den jeweils vorgelagerten Suchseiten e Wenn Sie nicht alle Informationen kennen die in ein Formular eingetragen werden k nnen so lassen Sie unbekannte Felder leer Eingaben so wie un bekannt
29. unterlegten Klassen stammen aus PHPLIB und wurden unver ndert bernommen Alle ben tigten Anpassungen sind in abgeleiteten Klassen realisiert Ableitungen werden durch kr ftige Pfeile dargestellt die d nnen Pfeile zeigen die Anwendung der Klassen an Dadurch werden die PHPLIB Dateien nicht ver ndert die Klassenbibliothek kann von mehreren Web Applikationen gleichzeitig verwendet werden Im Zentrum der Applikation stehen die Dokumentklassen _doc die alle von der gemeinsamen Mutterklasse Site abgeleitet sind Jedes einzelne Doku ment der Applikation ist in einer eigenen gleichnamigen Datei abgelegt Da die einzelnen Seiten von einer gemeinsamen Klasse abstammen ist ihnen allen der selbe systematische Aufbau und somit derselbe Programmablauf gemein PHPLIB Funktionalit t Zur Funktion der PHPLIB Klassen sei der Leser auf die Original Dokumentation 15 verwiesen das wichtigste soll jedoch hier kurz zusammengefa t werden Datenbankzugriff DB_Sal und die davon abgeleitete Klasse DB_Institut erm glichen den Zugriff auf eine SQL Datenbank Zu PHPLIB geh ren mehrere 40 KAPITEL 3 ENTWICKLUNGSPROZESS anquuv wo eut uoyngAw jo oop epjefoud eus 90p aunsel oop ueuosJed eajejxaj w jo z
30. verwenden lassen gesteuert durch die Konstanten be_verbose sowie be_more_verbose definiert in prepend php3 Die Methode p erzeugt das Ger st der Seiten und ruft alle weiteren Methoden auf damit diese ihre Inhalte ausgeben k nnen pagetitle oberetabs EE A G U rd u amp 5 Q unteretabs footer Abbildung 3 4 Das vorgegebene Layout der Formulare KAPITEL 3 ENTWICKLUNGSPROZESS 46 Die Methoden zur Erstellung der Navigationselemente verwenden eine Re pr sentation der Seitenhierarchie die neben der Struktur der Applikation auch die Dateinamen die Beschriftung der Links sowie die ben tigten Privilegien beinhal tet Diese Informationen sind in der t ree Datenstruktur Institut inc zusam mengefa t tree istein zweidimensionales assoziatives Array das entspricht einem Array von struct Datenstrukturen nach der Notation von C an Stelle einer Deklaration erfolgt die Benennung der Attribute jedoch implizit bei der erstmaligen Verwen dung Der folgende Ausschnitt zeigt den Eintrag f r die ffentlichen Daten der Personen idx prs pub gt array MTD gt 3 table gt Personen file gt personen publik php label e ffentliche Daten help gt hilfe html Das Schl sselfeld idx prs pub besteht aus Gruppen von jeweils drei Buchstaben die die eindeutige Position der Seite in der Hierarchie festlegen Die angef
31. von http ist da aufeinanderfolgende Zugriffe keinerlei Beziehung zueinander aufweisen das Protokoll ist zustandslos state less Das bedeutet da die Zugriffe der Benutzer durch die bergebenen Para meter identifiziert und voneinander getrennt werden m ssen Dies wird durch die sogenannte SessionID bewerkstelligt Es handelt sich dabei um eine Zeichenfolge die zu Beginn einer Sitzung vergeben wird und anschlie end in jede abgerufene Seite aufgenommen wird Bei einem eintreffenden Seitenaufruf werden mit Hilfe der SessionID die Zust nde der Anwendung also Variablen in der verwendeten Programmiersprache aus der Datenbank wiederhergestellt Beinhaltet ein Seiten aufruf keine SessionID so wird einfach eine neue ID vergeben und eine neue KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 18 Sitzung er ffnet Da die Applikation ber den Webserver wie jede andere Internetsite erreichbar ist sind besondere Vorkehrungen gegen unerw nschte Eindringlinge vorzusehen Die sicherste Betriebsart w re den Server in einem privaten Subnetz zu betreiben so da er von au erhalb der TU Wien nicht erreicht werden kann Wird Zugriff von au en gefordert so mu die Server Konfiguration besonders sicher ausgelegt sein Der Serverproze darf dann nur die Privilegien besitzen die unbedingt n tig sind um die Seiten ausliefern zu k nnen Selbstverst ndlich mu vor Inbetrieb nahme des Servers die Konfigurationsdatei Punkt f r Punkt auf die gew
32. wendet werden miissen Alle Bezeichnungen werden ausnahmslos im Standard ASCII Zeichensatz ver geben Das bedeutet da Umlaute durch ihre Zweibuchstabenrepresentationen ae oe ue sowie ss statt scharfem ersetzt werden Als einziges Sonderzei chen wird der Underscore _ nur in besonderen Fallen sparsam verwendet um die Lesbarkeit zu verbessern Grunds tzlich werden alle Bezeichner m glichst kurz gew hlt um Tipparbeit einzusparen und die bersicht zu steigern trotzdem darf die Verst ndlichkeit nicht leiden M ssen Worte zusammengesetzt werden so wird das zweite Wort mit Gro buchstaben begonnen wenn es sich um eine un bliche Zusammenset zung handelt zum Beispiel AnschlussTyp NutzungDekan aber Geburtsdatum Amtstitel Da zumindest unter Linux und innerhalb einer SQL Anweisung Gro und Kleinschreibung beachtet wird ist auch in diesem Zusammenhang auf Konsistenz KAPITEL 3 ENTWICKLUNGSPROZESS 36 zu achten Tabellen Tabellennamen werden immer im Plural vergeben um anzuzeigen da die Tabelle eine Sammlung gleichartiger Objekte desselben Namens ist die Tabelle Raeume ist eine Sammlung von Raum Objekten Der Tabellenname mu weiters die darin gespeicherten Objekte eindeutig und klar kennzeichnen Das bedeutet auch da alle in einer Tabelle gespeicherten Felder die Spalten in direktem Zusammenhang mit dem Tabellennamen stehen m ssen Es w re bei spielsweise falsch in der Persone
33. 3 ENTWICKLUNGSPROZESS 35 der anderen Entity aufgenommen werden Dabei spielt es keine Rolle welcher der beiden Schliissel verwendet wird Bei 1 n Beziehungen wird bei der Entity auf der n Seite das Schliisselfeld der Entity der 1 Seite als Attribut hinzugefiigt Es wird also beispielsweise bei den Personen das Schliisselfeld der R ume eingetragen um das Sitzzimmer zu modellieren n m Beziehungen k nnen auf diese Art nicht realisiert werden da ja auf beiden Seiten jeweils mehrere Schliisselwerte einzutragen waren Statt dessen wird zum Aufbau von n m Relationen eine eigene Entity erstellt die die beiden Schliisselfelder enth lt Diese Entity kann auch weitere Attribute enthalten die zur Beziehung geh ren etwa Beginn und Ende der Teilnahme am Projekt 3 1 2 Konventionen Im Folgenden sollen die Regeln dargelegt werden die bei der Umsetzung des ER Diagramms in Tabellen befolgt wurden Es handelt sich dabei um Konventionen die sich durch oftmaligen Gebrauch entwickelt und bew hrt haben die allerdings nicht als allgemein g ltige Norm vorliegen Ziel dieser Konvention ist es die Benennung der Datenbankobjekte konsi stent und knapp auszuf hren so da der Name eines bestimmten Attributes eines Schliisselfeldes oder einer Tabelle m glichst kurz und m glichst ohne Blick auf das ER Diagramm leicht zu merken oder zu erraten ist Dies macht sich bei der Erstellung der Software bezahlt da die Namen im Programmcode intensiv ver
34. Computer und Netzwerkadressen sowie die hierarchische Struktur des Instituts Erst aus der Art der zu speichernden Informationen und unter Beachtung der ver wendeten Entwurfsregeln ergibt sich da noch einige weitere Entit ten beriick sichtigt werden m ssen um die Information eindeutig rekonstruierbar abspei chern zu k nnen Diese zus tzlichen Entit ten stehen in engen Beziehungen zu den oben genannten da sie eigentlich nur zusammengesetzte Attribute der zu spei chernden Entit ten sind Da keine verbale Beschreibung so exakt sein kann wie das ER Diagramm wird an dieser Stelle das Diagramm selbst als Grundlage der Aufgabenstellung verwendet Siehe Bild 2 1 Alle dargestellten Entit ten samt ihren Beziehungen m ssen in der Datenbank gespeichert werden und durch die Oberfl che zug nglich gemacht werden F r die Benutzbarkeit der zu erstellenden Formulare werden im folgenden Abschnitt Vorgaben getroffen Benutzerorientierung Um den Benutzern den Umstieg auf die neue Anwendung zu erleichtern sind mehrere Anforderungen zu beachten Die Software mu also aus der Sicht des Anwenders entwickelt werden Die am h ufigsten vorkommenden Vorg nge soll ten daher auch am besten unterst tzt und automatisiert werden Mentalit t Die Software mu an den Benutzer angepa t sein Sie mu die Ar beit erleichtern indem sie beispielsweise die Suche nach Datens tzen ber geeig nete Schl sselw rter an den richtigen Stellen erm g
35. DIPLOMARBEIT Web basierte Datenbank zur Verwaltung administrativer Daten eines Universit tsinstituts ausgef hrt zum Zwecke der Erlangung des akademischen Grades eines Diplom Ingenieurs unter der Leitung von Ao Univ Prof Dipl Ing Dr techn Karl Riedling E366 Institut f r Industrielle Elektronik und Materialwissenschaften eingereicht an der Technischen Universit t Wien Fakult t f r Elektrotechnik von Harald Kleiner Matr Nr 9625163 Franz Josef Stra e 77 2344 Maria Enzersdorf Wien im September 2002 Kurzfassung Universit tsinstitute werden heute in zunehmendem Ma e wie Firmen gef hrt und autonom verwaltet Damit kommen v llig neue Aufgaben auf die Verwaltung zu die sich auf verschiedenste Bereiche erstrecken Ob Personalstand ausgef hrte Projekte zugeteilte R ume oder Besch ftigungsverh ltnisse alle diese Daten best nde weisen hohe nderungsraten auf und m ssen trotzdem stets konsistent vorliegen mehr noch sie sollen sogar in die Vergangenheit zur ck verfolgt wer den k nnen um vergangene Zust nde rekonstruieren zu k nnen Um die neu gestellten Anforderungen bew ltigen zu k nnen bedarf es einer zuverl ssigen Datenbank die die Datenbest nde zur Verf gung stellt und die die Benutzer bestm glich unterst tzt die oft komplexen administrativen Vorg nge zu bew ltigen Dabei kommt nat rlich der Datenbankoberfl che besondere Bedeu tung zu Sie soll den Benutzer bei seiner Arbeit unt
36. Eine wesentliche Anforderung an das System ist die M glichkeit auf Daten best nde aus der Vergangenheit zugreifen zu k nnen Daraus folgt unmittelbar da beim L schen von Datens tzen diese nur als gel scht markiert werden d rfen KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 13 um die Daten nicht zu verlieren F r ausreichend privilegierte Benutzer mu es anschlie end m glich sein die gel schten Datens tze einzusehen und sie gegebe nenfalls auch wiederherzustellen falls sie irrt mlich gel scht wurden Als Beispiel seien hier Besch ftigungsverh ltnisse von Personen angef hrt Personen ben T tigkeiten aus unterbrechen diese m glicherweise und kehren in sp terer Folge wieder ans Institut zur ck Beim Austritt der Person wird das T tigkeitsverh ltnis abgeschlossen und gel scht Kehrt die Person sp ter wieder zur ck so k nnen die gel schten T tigkeiten als Vorlage zur Eingabe der neuen T tigkeit dienen sie d rfen aber keinesfalls wiederhergestellt und weiterverwen det werden da ja eine neue T tigkeit begonnen wird Durch eine Weiterverwen dung w rde die in der Vergangenheit liegende T tigkeit berschrieben und w re verloren Wurde die Person inzwischen gel scht darf und soll der Personen Datensatz wiederhergestellt werden da es sich ja um dieselbe Person handelt Zugriffskontrolle Die Datenbank enth lt sensible teilweise sogar geheimhaltungspflichtige Daten Diese Daten m ssen unbed
37. GI auch vollst ndig deaktiviert werden Zur Sicherheit sollte f r den gesamten Server die Ausgabe von Verzeichnis listings verboten werden Die Verzeichnislistings enthalten f r Angreifer interes sante Informationen ber den Server und ber die vorhandenen Dateien Um Li stings abzuschalten wird die Options Direktive im lt Directory gt Abschnitt von httpd conf verwendet lt Directory usr local httpd htdocs gt Options Indexes lt Directory gt php Die Anwendung kann und soll im php Safe Mode ausgef hrt werden Dadurch wird sichergestellt da ein Skript nur Zugriff auf jene Dateien erh lt die denselben Eigent mer wie das Skript selbst haben In der aktuellen Form greift die Anwendung ausschlie lich auf den Datenbankserver zu es werden keine externen Dateien angelegt oder gelesen ausgenommen nat rlich die Skripte selbst F r die h chstens erlaubte Ausf hrungszeit max_execution_time sollte ein vern nftiger Wert eingestellt werden damit Skripte nicht in Endlosschlei KAPITEL 3 ENTWICKLUNGSPROZESS 61 fen h ngen bleiben k nnen jedenfalls weniger als 30 Sekunden Der erlaubte Speicherbedarf f r Skripte sollte ausreichend bemessen werden da sonst komple xe Suchanfragen nicht funktionieren k nnten Werte von 8MB bis 16MB sollten jedenfalls ausreichend sein Die Funktion register_globals mu unbedingt aktiviert werden weil For mularvariablen unabh ngig von ihrer Herkunft GET POST
38. NG UND LOSUNGSANSATZ 14 Korrektheit tiberpriifen zu k nnen Umstieg von der bestehenden Datenbank Datenexport Der derzeitig existierende Datenbestand mu vollst ndig und selbstverst ndlich unter korrekter Beibehaltung der Beziehungen zwischen den Datens tzen in das neue System importiert werden Dazu ist ein Datenbank Frontend vorzusehen das an den Datenbestand ankoppelt und die vorhandenen Daten fiir den Import in die neue Datenbank aufbereitet Installation Da die Konsistenz Pr fungen in der bestehenden Datenbank nicht ausreichend streng formuliert sind wird es n tig sein noch vor der tats chlichen Inbetriebnahme manuell Korrekturen am Datenbestand vorzunehmen so da die gew nschten h heren Qualit tsstandards eingehalten werden Anschlie end sind die Pr fungsregeln entsprechend zu versch rfen damit die so erreichte Qualit t auch erhalten bleibt Inbetriebnahme Die Umstellung auf das neue System hat m glichst ohne Be triebsunterbrechung zu erfolgen gleichzeitig mu ab Umstellungstermin sicher gestellt sein da die alte Datenbank anschlie end nicht mehr zug nglich ist 2 2 L sungsansatz Auf der Suche nach einer Web f higen Alternative zu Microsoft Access sollen nur Softwarepakete ber cksichtigt werden die aufgrund ihrer langen Entwick lungszeit und ihrer weiten Verbreitung als stabil erprobt und dauerhaft bezeichnet werden k nnen Selbstverst ndlich spielen auch finanzielle Aspekte wie Lizenz
39. OWTO Alsvoor Vasudevan Online unter http metalab unc edu LDP HOWTO PHP HOWTO html 95 LITERATURVERZEICHNIS 96 8 9 10 11 12 13 14 15 16 The PHP Manual Stig S ther Bakken Egon Schmid Online unter http www php net download docs php Deutschsprachige php FAQ Zusammenfassung der Newsgroup de comp lang php Kristian K hntopp Online unter http dclp faq de faq html tar gz Web Usability Das Prinzip des Vertrauens Martina Mannhartsberger Sabine Musil Galileo Design ISBN 3 89842 187 2 The World Wide Web Consortium Standards fiir das Internet Validierungsservice Online unter www w3 org Datenbanksysteme Skriptum zur Vorlesung 181 038 Gerald Pfeifer Michael Schrefl Katrin Seyr Markus Stumptner Institut fiir Datenbanksysteme und Artificial Intelligence TU Wien Ausgew hlte Kapitel der Informatik Teil 1 Datenbanken Skriptum zur Vorlesung 384 009 Karl Michael G schka Institut fiir Computertechnik TU Wien Datenbanken Konzepte und Sprachen Heuer Saake Thomson Publishing Bonn PHPLIB Dokumentation Boris Erdmann Kristian K hntopp Sascha Schumann Online unter http phplib sourceforge net Merkblatt fiir den Aufbau wissenschaftlicher Arbeiten Karl Michael G schka Institut fiir Computertechnik TU Wien Online unter http www ict tuwien ac at LITERATURVERZEICHNIS 97 17 18 The Not So Short Introduction to IATEX 2g Or IATEX Ze in 95 minutes Tobias Oet
40. Seite gerade ben tigt wird Die abgeleiteten Klassen Institut_Challenge Auth und Institut_Perm implementieren noch weitergehende Funktionalit t da die Privilegien der Benutzer f r jedes Datenbankfeld extra als das Maximum der Pri vilegien aus allen Gruppenzugeh rigkeiten ermittelt werden m ssen Formulardesign Mit Hilfe der form Klasse l t sich die Erstellung von html Formularen samt anschlie ender Validierung Plausibilit tspr fung stark vereinfachen Zun chst wird festgelegt welche Steuerelemente Textfeld Aus wahlliste o verwendet werden sollen Davon unabh ngig wird in einem zweiten Schritt das Layout des Formulars bestimmt Die Erstellung des html Quelltextes f r die Steuerelemente bernimmt die orm Klasse Dadurch kann besonders viel Quelltext eingespart werden und die bersichtlichkeit wird stark verbessert Die form Klasse ist selbst modular aufgebaut und besteht aus Basisklassen zur Implementierung der einzelnen Steuerelemente Abb 3 3 Um das Verhalten an die Bed rfnisse anzupassen und die Abstraktion noch weiter voranzutreiben werden jeweils abgeleitete Klassen verwendet In der Klasse myform wird die Me thode add_text_element definiert die das Erstellen von Textfeldern stark ver einfacht indem sie anhand des Datentyps den Validierungsausdruck f r das Feld automatisch festlegt Die Methode add_optionlist f gt dem Formular eine Auswahlliste hinzu Dabei wird die Methode create_optionlist zu Hilfe
41. Um die Session Klasse unabh ngig von der darunterliegenden Speichermethode f r die Daten zu gestalten gibt es in PHPLIB mehrere solche Container Klassen f r SQL LDAP shared memo ry und DBM Um MySQL zum Speichern der Session Daten zu verwenden wird in Institut_CT_Sql der Name der Datenbankklasse angegeben und die von Session abgeleitete Klasse Institut_Session wird so konfiguriert da sie Institut_CT_Sql als Container verwendet Die Session Klasse bildet ihrerseits nun die Basis f r die Benutzerauthenti fizierung Auth und das Permission Management Perm Die Session Klasse erzeugt SessionIDs also eindeutige Zeichenketten anhand derer ein neuerlicher Seitenabruf als Teil einer bestehenden Session wiedererkannt werden kann Da durch sind alle Seitenabrufe eines Benutzers eindeutig zuzuordnen und von den Abrufen der anderen Benutzer trennbar Au erdem bietet Session die M glich keit Programmvariablen zu registrieren Die Werte der registrierten Variablen werden am Ende des Programmablaufes automatisch durch die Session Klasse in die Datenbank geschrieben und beim n chsten Seitenabruf aus der Datenbank wiederhergestellt F r den Programmierer erscheinen registrierte Variablen also wie statische globale Variablen Die Parallelit t und die zeitliche Verschachtelung der Seitenabrufe ist somit aufgehoben Mit Hilfe der Session Klasse werden die Seitenabrufe jedes Benutzers durch eine gemeinsame SessionID zusammengefa t Mi
42. ach aus welchen Bereich der Datenbank Sie durchsuchen m chten Dadurch entscheiden Sie welche Felder Sie in der Abfrage verwenden K nnen e Wahlen Sie jetzt in der mehrzeiligen Auswahlliste die Felder aus die Sie als Ergebnis anzeigen m chten Sie k nnen mehrere Felder ausw hlen in dem Sie die Gro schreibe oder die Steuerungstaste halten w hrend Sie die einzelnen Feldnamen anklicken e Zum berpr fen Ihrer Abfrage k nnen Sie bereits jetzt mit der Suchen Schaltfl che das Ergebnis anzeigen lassen Sie bekommen eine Liste mit allen ausgew hlten Feldern e Um die angezeigten Datens tze einzuschr nken geben Sie ein Kriterium ein W hlen Sie dazu das Feld das Sie zum Einschr nken verwenden m chten in der Kriterienzeile aus W hlen Sie weiters eine Vergleichsfunk tion kleiner gr er wie und geben Sie im Textfeld einen Vergleichswert an Sie k nnen auch mehrere Kriterien mit und bzw oder verkn pfen berpr fen Sie zwischendurch ob die Ergebnismenge Ihren Erwartungen entspricht e Sie k nnen auch Felder ausw hlen nach denen sortiert werden soll e Speichern Sie einmal erstellte Abfragen ab um sie sp ter wiederzuverwen den Geben Sie einen aussagekr ftigen Namen an und klicken Sie auf Spei chern 4 6 L schen und Wiederherstellen Zum L schen von Datens tzen brauchen Sie das entsprechende Privileg Erst mit diesem Privileg bekommen Sie die L schen Schaltfl che We
43. alisieren sowie eine Schaltflache um den Datensatz in einem Detail formular anzeigen zu lassen KAPITEL 3 ENTWICKLUNGSPROZESS 51 show_searchlist gibt zuerst den ben tigten JavaScript Code aus Er bein haltet zwei vorinitialisierte Arrays die die Schliissel und die Beschriftung der Li steneintr ge enthalten Die Such Funktion erstellt aus dem eingegebenen Suchbe griff einen regul ren Ausdruck entfernt alle bis auf die ersten zwei Listenein tr ge aus der Suchliste und pr ft anschlie end jeden Wert aus dem Daten Array Die passenden Eintr ge werden wieder in die Liste aufgenommen und stehen zur Auswahl bereit Tests haben ergeben da diese Realisierung bereits bei etwa 1000 Datens tzen inakzeptabel hohe Wartezeiten und auch unvorhersehbares Verhalten verursachen kann Deshalb mu te beim Formular zur Schl ssel Eingabe ein serverseitiges Suchformular verwendet werden 3 2 4 Spezielle Formulare Dieser Abschnitt bietet einen berblick ber die internen Abl ufe in den Formu laren und geht weiters auf die Besonderheiten spezieller Formulare wie dem Suchformular ein Einzel und Endlosformulare Bei der Entwicklung der Formulare wird haupts chlich die Methode inhalt f r die von Site abgeleitete Klasse implementiert Es wird also nur jener Programm teil neu implementiert der die Inhalts Zelle der Gliederungstabelle ausf llt alle weiteren Vorg nge k nnen aufgrund der starken Modularisierung unber cksic
44. ann die Anmeldung nicht passieren Da noch immer ltere Browser verwendet werden die nicht vollst ndig kom patibel zu JavaScript Stylesheets und html 4 sind wurde auch eine Versions ber pr fung f r den Browser eingebaut Im Zuge der Anmeldung wird die Browser kennung user agent ausgewertet Die Pr fung erfordert da sich der Brow ser als Mozilla identifiziert und als Versionsnummer zumindest 4 bzw Ope ra ab Version 5 angibt Dadurch werden die Browser von Netscape und Mi crosoft ab Version 4 bzw Opera ab 5 zugelassen F r weniger bekannte Brow ser mu zun chst durch einen Testlauf sichergestellt werden da die Darstel lung korrekt erfolgt und Skripte ordnungsgem ausgef hrt werden bevor die Pr fung auf andere Browsernamen und Versionen erweitert werden Kann siehe auth gt auth_validatelogin in local inc 3 3 Installation Bei der Installation der Institutsverwaltung mu die Datenbank mit den aktuellen Datenst nden initialisiert und der Webserver f r die Abarbeitung der php Skripte konfiguriert werden Bei den Einstellungen spielen Datensicherheit und Schutz gegen Angriffen auf die Infrastruktur eine gewichtige Rolle KAPITEL 3 ENTWICKLUNGSPROZESS 58 Ubergabe der Datenbest nde Um die Daten aus der bestehenden Datenbank zu exportieren wurde eigens ein Export Frontend entworfen Diese Datenbankanwendung erzeugt mit den beste henden Daten SQL Anweisungen zum Einfiigen der Datens tze in die
45. ary Institutes of European universities are more and more released from government property and led out into private enterprise management Therefore new challen ges have to be taken to manage various areas of administration Just think of the people working for the institute currently running projects or occupation of rooms all these data have to be held ready for access even though they are changing rapidly more than that there is a strong demand to reconstruct states of infor mation lying in the past To meet the new challenges a relyable database is required that provides users with data access and does its best to support users to manage even complex admi nistrative procedures Special importance comes to the database surface that has to support users in finding their way to achieve fast solutions but also to recogni ze wrong or untrustworthy input and thereby demand the necessary discipline on data entry Obviously the changing of database management system is a difficult task that takes a lot of effort Therefore a long term solution has to be achieved The solu tion in particular must not rely on special releases of software packages to escape from dependencies of software developing companies That is why open standards are employed and free software i e development of software is free is used enti rely The result is a web based database application which is almost completely platform independent PHP is used as serversi
46. atei sollte ge meinsam mit allen anderen PHPLIB Dateien nicht im Document Root z B usr local httpd htdocs erreichbar sein sondern in einem eigenen Zweig es empfiehlt sich ein Pfad wie z B usr local httpd php KAPITEL 3 ENTWICKLUNGSPROZESS 60 Die Quelltexte der Applikation miissen jedenfalls auch auf Datei Ebene durch das Betriebssystem gesichert werden AuBer dem Administrator und dem Webser ver sollte niemand die Quelltexte lesen diirfen Alle Linux User miissen durch Pa w rter gesch tzt sein und per FTP sollte kein Zugriff auf die Quelltext Verzeichnisse m glich sein auch nicht zum Hochladen der Seiten Einrichten von Apache Der Apache Webserver darf keinesfalls als root User ausgefiihrt werden da er sonst alle erdenklichen Rechte besitzen wiirde Im Falle eines Angriffes k nnte jemand einen Totalschaden anrichten nachdem er den httpd eingenommen hat In der Praxis wird daher zumeist ein eigener Benutzername eingerichtet der mi nimale Privilegien besitzt wwwrun oder nobody Falls am Server CGI Programme verwendet werden sollen so ist es sehr empfehlenswert alle CGI Programme in ein gemeinsames Verzeichnis zu legen auf das nur vertrauensw rdige Benutzer Schreibrechte besitzen Dadurch kann der Administrator kontrollieren welche Programme als CGI ausgef hrt werden d rfen script aliased CGI Die Institutsdatenbank f hrt selbst keine weiteren Programme aus Falls php als Modul eingesetzt wird kann C
47. ch finden Er bringt sie zu einer Hilfeseite die speziell f r jedes Formular Hinweise bereit h lt F r Administratoren d rfte schlie lich das Kapitel ber Privilegien 4 4 beson ders wichtig sein Sie k nnen die Dokumentation nat rlich auch von Anfang an zu lesen begin nen hier die weiteren Kapitel Ich beginne mit einem berblick 4 1 der die Funktionen der Datenbank kurz vorstellt Die ersten Schritte 4 2 demonstrieren die Verwendung der Formulare das An und Abmelden und wie Privilegien funktionieren Der Abschnitt ber Formulare 4 3 gibt Hinweise f r das korrekte Ausf llen von Formularen Mit der Vergabe von Privilegien besch ftigt sich das n chste Kapitel 4 4 Anschlie end wird demonstriert wie man mit der Datenbank wirklich arbeiten kann 4 5 also zum Beispiel das korrekte Eintragen eines neuen Mitarbeiters Beim L schen von Datens tzen kann das n chste Kapitel 4 6 helfen Zu Ihrer Sicherheit und zur Si cherheit der ganzen Datenbank gibt es auch ein paar Hinweise 4 7 Und falls Ihnen 66 KAPITEL 4 BENUTZERHANDBUCH 67 ein paar der verwendeten Vokabel spanisch vorkommen kann Ihnen hoffentlich das Glossar mit Erkl rungen dienen 4 8 Nehmen Sie sich bitte ein paar Minuten Zeit f r diese Dokumentation sie kann Ihnen die Arbeit sehr erleichtern 4 1 Uberblick Zun chst einmal vielen Dank da Sie sich entschlossen haben weiterzulesen Die neue Institutsdatenbank soll die Verwaltung unterst tzen indem sie
48. cherung Backups hingewiesen werden Im schlimmsten Fall miissen alle Anderungen an der Daten bank seit dem letzten Backup wiederholt werden wenn ein Totalausfall erlitten wurde Die Periodendauer zwischen den Backups ist also genau die Zeitspanne die mit vertretbarem Aufwand nachgearbeitet werden kann Neben spezialisierten L sungen f r Server die den kompletten Inhalt der Fest platten auf Band sichern gibt es in MySQL auch eine sehr einfache M glichkeit komplette Datenbanken in SQL Anweisungen zum Erstellen der Strukturen und zum Einf gen der Daten zu exportieren Das Kommando mysqldump A c gt dump sql erzeugt eine Textdatei die Anweisungen enth lt um alle vorhandenen Datenban ken zu erstellen und mit den vorhandenen Werten zu f llen Diese Datei kann per Skript regelm ig erstellt und ber eine verschl sselte Verbindung auf einen FTP Server kopiert werden damit sie auf einer geographisch entfernten Maschine abgelegt werden kann Um die Datenbanken wiederherzustellen f hrt man einfach das Kommando mysql lt dump sql aus wenn man eine aktuelle Sicherungsdatei zur Hand hat 7Wihrend sich der Finger in Richtung Enter Taste bewegt um das neue Backup zu starten schl gt der Blitz ein und ein unangenehmer aber eindeutiger Geruch dringt aus dem Server geh use KAPITEL 3 ENTWICKLUNGSPROZESS 65 3 5 Zusammenfassung Die neue Institutsdatenbank soll die Verwaltung vereinfachen und bestm glich unterst
49. chlieBend nach einer Softwareumgebung gesucht mit der die gesteckten Ziele am besten zu erreichen sind Den Abschlu des Kapitels bildet eine Analyse der technischen Vorg nge in der gew hlten Systemumgebung 2 1 Aufgabenstellung und Ziele Zur besseren Ubersicht sind die Anforderungen in passende Themengebiete ein geteilt Datenbasis Unter Datenbasis wird in diesem Zusammenhang der Informations Raum ver standen der vom zugrunde liegenden ER Diagramm aufgespannt wird also die definierten Tabellen samt Attributen und Beziehungen Das ER Diagramm ist zwar erst in der Anfangsphase der Entwicklung entstanden es lag also nicht bereits zu Beginn des Projektes vor es wird aber nun zum Bestandteil der Auf gabenstellung erkl rt Die Erstellung des ER Diagramms und seine Uberpriifung im Interview mit dem Auftragge ber ist eigentlich eine detaillierte Formulierung der Aufgabenstellung die der Entwickler fiir den Auftraggeber vornimmt Die Interviews zur Erstellung des ER Diagramms helfen sowohl dem Auftraggeber seine Wiinsche zu pr zisieren als auch dem Entwickler um in die vom Auftragge ber verwendete Begriffswelt hineinzufinden KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 10 Die Institutsdatenbank soll zun chst einmal folgende Entit ten Dinge der realen oder der Vorstellungswelt verwalten Personen deren T tigkeiten Pro jekte Institutstelefonklappen Institutsschliissel dem Institut zugeteilte R ume
50. d mod_php4 SQL Server JusriocalMtipdattdocs Institut person php Texteditor lt php db new DB_Institut db gt query SELECT FROM Personen WHERE PersonIDz addslashes PersonID y db next record echo html lt body gt db f vorname db f Nachname lt body gt lt shtml gt gt mysqlconnect 0 mysqld return db_handle lt spawn thread Pr mysql_query 0 E mo a mysqld Gr a rn 1 um end Abbildung 2 3 Zweiter Teil Datenbankzugriff KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 27 am Beginn erw hnte Aneinanderreihung von einfachen Teil Vorg ngen die durch wiederholte Anwendung komplexes Verhalten erreichen Eine typische Seite der Institutsdatenbank besteht aus bis zu 20 Bildern und ben tigt zwischen 30 und 50 Datenbankzugriffen um eine Seite aufzubauen der Ablauf f r solch einen Seitenabruf ist in keiner Weise komplexer als der hier beschriebene er ist nur durch die gro e Anzahl an Schritten komplizierter al so schwer zu berblicken In diesem einfachen Beispiel zeigt der Browser nun den gew nschten Namen an und wartet auf neue Eingaben des Benutzers die Transaktion ist abgeschlossen KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 28 Browser http Server httpd 80 gt 1032 httpd exit HTTP 1 1 200 OK Date Wed 10 Jul 2002 12 53 43 GMT Servert Apache 1 3 19 Unix SuSE Linux mod throttle 3 0
51. de programming language release 4 of PHP encourages object oriented programming The main part of this work was to implement classes that abstract the task of html page creation by moving code that creates html forms down into base classes Following the concepts of modularization allows the programmer to concentrate on application program ming without having to worry about all the html details Only consequent re use of generalized code segments allows to create a web based application for admi nistration gaining the desired level of complexity and comfort Danksagung Vielen Dank an Professor Riedling der nicht miide wurde meine vielen E Mails innerhalb kiirzester Zeit zu beantworten und der auch im Urlaub ein offenes Ohr fiir meine Fragen hatte Es war f r mich eine sehr gro e Unterst tzung auch auf so manche technische Frage neue Anregungen zu bekommen Mein ganz besonderes Dankesch n geht an meine Familie Meine Eltern sind immer fiir mich da und geben mir die Ruhe und Sicherheit um mich ganz auf die Arbeit konzentrieren zu k nnen Danke fiir die Unterstiitzung das ist Euer Erfolg Melanie hat tapfer durchgehalten und die gesamte Arbeit korrekturgelesen keine leichte Aufgabe bei den komplizierten Formulierungen Uber diese Ausarbeitung Diese Ausarbeitung wurde in IATEX erstellt Dabei hat die doch nicht so kurze Einf hrung in IATEX 2e 17 sehr gute Dienste geleistet Die inhaltliche Strukturierung und Planung wur
52. de sich in den einzelnen Datens tzen je nach Geschmack der eingebenden Person unterscheiden Es w re dann nicht mehr m glich Namenslisten nach Vor oder Nachname zu sortieren oder beispielsweise eine pers nliche Anrede Sehr geehrte oder Sehr geehrter etwa f r einen Brief automatisch zu erstellen Eine nachtr gli che Trennung ist auf automatischem Wege kaum m glich man denke nur an Doppelnamen oder Vornamen wie Marie Sophie Daher m ssen Attribute schon beim Entwurf so weit in Teil Attribute aufgespaltet werden bis atomare Ein heiten erreicht sind Das f hrt dazu da in der Institutsdatenbank sechs Felder zur vollst ndigen Speicherung des Namens verwendet werden Anrede Vorname Nachname Titel in Langform Titel in Kurzform sowie Amtstitel die jedoch zur Ausgabe beliebig kombiniert werden k nnen Bei der Aufspaltung ist eine genaue Analyse der Daten notwendig damit kein nicht atomares Attribut bersehen wird Die Theorie definiert zur Kategorisierung von Datenbankentw rfen sogenann te Normalformen Mit gro em formalen Aufwand werden dort Begriffe wie Schl ssel Abh ngigkeit transitiv oder Primattribut definiert Hier wird nun ver sucht ohne Verwendung dieser Begriffe f r die Praxis geeignetere und leichter verst ndliche Regeln zu formulieren Au erdem wird auch gleich auf die F lle hingewiesen in denen bewu t von den theoretischen Vorschriften abgewichen wird Erste Normalform L
53. de unter intensiver Zuhilfe nahme des Merkblattes f r den Aufbau wissenschaftlicher Arbeiten von Karl M G schka 16 vorgenommen Inhaltsverzeichnis 1 Einleitung 2 Problemstellung und L sungsansatz 2 1 Aufgabenstellung und Ziele 2 22 22 SE BG 2 2 Losungsansalz e ok We e N op 2 3 Eigenschaften von LAMP use oe soe ete wa wa E EE 2 3 1 berblick und Literatur 2 lees 2 3 2 Fallstudie Ablauf einer http Session Entwicklungsproze 3 1 Datenbankentwurf tds et 2222 hee ER I es Solel gt Eniwurfsresein c me ae TAS ara DPA 3 12 Konventionen 29 va AA GA AR wa a 3 2 Programmentwicklung gt 2 222 2 22 2 2 4 2 oda rea 3 Werkzeuge ous wa RE BHR ri 3 2 2 Aufbau und Zusammenspiel der Klassen 3 2 3 Aufbau der Formulare 3 2 4 Spezielle Formulare 2 254 Ae Fa 323 ISA lt a RL RR ox RES A ot ath ot c ee at oa ee e ee ie ee ee ade pt We 3 5 Zusammenfassung oir Benutzerhandbuch AM berblick oes ecu ene a SEI Ae eU end Sed qeu 42 Erste Schritte ses ses Hack nac ned aad Br she AZE Starten agas E e Aa a Baten ie 422 Navigation Sis e Ne A RO X ROS ee RUE a 4 2 3 Ausloggen aa ie wer MR wa 14 17 19 21 29 29 30 35 37 38 39 44 51 57 63 65 INHALTS VERZEICHNIS 4 204 Arbeiten mit Formularen 4230 E ara Er 23 AA E ra er Cr v y xs 44 Privilegienvergabe e 25 Typische Vorg nge sous vef cus A E Ra IR Eee N 4 5 1 Hinzuf gen eines neu
54. dem L schen oder Wiederher stellen von Datens tzen Zus tzlich gibt es ein Formular das verwaiste Datens tze anzeigt Hier werden s mtliche Beziehungen die im EER Diagramm 2 1 defi niert sind berpr ft F r alle Beziehungen wird berpr ft ob nicht gel schte Datens tze mit gel schten Datens tzen in Beziehung stehen Es darf zum Beispiel keine Etage geben die nicht zu einem Geb ude geh rt weil eine Etage f r sich alleine nicht sinnvoll ist Au erdem wird berpr ft ob verkn pfte Datens tze berhaupt exi stieren wenn also einer Etage ein Geb udedatensatz zugeordnet w re der nicht mehr existiert L schanomalien bergeordneter Datensatz als gel scht markiert k nnen di rekt mit Hilfe der Oberfl che repariert werden indem entweder der untergeord nete Datensatz gel scht oder der bergeordnete wiederhergestellt wird Bei Ver weisen die ins Leere zeigen sollte unbedingt der Administrator verst ndigt wer den da solche Zust nde nicht vorkommen d rfen Mit einem Administrationstool f r Datenbanken kann dann ein genauerer Einblick in die tats chlichen Daten strukturen vorgenommen werden Da ber die Oberfl che keine Datens tze der im KAPITEL 3 ENTWICKLUNGSPROZESS 64 EER Diagramm 2 1 dargestellten Tabellen tats chlich gel scht werden sind echt verwaiste Datens tze ein Alarmsignal zur Erkennung von Eindringlingen oder Sy stemfehlern An dieser Stelle soll auch auf die Notwendigkeit von Datensi
55. deren Webserver stammen aus der UNIX Linux Welt und wurden auf Windows portiert was EinbuDen in Bezug auf Leistungsfahigkeit und Sicherheit zur Folge haben kann Weiters gehen neuere Versionen von Windows verschwen derisch mit Ressourcen um w hrend Webserver auf Linux Basis im Textmodus selbst auf Computern der 80486 Klasse noch funktionieren Um den Beschr nkungen der vorhandenen Hardware und des Budgets gerecht zu werden fallt die Wahl klar auf Linux als Serverbetriebssystem Web Server Die wichtigsten Anforderungen an den Webserver beziehen sich auf Geschwindigkeit und Sicherheit gegen ber Angriffen von au en Au erdem muf der Webserver mit der verwendeten Programmiersprache zusammenarbeiten k nnen Optimal w re eine Kombination bei der die Programmiersprache mo dulartig in den Server integriert ist Dies vermeidet die Leistungseinbu en die CGI Systeme durch die Er ffnung eines eigenen Prozesses zum Parsen des Sei tenquelltextes haben Aus Gr nden der Sicherheit kommt der Internet Information Server keinesfalls in Frage F r Windows existieren noch weitere kleinere Webserver wie beispielsweise der Sambar Server Dieser ist zwar kostenlos erh ltlich im Unterschied zu freier Software sind die Quelltexte allerdings nicht verf gbar Das bedeutet eine Bin dung an einen in diesem Falle noch dazu besonders kleinen Softwarehersteller die ja vermieden werden sollte Da als Betriebssystem Linux verwendet wird und keine zwi
56. die Daten sammelt aufbereitet und auf bersichtliche Art zug nglich macht Um Mi verst ndnissen vorzubeugen soll gleich zu Beginn deutlich gemacht werden was diese Datenbank ist und was nicht Diese Datenbank dient als Beh lter f r die Daten von Personen R umen Telefonklappen und weiteren Dingen Wenn jemand etwas neues in die Datenbank eingibt sehen auch alle an deren Benutzer den neuen Datensatz die Datenbank ist also ein gemeinsamer zentraler Speicher f r die Daten genau wie ein Karteikasten Der gro e Vorteil an einer Datenbank ist jetzt da man die Daten nur ein mal eingeben mu und sie dann auf unterschiedliche Art wieder ausgeben kann zum Beispiel wie eine Karteikarte f r das Archiv in Form einer Telefonliste oder als Vorlage f r die Gehaltsberechnung Man erspart sich dadurch Arbeit weil Daten nur noch einmal eingegeben werden m ssen Wenn die Eingabe aber einen Fehler hat dann taucht der Fehler berall dort wieder auf wo dieses Feld verwendet wird daher ist gr ere Sorgfalt bei der Eingabe notwendig Es soll auch nicht verschwiegen werden was diese Datenbank nicht ist Sie ist nicht intelligent Das hei t die Datenbank ist stur und macht genau das was der Benutzer vorgibt ohne mitzudenken Trotzdem sind ein paar Sicherungen eingebaut um m gliche Fehler sofort zu erkennen Es werden zum Beispiel alle eingegebenen Werte berpr ft um offensichtlich falsche Eingaben zu erkennen
57. die jedoch schon bei einfachen Gesamtvorg ngen un bersichtlich wird wenn man nicht den groBen Zusammenhang vor Augen hat In den folgenden Abs tzen werden einige Abk rzungen verwendet die an dieser Stelle nicht genauer erkl rt werden k nnen im Anhang A findet sich ei ne Auflistung mit kurzen Erkl rungen Als Nachschlagewerk kann hier auch das TCP Tutorial von IBM 1 sehr empfohlen werden Im dargestellten Beispiel stellt ein Internet Browser an einen Webserver eine Anfrage Dieser wiederum besorgt sich die Daten f r seine Antwort von einem Datenbankserver Um das Beispiel berschaubar zu halten besteht die Antwort einfach nur aus dem Namen einer Person Der Browser bergibt am Beginn die PersonID um die gew nschte Person festzulegen In Abb 2 2 ist die Ausgangslage zu sehen Im linken Teil ist der Client die Browsersoftware des Benutzers und rechts der Server dargestellt Ausge tauschte Nachrichten werden als Pfeile dargestellt Der Client besitzt die IP Adresse 10 100 17 50 der Server hat die Adresse 10 100 17 10 und wartet auf dem Standard Port 80 auf eingehende Verbindungen Zu Beginn hat der Benutzer die gew nschte Adresse im Browser Fenster ein gegeben und schickt seine Anfrage nun ab Der Browser beginnt nun die tats chli 7Die PersonID ist einfach nur eine eindeutige Zahl die jeder Person zugewiesen wird ver gleichbar mit einer Zeilennummer in einer Tabelle PersonID ist das Prim rschl sselfeld der Pers
58. dung in m glichst vielen Browsern korrekt dargestellt wird In diesem Zusammenhang sei html tidy ein Validierungsprogramm f r html zu empfehlen Mit diesem Hilfsprogramm kann festgestellt werden ob eine html Datei den vom W3 Konsortium 11 empfohle nen Standards entspricht Literatur zu html existiert mittlerweile in un berschaubarem Ma e Ganz be sonders hervorzuheben ist jedoch SelfHTML von Stefan M nz 3 nicht nur weil es kostenlos erh ltlich ist Hier werden neben den Funktionen von html Sty le Sheets JavaScript und XML auch spezielle Hinweise zu h ufigen Fehlerquellen und zur Web Usability gegeben JavaScript Mittels JavaScript lassen sich Vorg nge realisieren die direkt am Client Computer durch die Browsersoftware ausgef hrt werden Da die von Ja vaScript ausgef hrten Befehle keinen direkten Einflu auf die Daten am Ser ver nehmen k nnen eignet sich JavaScript haupts chlich zur Beschleunigung von Aufgaben die ebensogut vom Server ausgef hrt werden k nnten nur eben einen zus tzlichen Neuaufbau der Seite erfordern w rden oder zum Erzeugen von Best tigungs Dialogen jedoch nicht f r echte Datenmanipulationen KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 20 Da JavaScript wie html vom Client ausgef hrt wird mu hier besonders auf Standardkonformit t geachtet werden Zus tzlich sind besondere Testl ufe auf m glichst vielen Softwareversionen m glichst vieler unterschiedlicher Browser notig Zu Ja
59. e nicht gel schten Datens tze auf keiner der n Seiten seiner Beziehungen vorhanden sein und beim Wieder herstellen darf auf keiner der 1 Seiten seiner Beziehungen der Datensatz gel scht sein Anschaulich betrachtet zeigen die schwarzen H lften der Beziehungssymbo le als Pfeil betrachtet in Richtung der L schabh ngigkeit und die wei en H lften weisen in Richtung der Wiederherstellungsabh ngigkeit Wenn beispielsweise eine Etage gel scht werden soll so darf sie ausschlie lich gel schte R ume enthalten Wird eine Etage wiederhergestellt so mu ber pr ft werden ob das Geb ude nicht gel scht ist 89 90 ANHANG B LOSCHABHANGIGKEITEN mei i Sapa ET TT va ap ay EEE CUEROS egen uad suo estuegIo o1oupiooS 931L0yY93uesmins 19QN 91P uojrequurgqsuonesruesu u ueuos1oq eumnoew o3oup1oo8 APIS XE pun 1919 X uouosod eurox Iojun Inu uojreuurqsuonesmuea4 uojrequurqsuonesruesJ ec U9JOYUIJSUO estue Ig uadunzinnumey usd 214 AOYSIPAOMIULIIA uouosJod SWUNZZUS uouos1oq uoddepw ouinoew puonzsioqdepw uoddepyx aunoe y tuod ssn gosuy JULIA e4 Inu uouos1oq pionzsiogdepy oy a ES INTE oa y A osa essanTuos AS Xe pun 33197 X usJIoyurssuonestued 19NSTIOYISUY uojyrequrqsuonegs IO QI9AYIIPNIOMJULIDA eumoew UEZIO SIoq 19P Joururzzjrg oui puonzsieq Sumito ayofoig emanoq arm map uoddepy xey mu usddery dery osson gosuy os ouoSro u
60. e nur den neuen Benutzernamen an zulegen und ihn den bereits definierten Benutzergruppen zuzuordnen Hier sind die einzelnen Schritte der Reihe nach e Loggen Sie sich mit einem Benutzernamen ein der berechtigt ist Benutzer und Benutzergruppen zu erstellen e Offnen Sie das Benutzerformular Einstellungen Privilegien Benutzer e Geben Sie in der ersten Zeile des Formulars einen neuen Benutzernamen und ein Kennwort ein Den Benutzernamen darf es in der untenstehenden Liste noch nicht geben Wahlen Sie kein allzu einfaches PaBwort mit zu mindest drei Zeichen L nge und speichern Sie den Datensatz Sie haben nun einen neuen Benutzer angelegt der kein einziges Privileg besitzt e Wechseln Sie ins Formular Benutzergruppen e Klappen Sie die gew nschte Benutzergruppe auf klicken Sie auf den Pfeil links e Wahlen Sie den neu angelegten Benutzernamen in der Liste aus und klicken Sie auf Hinzuf gen Damit ist der neue Benutzer Mitglied der ge ffneten Benutzergruppe geworden und hat alle ihre Berechtigungen e Ordnen Sie den Benutzer analog den vorigen beiden Schritten noch weiteren Gruppen zu e Mit dem entfernen Link k nnen Sie den Benutzer wieder aus der Gruppe austragen e Wechseln Sie zur ck ins Benutzerformular und ffnen Sie nochmals den neuen Benutzer Sie sehen alle Privilegien die der Benutzer nun hat Kon trollieren Sie mit gr ter Sorgfalt ob die Privilegien korrekt vergeben wur den KAPITEL 4
61. eg neu zuweisen e Um Privilegien wieder zu entziehen verwenden Sie den entsprechenden Link e Wechseln Sie ins Benutzerformular Einstellungen Privilegien Benutzer nachdem Sie Privilegien bearbeitet haben Kontrollieren Sie bei einigen Be nutzern ob diese nur jene Privilegien besitzen die ihnen auch zustehen Wenn Sie sich noch nicht n her mit Privilegien besch ftigt haben sollten Sie die Einf hrung in Privilegien 4 4 lesen 4 5 4 Hinzuf gen eines neuen Institutsangeh rigen Wenn Sie eine neue Person in die Datenbank eintragen gibt es zwei M glichkei ten Die Person ist wirklich neu oder die Person war bereits am Institut und kehrt nun zur ck Zum einen Eingeben einer neuen Person e Loggen Sie sich mit einem Benutzernamen ein der berechtigt ist Personen anzulegen KAPITEL 4 BENUTZERHANDBUCH 77 e ffnen Sie das Personen Suchformular Personen e Klicken Sie unten auf den Link zum Eingeben einer neuen Person Das Stammblatt ffnet sich und alle Felder sind leer Wenn Sie hier nichts ein geben k nnen haben Sie nicht die n tigen Privilegien e F llen Sie das Formular aus Beachten Sie dazu bitte die Hinweise zum Ausf llen 4 3 e Klicken Sie auf Speichern um die neue Person anzulegen e Achten Sie darauf da keine Fehlermeldung angezeigt wird Sie m ssen so lange Werte korrigieren und erg nzen bis keine Fehlermeldung mehr erscheint Erst dann ist die Person wirklich gespeichert e Wechs
62. ehlermeldungen erzeugen Warning Cannot add header information headers already sent by In der angegebenen Datei ist wahrscheinlich am Ende noch eine Leerzeile vorhanden Es darf aber keine Ausgabe erfolgen bevor die Session Klasse den Content Type ausgegeben hat Noch ein kleiner Tip der unter Linux die Arbeit beim Ausbessern in mehreren Dateien sehr erleichtern kann Verwenden Sie grep zum Suchen von Zeichenfol gen in den Quelldateien Beispiel grep sucht nach Zeilen in denen ein Fragezeichen und danach irgendwo ein Doppelpunkt vorkommt Siehe dazu auch die Hilfe Seiten zu grep und regul ren Ausdr cken Quellen Hinweise bei my_form gt add_text_element local inc Literaturverzeichnis 1 2 3 4 5 6 7 TCP IP Tutorial and Technical Overview Muhrhammer Atakan Bretz Pugh Suzuki Wood Online unter http www redbooks ibm com Ich bin so frei MySQL und PostgreSQL im Vergleich J rgen Mischke iX 1 2002 Seite 50 bis 65 Verlag Heinz Heise SelfHTML 8 0 Stefan M nz Online unter http selfhtml teamone de JavaScript Guide client side JavaScript Netscape http developer netscape com docs manuals js client jsguide ClientGuideJS 13 pdf JavaScript Reference client side and server side JavaScript Netscape http developer netscape com docs manuals js client jsref ClientReferenceJS 13 pdf The MySQL Manual MySQL AB Online unter www mysql com documentation PHP H
63. eichert werden sollen KAPITEL 3 ENTWICKLUNGSPROZESS 31 Diese Daten sind funktional vom Raum abh ngig das bedeutet Ist die Raumnum mer gegeben so folgen daraus direkt und eindeutig die L nge und die Breite des Raumes W rde man nun zus tzlich zur Raumnummer auch L nge und Breite als Attribute der Person zuordnen so w re es denkbar da zwei Personen denselben Raum zugeordnet haben jedoch unterschiedliche Gr enangaben vermerkt sind Dadurch w rden sich die Ausma e nicht mehr eindeutig ermitteln lassen Man erzeugt also in diesem Fall eine eigene Entity R ume die alle Attribute der R ume enth lt und die mit den Personen in Beziehung steht P sitzt in R Dadurch werden die Attribute L nge und Breite auch direkt beim Raum abge speichert Diese beiden Attribute w ren in der Personentabelle auch fehl am Platz weil sie thematisch einfach nicht zur Person geh ren Auch in einem zweiten Fall mu ein Attribut in eine eigene Entity umgewandelt werden Das ist genau dann der Fall wenn das Attribut mehrwertig sein m te M chte man beispielsweise zu den Personen Telefonnummern speichern so kann man die Telefonnummer als Attribut zur Person geben Dadurch entsteht jedoch die Beschr nkung da pro Person genau eine Telefonnummer gespeichert werden kann Sollen mehrere Telefonnummern gespeichert werden k nnen so mu eine eigene Entity Telefonnummern erstellt werden die mit den Personen in Bezie hung ste
64. einzelne Datei als fixen Bestandteil integrieren KAPITEL 3 ENTWICKLUNGSPROZESS 45 k nnen Dabei m te jedoch die Konsistenz w hrend der Erweiterung der Appli kation st ndig durch Anpassungen in allen Dateien wiederhergestellt werden Um diesen Aufwand zu vermeiden wurde ein vollautomatisches System entwickelt um die Navigationselemente zu erzeugen dabei ist die Site Klasse entstanden Die Site Klasse beinhaltet jene Bestandteile die auf allen Formularen zu fin den sind Sie gibt die Seitenaufteilung vor und erstellt die Navigationselemente automatisch Da alle Formulare der Applikation durch Klassen erstellt werden die von Site abgeleitet sind und nur jene Methoden berschrieben werden die den eigentlichen Seiteninhalt sowie die Seiten berschrift ausgeben ist die Konsi stenz der Seiten automatisch und wartungsfrei sichergestellt In Abbildung 3 4 ist das vorgegebene Seitenlayout mit den Methoden zur Er stellung der jeweiligen Inhalte dargestellt Links wird eine Baumansicht der ge samten Applikation erzeugt im rechten Bereich oben und unten eine Liste mit Tabreitern zur Navigation auf der aktuellen Ebene Der schraffierte mittlere Be reich steht f r den eigentlichen Inhalt und die Seiten berschrift zur Verf gung der Rahmen wird durch eine html Tabelle realisiert die ohne Angabe fixer L ngen vom Browser passend vergr ert werden kann Am Ende der Seite gibt footer Statusinformationen aus die sich zur Fehlersuche
65. elche Kriterien Datens tze Zeilen der Tabellen erf llen m ssen damit sie angezeigt werden Eine Frage w re beispielsweise Zeige mir aus der Personen Tabelle die Spalten Vorname Nachname und Ort von jenen Datens tzen bei denen der Geburtstag im M rz liegt Sie K nnen selbst Abfragen er stellen benutzen Sie dazu das Suchabfragenformular in der Sparte Service Benutzername Der Name mit dem Sie sich ausweisen wenn Sie die Da tenbank ben tzen Anhand Ihres Benutzernamens wird ent schieden welche Rechte Privilegien sie besitzen welche Aktionen Sie also ausf hren d rfen Browser Programm mit dem Sie Internetseiten ffnen Sehr weit verbreitet sind Netscape Navigator und Internet Explorer Datenbank Eine Datenbank ist eine Sammlung von Daten die alle an ein Datenbankschema angepa t sind Das bedeutet da wie auf einem Antragsformular nur ganz bestimmte und zuvor festgelegte Aspekte behandelt werden Eine Daten bank besteht aus Tabellen und diese wiederum aus einzel nen Datens tzen Datensatz Zeile in einer Tabelle Jeder Datensatz ist eine eigenst ndige Einheit und bezieht sich meistens auf etwas ganz konkretes wor ber Daten gespeichert werden sollen ein Raum eine Telefonklappe ein Projekt oder eine Person KAPITEL 4 BENUTZERHANDBUCH Feld Formular Ein einzelner Wert zumeist ein Text oder eine Zahl Jeder Datensatz besteht aus Feldern wie sie auch auf einer
66. ellungsprozedur angewandt Dabei wird zuerst ber pr ft ob die notwendigen Abh ngigkeiten erf llt sind siehe Anhang B Wenn durch das L schen eine Anomalie erzeugt w rde wird statt dessen eine Fehler meldung mit der Liste der st renden Datens tze angezeigt Wenn alle Abh ngig keiten erf llt sind wird tats chlich gel scht bzw wiederhergestellt Datens tze werden gel scht indem das aktuelle Datum in das Attribut del eingetragen wird Beim Wiederherstellen wird das L schdatum mit dem Wert 0 berschrieben Bevor anschlie end eventuell ge nderte Daten in die Datenbank bernommen werden m ssen zuerst die Steuerelemente initialisiert werden um die Daten vali dieren zu k nnen Das stellt beim Einzelformular kein Problem dar die Steuer elemente m ssen in jedem Fall initialisiert werden Bei Endlosformularen jedoch m ssen die Steuerelemente f r jedes einzelne Formular in der sp ter folgenden Schleife und hier am Beginn erzeugt werden Deshalb wird bei Endlosformu laren die Erstellung der Steuerelemente in eine neue Methode prepare_form ausgelagert Wenn die Validierung nicht erfolgreich abgeschlossen werden kann retourniert die Methode form gt validate alle gefundenen Fehlermeldungen als Zeichenkette Einzelformulare geben diese Fehlermeldung sofort aus Endlos formulare geben die Meldung innerhalb der Schleife erst bei dem betreffenden Formular aus Wenn die Validierung bestanden wurde so werden je nac
67. eln Sie ins Formular der privaten Daten und geben Sie die Stammda ten der Person ein Vergessen Sie nicht auf Speichern zu klicken wenn Sie fertig sind e Sie k nnen nun Privattelefonnummern E Mail Adressen Schl ssel und Te lefonklappen zuordnen e z B E Mail Adresse Wechseln Sie ins Formular Privatnummern Geben Sie im Feld Anschlu die E Mail Adresse ein Das Feld Text k nnen Sie leer lassen W hlen Sie in der Auswahlliste den Anschlu Typ E Mail aus und klicken Sie das H kchen an wenn die Adresse haupts chlich privat genutzt wird Klicken Sie auf Neu anlegen und korrigieren Sie die Daten wenn eine Fehlermeldung angezeigt wird e Zum Anlegen von T tigkeiten lesen Sie bitte im Kapitel Personen T tig keiten Projekte 4 5 5 weiter Zum anderen Wiedereintritt einer Person Wiederherstellen Dieser Fall ist deutlich einfacher da die Daten bereits gespeichert sind e Loggen Sie sich mit einem Benutzernamen ein der berechtigt ist Personen zu l schen e ffnen Sie das Formular Einstellungen und aktivieren Sie da Sie gel schte Datens tze sehen m chten e ffnen Sie das Personen Suchformular Personen KAPITEL 4 BENUTZERHANDBUCH 78 e Geben Sie einen Teil des Namens im Suchfeld ein und klicken Sie auf Su chen e Bl ttern Sie in der untenstehenden Liste und klicken Sie auf den Namen wenn Sie ihn gefunden haben e Sie werden auf die Karteikarte weitergeleit
68. en Datenbank Benutzers 4 5 2 Erstellen von Feldgruppen 4 5 3 Vergeben von Privilegien 4 5 4 Hinzuf gen eines neuen Institutsangeh rigen 4 5 5 Personen T tigkeiten Projekte 4 5 6 Austritt eines Institutsangeh rigen 4 5 7 Anlegen eines neuen Raumes 4 5 8 Eine Suchabfrage formulieren 4 6 L schen und Wiederherstellen AT Sicherheit Ze AE 4 AA ae ee 4 8 Anwender Gl ss r u zou u Da Du Dark HR TE A Abk rzungen und Begriffe B L schabh ngigkeiten C Typische Fehlerquellen 70 71 72 73 74 75 76 76 78 80 80 81 82 83 84 87 89 92 Kapitel 1 Einleitung Um die Institutsverwaltung zu vereinfachen und zu vereinheitlichen soll ein Datenbanksystem entworfen werden das die Datenhaltung f r m glichst vie le Bereiche integriert Die gew nschten Anwendungsm glichkeiten sind dabei so vielf ltig da eigentlich bereits von einer Verwaltungssoftware gesprochen werden kann Wenn auch das Ziel einer Komplettl sung nicht erreicht werden kann so soll doch ein m glichst umfassender Themenbereich erfa t werden Am Institut wurden bereits Erfahrungen mit einer einfacheren Verwaltungs datenbank gemacht die sich jedoch aus verschiedenen Gr nden nicht bew hrt hatte Zum einen war die Funktionalit t nicht ausreichend umfassend es mu ten also verschiedene uneinheitliche Werk
69. ent als Auffangbeh lter f r Funktionen die aus den Formulardatei en ausgelagert wurden um die Quelltexte zu verkiirzen und die Ubersichtlichkeit zu verbessern Deshalb besitzt Institut form keinen besonders strukturierten Aufbau es ist viel mehr als Methodensammlung zu verstehen Mit Hilfe von Institut form k nnen Einzel und Endlosformulare mit ge ringem Programmieraufwand realisiert werden Endlosformulare sind Seiten die mehrere Formulare untereinander enthalten Diese Art der Darstellung wird un ter anderem von den Seiten zur Vergabe der Privilegien verwendet sie ist jedoch nur dann sinnvoll einzusetzen wenn die Anzahl angezeigter Formulare sowie die Anzahl von Steuerelementen pro Formular nicht zu grof ist Es sind im Laufe der Zeit noch weitere Methoden hinzugef gt worden die nicht nur im Zusammenhang mit Endlosformularen sinnvoll einzusetzen sind die Klasse kann also auch in allen anderen Formularen eingesetzt werden Die Methoden von Institut form sind relativ kurz gehalten und durchwegs dokumentiert Hier soll daher nur auf die Zusammenh nge sowie auf m gliche Anwendungsf lle der wichtigsten Methoden eingegangen werden Institut form Dem Konstruktor kann optional eine Abfrage zur Auswahl der Daten bergeben werden Bei Verwendung mit Endlosformularen wird die Methode init verwendet um die Anzahl der Datens tze zu ermit KAPITEL 3 ENTWICKLUNGSPROZESS 49 teln und die Abfrage selbst ndig auszufiihren Die Anzahl
70. er passenden L sung suchen zu k nnen Das zwei te Kapitel endet mit einem kurzen Einblick in die gew hlte Systemumgebung der zeigen soll welch komplexe Vorg nge n tig sind um einen Datenbankzugriff ber das Internet vornehmen zu k nnen Nachdem dann die Umgebung bekannt ist soll der eingeschlagene Entwick lungsweg dargestellt werden Dazu bietet das dritte Kapitel Gelegenheit Zuerst wird als Basis das Datenbankmodell erstellt um anschlie end darauf aufbauend die gesamte Anwendung zu errichten Dieser Teil spaltet sich noch in Teilberei che auf die beim Entwurf derart komplexer Software ben tigt werden Das dritte Kapitel endet mit einer Zusammenfassung dar ber welche der gesteckten Ziele erreicht wurden und was in weiteren Arbeitsschritten noch zu tun bleibt Das vierte Kapitel beinhaltet schlie lich das Benutzerhandbuch f r die ent standene Software Obwohl weitgehend versucht wurde die Software selbster kl rend zu gestalten ist es doch im Sinne der Benutzer Orientierung n tig ein Nachschlagewerk beizuf gen das einerseits bei den ersten Schritten behilflich ist und andererseits auch den erfahrenen Benutzern noch Hilfestellungen f r effizi entes Arbeiten geben kann Kapitel 2 Problemstellung und Losungsansatz In diesem Kapitel soll zuerst einmal ausformuliert werden unter welchen Rah menbedingungen die Entwicklung durchzufiihren ist und welche Anforderungen gestellt werden Ausgestattet mit diesen Angaben wird ans
71. erlangt au erdem eine Realisierung mittels einer relationalen Datenbank wobei Transaktionen Anein anderreihung von Teil Vorg ngen die im Fehlerfall vollst ndig zur ckgenommen werden kann nicht ben tigt werden Des weiteren Kann auf die Forderung nach ausgefeilten SQL Konstrukten verzichtet werden um eine m glichst hohe Verar beitungsgeschwindigkeit zu erzielen In die engere Auswahl kommen die freien Datenbanken MySQL und Post greSQL sowie die kommerziellen Oracle und Microsoft Access Access w re im Prinzip als Backend Datenbank geeignet scheidet jedoch auf grund mangelnder Leistungsf higkeit und der Bindung an Windows als Betriebs system aus Oracle erscheint aufgrund der zahlreichen Features zu schwerf llig f r die zu verwendende Serverhardware und aufgrund der immensen Lizenzgeb hren f r nicht geeignet PostgreSQL ist im Vergleich zu MySQL f r komplexere Ab fragen geeignet in MySQL m ssen daf r einfachere Konstrukte mehrfach kombi niert werden Da sich die ben tigte Komplexit t in Grenzen h lt und gro er Wert auf eine ausf hrliche Dokumentation und weite Verbreitung gelegt wird wird My SQL als Datenbankserver gew hlt 2 2 3 Eigenschaften von LAMP Die Beschreibung von Linux Apache MySQL und PHP w rde einige B cher f llen Daher soll hier nur auf ausgew hlte Aspekte eingegangen werden die be sondere Auswirkungen auf die Programmierung von Internet Applikationen ha ben Eine wesentliche Eigenschaft
72. erst tzen Orientierungshilfen bieten aber auch Eingabefehler erkennen und die n tige Arbeitsdisziplin einfor dern indem sie etwa verlangt da alle notwendigen Felder korrekt ausgef llt wer den Da die Umstellung der Administrationssoftware in jedem Falle enorme An strengungen erfordert mu besonderer Wert auf eine dauerhafte L sung gelegt werden Insbesondere darf die L sung nicht auf eine ganz bestimmte Softwarever sion angewiesen sein da dies eine Abh ngigkeit vom Softwarehersteller bedeuten w rde Daher werden durchwegs offengelegte Standards und freie im Sinne von freie Entwicklung Software verwendet Als Ergebnis der Arbeit ist eine Web basierte Datenbankanwendung entstan den die fast vollst ndig plattformunabh ngig ist Am Server wird die Scriptspra che PHP eingesetzt die seit Version 4 das objektorientierte Programmieren be sonders unterst tzt und f rdert Das Kernst ck der Arbeit bestand im Aufbau von Klassen die die Erstellung von Internetseiten mehr und mehr abstrahieren und in tiefer liegende Softwareschichten verlagern Dadurch bleibt dem Programmierer die Sicht frei auf die eigentliche Anwendung er mu sich nicht mehr direkt mit html Programmierung auseinander setzen Erst durch die konsequente Wiederver wendung von verallgemeinerten Programmteilen und systematische Einteilung in Klassen wird es berhaupt m glich solch eine umfangreiche und komplexe Ver waltungssoftware ins Web zu bringen Summ
73. es nur genormte Konstrukte akzeptiert Da MySQL auch auf lange Sicht f r diese Anwendung optimal erscheint wurde die ANSI Konformit t nicht getestet Als Literatur zu MySQL ist ebenfalls das originale Handbuch sehr zu empfeh len 6 Es enth lt neben der Sprachreferenz ein sehr lebendig gestaltetes SQL Tutorial das den Leser anhand von Beispielen in SQL einf hrt Usability Die Benutzerorientierung hat in diesem Projekt eine besonders ho he Priorit t Deshalb soll an dieser Stelle auch ein Handbuch zur Web Usability erw hnt werden 10 das neben den Prinzipien der Usability auch ausf hrlich KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 21 Design Regeln fiir gut geeignete Web Pr senzen behandelt Anhand vieler Bei spiele wird auch auf Fehler bekannter Webseiten eingegangen 2 3 2 Fallstudie Ablauf einer http Session Hier soll demonstriert werden da der Abruf einer Webseite mit Datenbankan bindung zwar aus einer betr chtlichen Anzahl von Einzelschritten aufgebaut ist diese Schritte sind jedoch jeder f r sich genommen leicht zu verstehen Der dargestellte Ablauf ist das Ergebnis konsequenter Modularisierung und Zerlegung von komplexen Aufgaben in kleinere leichter l sbare Teil Aufgaben Erst durch die Modularisierung wird es m glich hochkomplexe Systeme aufzubauen die schlie lich auf einer sehr hohen Abstraktionsebene miteinander kommunizieren Das Ergebnis ist eine Aneinanderkettung solch einfacher Teil Vorg nge
74. eses Prinzip wurde bei allen Seiten umgesetzt um die Suche nach Datens tzen zu erleichtern Beachten Sie auch da Sie immer nur jene Verweise im Navigationsbereich links sehen die Sie aufgrund Ihrer Berechtigungen auch ffnen d rfen Es ist also normal da nach dem Einloggen zus tzliche Links erscheinen 4 2 3 Ausloggen Nachdem Sie die Arbeit mit der Datenbank beendet haben verwenden Sie bitte den logout Link um sich abzumelden Danach k nnen Sie ohne Bedenken das Internetbrowserfenster schlie en oder es weiterverwenden um eine andere Inter netseite zu ffnen 4 2 4 Arbeiten mit Formularen Wenn Sie einen bestimmten Datensatz ge ffnet haben bekommen Sie den aktu ellen Stand der Daten angezeigt Sie k nnen nun diese Daten erg nzen oder korri gieren Klicken Sie einfach in das gew nschte Feld und geben Sie neue Werte ein Sie k nnen auch mit der Maus ziehen linke Taste dr cken w hrend der Pfeil ber dem Text steht und gedr ckt halten w hrend Sie die Maus bewegen um Text zu markieren Markierter Text wird automatisch ersetzt wenn Sie anschlie end neue Zeichen eingeben Verwenden Sie die Auswahllisten um Beziehungen zu anderen Datens tzen herzustellen also zum Beispiel das Sitzzimmer auszuw hlen Beachten Sie da Sie verkn pfte Datens tze vielleicht zuerst eingeben m ssen bevor Sie sie in der Auswahlliste anw hlen k nnen wenn es also das Zimmer noch nicht gibt Um die Suche in langen Listen zu
75. essionelle Entwicklungsumgebung die auch f r gr ere Projekte geeignet sein d rfte Der Einarbeitungsaufwand d rfte jedoch f r das vorliegende Projekt nebst den Anforderungen die an die Serverhardware gestellt werden zu gro sein ASP ist das Microsoft Gegenst ck zur CGI Schnittstelle und bietet Un terst tzung f r verschiedene Sprachen zumeist wird VBScript oder JavaScript verwendet Diese Sprachen f rdern jedoch nicht das elegante Programmieren und geh ren au erdem in die Windows Welt von IIS PHP ist mit seiner C hnlichen Syntax und seiner vereinfachten Zeichenket tenverarbeitung wie in Pascal oder Java in PHP mu sich der Programmierer nicht um Zeiger oder Reservierung von Speicher k mmern sehr leicht zu erler nen und gleichzeitig einfach anzuwenden da die meisten Sprachkonstrukte ohne Nebenbedingungen funktionieren Weiters bietet die Sprache Objektorientierung und eine gro e Anzahl eingebauter Funktionen und APIs zu verschiedensten an deren Programmen So bleibt als Hauptkonkurrent zu PHP nur noch Perl das als Zeichenketten verarbeitungssprache begonnen hat und ebenfalls sehr erfolgreich am Markt ist Da jedoch PHP leichter erlernbar ist und das Schreiben gut lesbarer Programme mehr f rdert als Perl wird PHP der Vorzug gegeben KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 17 Datenbank Um standardkonform zu sein mu jedenfalls eine SQL Datenbank verwendet werden Die Natur der zu speichernden Daten v
76. et unten wird angezeigt wann die Person gel scht wurde e Klicken Sie auf Wiederherstellen Wenn das Wiederherstellen nicht ge lingt stellen ordnen Sie zuerst der gel schten Person eine andere nicht gel schte Abteilung Sitzzimmer und Faxklappe zu speichern Sie und ver suchen Sie es erneut e Kontrollieren Sie in allen Formularen ob die eingegebenen Informationen noch korrekt sind e Zum Anlegen von Tatigkeiten lesen Sie bitte im Kapitel Personen Tatig keiten Projekte 4 5 5 weiter 4 5 5 Personen T tigkeiten Projekte Personen tiben T tigkeiten aus zum Beispiel k nnte eine Person gleichzeitig Di plomand und Lehrbeauftragter sein Personen nehmen auch an Projekten teil Hier mu nun aber unterschieden werden Wenn der Diplomand X an einem Projekt teilnimmt bekommt er keine Bezahlung derselbe X wird aber sehr wohl ent lohnt wenn er in seiner Funktion als Angestellter an demselben Projekt mitar beitet Deshalb nimmt in der Institutsdatenbank sozusagen nicht eine Person an einem Projekt teil sondern eine spezielle T tigkeit einer Person Um f r eine Person eine T tigkeit einzugeben mu die Person bereits in der Datenbank vorhanden sein Wenn das nicht der Fall ist lesen Sie bitte im Kapitel Eingeben von Institutsangeh rigen 4 5 4 weiter Wenn die Person also bereits eingegeben ist beachten Sie folgende Schritte um eine T tigkeit anzulegen e Loggen Sie sich mit einem Benutzerna
77. et der mys 3fork erzeugt einen absolut identischen geklonten Proze Um diesen aufwendigen Vorgang zu beschleunigen wird die angek ndigte Version 2 0 des Apache Webservers Multithreading un terst tzen KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 25 qld eine Identifikation f r die Session handle an den Client den Web Server Proze zur ck 9 Dieser bermittelt anschlie end seine SQL Abfrage 10 Der mysqld berpr ft die Abfrage auf Fehler und f hrt sie aus wenn sie syntaktisch richtig ist Nach erfolgreicher Ausf hrung der Abfrage h lt der Datenbankserver Proze die Ergebnisdaten bereit zur Abholung durch den Cli ent sie werden jedoch noch nicht bertragen Der Client bekommt vorerst nur eine Statusmeldung 11 die das Vorhandensein der Daten anzeigt Anschlie end kann der Client selbst entscheiden wann er die Ergebnisse abholen m chte Mit jedem Aufruf von next_record 12 bekommt der Client eine Zeile aus der Ergebnismenge retourniert 13 bis keine Daten mehr anstehen In diesem einfa chen Beispiel existiert nur eine einzige Zeile in der Praxis wird aber meist eine Schleifenstruktur verwendet um alle Daten abzufragen Am Ende des PHP Programms wird die Ausgabe gestaltet Mit dem Befehl echo wird zuerst der Kopf der html Seite ausgegeben Anschlie end werden Vor und Nachname aus der Datenbankabfrage eingef gt und am Ende der html Text mit den schlie enden Tags vervollst ndigt Damit ist die zwe
78. f llen sein werden Um die Abstraktion noch weiter zu erh hen und damit die Programme wei ter zu verk rzen w re zu erw gen ob eine noch st rkere Automatisierung zweckm ig w re Mit Hilfe weiterer bergeordneter Klassen k nnte eine noch k rzere Formulierung der Programme erreicht werden wenn Meta Information ber die Tabellenstruktur den Klassen zug nglich w re Als Ziel w re anzustre ben da zur Definition eines Formulars nur noch die gew nschten Felder ange ordnet werden m ssen Alle weiteren Aktionen K nnten wie auch in Access au tomatisch ausgef hrt werden Vor der Entwicklung solch einer Erweiterung mu jedoch berpr ft werden ob sie auch f r andere Datenbankapplikationen brauch bar w re Kapitel 4 Benutzerhandbuch Willkommen in der neuen Institutsdatenbank Ich m chte Ihnen das neue Verwaltungsprogramm vorstellen und Ihnen er kl ren was es alles kann und wie man es verwendet Falls Sie noch nicht so h ufig mit Anwendungen im Internet gearbeitet haben darf ich Ihnen das Kapitel Erste Schritte 4 2 und das Anwender Glossar 4 8 sehr empfehlen AnschlieBend wird Sie vielleicht das Kapitel tiber typische Anwen dungsf lle 4 5 interessieren Es zeigt wie man die Datenbank sinnvoll verwenden kann um bliche Aufgaben zu meistern Wenn Sie w hrend der Arbeit Tips zu einem bestimmten Formular suchen verwenden Sie einfach den Hilfe Link den Sie auf jeder Seite links im Navigati onsberei
79. ge nommen um die angegebene SELECT Abfrage auszuf hren und das Array von Optionswerten f r die add_element Methode zu erstellen add_optionlist ist eine sehr kompakte Methode und erf llt eine h ufig verwendete Funktion show_element_tab dient schlie lich der Ausgabe der Steuerelemente in tabel KAPITEL 3 ENTWICKLUNGSPROZESS 43 larisch angeordneten Formularen Sie tiberpriift die n tigen Berechtigungen und gibt das Steuerelement mit der zugeh rigen Beschriftung aus Eigene Klassen Zur Automatisierung wiederkehrender Aufgaben wurde die Klasse Institut_form erstellt Sie kapselt verallgemeinerte Programmsegmen te die aus den Formulardateien ausgelagert wurden Institut_form enth lt Me thoden zur Erstellung von Auswahllisten und Befehlsschaltfl chen sowie zum Ausf hren der Abfragen Mit Hilfe der Attribute Klasse werden den Formularen anw hlbare Felder Checkboxen hinzugef gt deren Beschriftung f r jedes Formular frei gew hlt werden kann Diese Funktion verbessert die Erweiterbarkeit erheblich weil pro Tabelle bis zu 31 verschiedene Ja Nein Werte gespeichert werden k nnen deren Bedeutung erst w hrend der Anwendung der Applikation festgelegt wird Durch die Verkapselung der ben tigten Funktionen in die Attribute Klasse beschr nkt sich der Mehraufwand auf etwa f nf zus tzliche Zeilen Quellcode pro Formular Programmablauf Um die Interaktion der verschiedenen Klassen und die in volvierten Dateien deutlich zu
80. h tigt bleiben Einzel und Endlosformulare haben viele Gemeinsamkeiten im Aufbau Des halb wird der Programmablauf hier f r beide Arten gemeinsam beschrieben und auf die Unterschiede explizit hingewiesen Am Beginn von inhalt wird berpr ft ob der Benutzer die n tigen Pri vilegien besitzt um dieses Formular ffnen zu d rfen Benutzer ohne Leserecht bekommen nur eine Fehlermeldung pr sentiert Anschlie end werden die ben tigten Klassen instantiiert Datenbankzugriffs variablen werden m glichst f r die gesamte Laufzeit der Methode weiterverwen det da bei manchen Datenbankservern allerdings nicht bei MySQL der Verbin dungsaufbau besonders lange dauert und daher sparsam mit Datenbankverbin In der ersten Zeile steht Bitte w hlen in der zweiten Zeile steht der voreingestellte Wert falls die Liste zur Auswahl eines Attributes etwa einer verantwortlichen Person verwendet wird KAPITEL 3 ENTWICKLUNGSPROZESS 52 dungen umgegangen werden sollte Deshalb werden auch m glichst Referenzen auf eine bestehende Datenbankinstanz als Parameter an Hilfsfunktionen berge ben anstatt in den Funktionen neue Instanzen zu erstellen In den Formularen wird die Instanz db immer als jene Instanz initialisiert die die anzuzeigenden Daten enth lt F r weitere Abfragen werden Instanzen db1 db2 usw verwendet Da die Steuerelemente zum L schen nicht initialisiert sein m ssen wird zuerst die L sch und Wiederherst
81. h gedr ckter Schalt fl che ein INSERT oder ein UPDATE Statement zusammengestellt und aus gef hrt falls die n tigen Erstellungs bzw Schreibrechte existieren Nun werden die Steuerelemente ausgegeben Bei Einzelformularen kann dies direkt passieren bei Endlosformularen m ssen alle vorhandenen Datens tze in einer Schleife durchlaufen und f r jeden Datensatz ein eigenes Formular erzeugt werden F r die Ausgabe wird meist eine tabellarische Form gew hlt damit die Steuerelemente trotz unterschiedlich langer Beschriftungen stets untereinander stehen Bei manchen Formularen werden am Ende die verkn pften Datens tze in Li stenfeldern angezeigt z B bei den R umen die Klappen und die Personen die diesem Raum benutzen um die bersicht zu verbessern KAPITEL 3 ENTWICKLUNGSPROZESS 53 Such Formular In der bisher verwendeten Datenbank war es den Benutzern m glich selbst Abfra gen zu erstellen um Datens tze aufgrund von Bedingungen auszufiltern mit an deren Datens tzen zu verkniipfen und die Ergebnisse nach ausgew hlten Feldern zu sortieren In Microsoft Access werden jedoch alle Abfragen in einem gemein samen Namensraum gespeichert Dadurch werden die Abfragen aller Benutzer miteinander vermengt was dazu f hrt da Abfragen nicht mehr wiedergefunden und deshalb mehrmals neu erstellt werden Daher sind die Ziele fiir das neu zu erstellende Such Formular auf Benut zerfreundlichkeit und Schaffung eigener Namensr ume fiir
82. h jedoch sehr bew hrt Quanta bietet eine integrierte Hilfe f r html php und JavaScript und kann mehrere Dateien parallel ge ffnet halten Der gr te Vorteil ist jedoch die Syntaxhervorhebung Da auch Zeichenketten an dersfarbig darstellt werden ist es besonders einfach fehlende Anf hrungszeichen oder hnliche Tippfehler auf einen Blick zu erkennen Objektorientierung php Die ben tigte Modularisierung l t sich besonders komfortabel und anschaulich durch Objektorientierung erreichen Gl cklicher weise unterst tzt und f rdert php seit Version 4 das Objektorientierte Program mieren phplib Teile der ben tigten Funktionalit t beruhen nicht auf v llig neuen An forderungen die noch kein Projekt zuvor zu erf llen hatte PHPLib ist eine Samm lung von Klassen die Basisfunktionalit t f r verschiedene Bereiche der Webpro grammierung bereitstellen Besonders hervorzuheben ist hier die Form Klasse Sie beinhaltet die Erstellung von form Tags in html und bernimmt auch die Plau sibilit tspr fung der eingegebenen Daten Erst die Erweiterung dieser Klasse ent sprechend den Bed rfnissen hat die Programmierung auf dem ben tigten hohen Niveau erm glicht gd ist eine Bibliothek mit der man Bilder zur Laufzeit erstellen und bearbeiten kann Die GD Bibliothek l t sich besonders effizient zum Erstellen von graphi schen Schaltfl chen verwenden Da die Schaltfl che bei jedem Aufruf automa tisch neu erstellt wird ist der Auf
83. ht siehe Tabelle 3 1 Auf diese Weise kann eine Person beliebig viele also gar keine eine zwei Telefonnummern haben Es darf keinesfalls zuge lassen werden da mehrere Telefonnummern in ein Feld eingetragen werden Da durch entstehen katastrophale Nebeneffekte Die Felder k nnen nicht mehr sinn voll f r eine listenartige Ausgabe verwendet werden und die eingegebenen Daten k nnen nicht wieder voneinander getrennt werden Auch das Vorsehen von meh reren Attributen Telefon1 Telefon2 Telefon3 ist keine L sung da einerseits Speicherplatz verschwendet wird und andererseits trotzdem eine Person vier Te lefonnummern besitzen kann Ein weiterer Aspekt zur Festlegung der Attribute ist Atomizit t Dabei ist zu beachten daf das Zusammenf gen von Daten durch Verkettung von Strings be sonders einfach zu bewerkstelligen das Aufspalten von Daten in Unterabschnitte in der Praxis jedoch kaum m glich ist Als Beispiel sei hier der Name von Per sonen aufgef hrt W rde man nur ein Feld f r den gesamten Namen samt Titel vorsehen so ware die Schreibweise die Reihenfolge von Anrede Titel Vor und Die Verwendung speziell vereinbarter Trennzeichen f r solche Zwecke ist keine L sung weil sie ein inakzeptabel hohes Maf an Disziplin bei der Dateneingabe verlangt KAPITEL 3 ENTWICKLUNGSPROZESS 32 Personen Personen Telefonnummern gt Tabelle 3 1 Ausgliederung der Telefonnummern Nachname nicht vorgegeben und w r
84. ie Hierarchie zu berpr fen und die Angeh rigen jeder Abteilung aufzulisten Das Programm zur Erstellung des Organigramms erzeugt zun chst aus der Tabelle der Organisationseinheiten eine Baumstruktur im Speicher Darin sind die obersten Wurzel Einheiten und alle untergeordneten Organisationseinhei ten vermerkt Dieser Baum mu nun in eine Tabelle bersetzt werden damit er als html Seite ausgegeben werden kann html Tabellen sind vergleichbar mit Matrizen und m ssen zeilenweise an den Browser ausgegeben werden Da Baumstrukturen am besten Astweise rekursiv durchlaufen werden k nnen wird zun chst in einem eigenen Durchlauf der Baum Astweise durchwandert und in ein zweidimensionales Array eine Matrix umko piert Dieser Zwischenschritt erweist sich als sehr hilfreich da in Arrays wahlfrei geschrieben werden kann KAPITEL 3 ENTWICKLUNGSPROZESS 56 Die erzeugte Matrix wird anschlie end zeilenweise in html Tabellenelemente bersetzt und so an den Browser ausgegeben Abh ngig von den Einstellungen im Formular werden zu jeder Organisationseinheit alle bzw nur die internen An geh rigen mit ausgegeben Browser spezifische Funktionen Abseits der Kernfunktionalit t der Webapplikation sind noch weitere Funktionen zu implementieren um auf Eigenheiten bestimmter Browser einzugehen Schutz gegen unbeabsichtigten Formular Submit Formulare d rfen nur genau ein einziges Mal abgeschickt werden k nnen und zwar erst dann wenn
85. iker Hubert Partl Irene Hyna und Elisabeth Schlegl erh ltlich Online bei CTAN http www ctan org mod ssl User Manual Ralf S Engelschall Online unter http www modssl org oder als Teil der Apache Dokumentation unter usr share doc packages apache manual mod mod_ssl index html
86. ingt vor unbefugtem Lesezugriff gesch tzt werden Weiters darf auch ein Schreibzugriff nur bestimmten von der Institutsleitung zu bestimmenden Benutzern gestattet werden Dar ber hinaus hat jeder Benutzer seinen speziellen Aufgabenbereich der sich von anderen Bereichen stark ab grenzt Beispielsweise sollen Benutzer auf ausgew hlte Daten Schreibzugriffs rechte bekommen gleichzeitig aber andere Datenbereiche nicht einmal lesen d rfen Als Konsequenz aus diesen Anforderungen mu ein Privilegiensystem reali siert werden das es erm glicht jedem Benutzer explizit Berechtigungen f r be stimmte Bereiche der Datenbank zu gew hren Es mu dabei bis auf die Feld Ebene herunter also f r jede einzelne Spalte einer Tabelle m glich sein Privile gien f r bestimmte Benutzer zu vergeben Trotz dieses hohen Detaillierungsgrades mu jedoch eine einfache Admini strierbarkeit f r das Privilegiensystem gew hrleistet sein Da meist mehrere Be nutzer gleichartige Berechtigungsprofile zugesprochen bekommen wird eine Ein teilung in Gruppen zweckm ig sein Diese Einteilung mu aber flexibel sein d h jeder Benutzer mu in mehreren Gruppen Mitglied sein k nnen und es mu je weils das st rkste Recht aus allen Gruppen zur Bewertung herangezogen werden Aus Gr nden der Transparenz ist es n tig die tats chlichen Berechtigungen eines Benutzers ermitteln zu K nnen um die eingestellten Gruppenzugeh rigkeiten auf KAPITEL 2 PROBLEMSTELLU
87. ite Phase abgeschlossen Das PHP Programm ist beendet die Verbindung zum Datenbankserver implizit geschlossen worden und die gesuchte html Seite steht zur Verf gung und kann an den Browser geschickt werden Nun startet die letzte Phase Die bertragung der html Seite zum Browser und der Abbau der Verbindung In dieser Phase sind die Rollen wieder wie zu Beginn Der Browser ist Client und der httpd ist Server Abb 2 4 Die letzte Aktion des httpd vor seiner Beendigung ist die bertragung der html Seite 14 Das bertragene Paket enth lt den Statuscode 200 OK das Ablaufdatum der Daten Anweisungen zum Cachen der Daten und nat rlich im Body des Pakets die html Seite Nun muf nur noch die TCP Session abgebaut werden Dazu setzt der httpd ein FIN ACK Paket 15 finish acknowledged ab um das Ende seiner Da ten bertragung anzuzeigen Der Browser best tigt dieses Paket mit ACK 16 und beendet seinen Kanal auf die gleiche Art 17 Nach der Best tigung des Ser vers 18 ist die TCP Session abgebaut und die Ressourcen stehen wieder zur Verf gung Nun kann der Browser den empfangenen html Text untersuchen W rde er Re ferenzen auf Bilder lt img src gt enthalten m te der Browser jetzt noch alle Bilder anfordern Dazu w rde er parallel mehrere TCP Sessions nach dem selben Muster wie f r die html Seite ffnen und die Bilder abrufen Das ist die KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 26 http
88. licht Sie hat aber auch f r die Korrektheit und Konsistenz der Daten zu sorgen indem etwa Anomalien erkannt und verhindert werden oder offensichtlich falsch eingegebene Daten zur ckgewie sen werden Die Software mu also geben damit sie von den Nutzern akzeptiert wird und nehmen damit der Datenbestand stets aktuelle vollst ndige und kon sistente Daten enth lt Hilfestellung Grunds tzlich soll die Software m glichst selbsterkl rend gestal tet werden damit der Benutzer m glichst ohne weitere Hilfestellungen auskommt Damit aber auch weniger ge bte Benutzer leichter den Einstieg in die neue Soft KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 11 OINN esodssnyyosuy ay sage erh dA suonestueSio OOCL Op unggung ouleNSNG URI PeH VOIMAL AINSI unje parumgouor osn exse Aziouqng essepprougoos VINHHOS INVANALVASLO LLLSNI umje op ouror 3x ISSIIPV AI IN EJUSAUL uod AT suonesruesJ umnje pep eurer esn d 4 uose nZ 3X ueSe n7Z osn uasso gt TUYDI SE PV dl vc to De NOYUISUONESIULIO yeyoy osn VdI 4 A Vo Sunuyorozoqziny yonqreds71x1 Ulo xo Lo qonq1edg osn Zunypuuy zue 1X Pra vuam osn wimeqisiuyousn Katz sseuisny 1x umje op eurer INOJUONY 19Up109319 UN FO IST CHO sseuisny osn Sunxiouruy CA ININ dA s3uniopunjoy 1x ueyoq a INAS d s3unorpunjoy osn uoSe nz v umgepsimnqor ojsrquojo o ZJRSIQUASON IX mua Kl uO Sunzinyuuney ZESIAUSISON oen qo
89. lle Steuerelemente der Reihe nach ausgegeben werden Um in Endlosformularen die bersichtlichkeit zu verbessern kann die Methode an die Ziel URL Target einen Fragment Anchor anh ngen Dieser Fragment Anchor wird f r jedes Formular vergeben und hat die Form A1 A2 usw Er bewirkt da bei langen Endlosfor mularen der Browser nach dem Abschicken von selbst wieder bis zum aktuellen Formular hinunterrollt siehe auch add_frag end_form ruft die Methode finish des form Objekts auf Dadurch wird die Ausgabe der Steuerelemente abgeschlossen Die form Klasse erzeugt html Code f r versteckte Steuerelemente und gibt das schlieBende lt form gt Tag aus add searchlist und show searchlist erzeugen Steuerele mente und JavaScript Code um eine clientseitige Suchliste zu realisieren Diese Suchliste wird in leerem Zustand zum Client bertragen und erst dort zur Laufzeit mittels JavaScript gef llt Der Vorteil dieser Art der Realisierung ist da der Be nutzer nach Angabe eines Suchkriteriums nicht auf einen kompletten Neuaufbau der Suchseite zu warten braucht da die Suche lokal stattfindet Nachteilig wirkt sich jedoch aus da JavaScript f r gr ere Datenmengen nicht geeignet ist und da ein kompletter Ausschnitt aus der jeweiligen Tabelle bertragen wird Die Methode add searchlist erzeugt ein Textfeld f r die Eingabe eines Suchbegriffes die Liste f r die Suchergebnisse eine Schaltflache um die Such liste zu aktu
90. machen wird hier kurz die Reihenfolge der Pro grammausf hrung dargestellt Dieser Ablauf ersetzt den Mittelteil des Fallbei spiels aus Kapitel 2 3 2 Wird eine Datei vom Server abgerufen in diesem Beispiel personen php so f hrt das php Modul zuerst automatisch die Datei prepend php3 aus Dies wird durch die in php ini angegebene Konfigurationsvariable auto_prepend_file konfiguriert prepend php3 bindet die ben tigten PHPLIB Dateien ein und definiert Konstanten siehe Tabelle 3 2 Anschlie end beginnt die Ausf hrung der eigentlich angeforderten Datei Diese enth lt als erstes einen Verweis auf pagestart inc Dort werden die selbstdefinierten Klassen f r Session Authen tifizierung und Permissions instantiiert und gestartet Zu diesem Zeitpunkt stellt nun die Session Klasse die registrierten Variablen wieder her Anschlie end kehrt die Ausf hrung wieder zur ck zu personen php Hier wird nun die Dokumentklasse von Site abgeleitet und die Methode inhalt zur Erstellung des Seiteninhalts implementiert Dabei entstehen durch die An wendung der jeweiligen Klassen Spr nge in die Dateien local inc sowie 3Sollte die Verwendung von auto_prepend_file nicht m glich sein so kann prepend php3 auch durch die Datei pagestart inc eingebunden werden da diese in jeder Datei verwendet wird KAPITEL 3 ENTWICKLUNGSPROZESS 44 Programmsegment Anmerkung prepend php3 inkludiert db_mysql inc ct_sql inc session inc auth inc perm inc o
91. men ein der berechtigt ist T tigkei ten zu erstellen e ffnen Sie das Suchformular der Personen und geben Sie einen Teil des Namens ein um die richtige Person schneller zu finden Klicken Sie auf Suchen und w hlen Sie den Namen in der angezeigten Liste Sie werden auf die Karteikarte der Person weitergeleitet KAPITEL 4 BENUTZERHANDBUCH 79 e Wechseln Sie in das T tigkeiten Formular e In der Auswahlliste ganz oben sehen Sie alle T tigkeiten die diese Person gerade ausf hrt Zum Eingeben einer neuen w hlen Sie Neue T tigkeit Je nach Art der T tigkeit w hlen Sie bitte als n chstes den richtigen T tig keitstyp in der zweiten Auswahlliste Dadurch erhalten Sie die passenden Eingabefelder f r diesen T tigkeitstyp angezeigt e F llen Sie nun alle Felder aus e Speichern Sie die T tigkeit Wenn eine Fehlermeldung angezeigt wird kor rigieren Sie die Eingabe und erg nzen Sie ben tigte Felder Erst wenn keine Fehlermeldung nach dem Speichern angezeigt wird ist die T tigkeit wirk lich gespeichert Um die T tigkeit der Person an einem Projekt teilnehmen zu lassen folgen Sie den n chsten Schritten e Falls Sie es noch nicht getan haben Loggen Sie sich mit einem ausreichend privilegierten Benutzernamen ein und ffnen Sie die Karteikarte der richti gen Person e Wechseln Sie ins Projekteformular e W hlen Sie zuerst aus welche T tigkeit an dem Projekt teilnehmen soll Davon h ngt es ab ob aus
92. mm nicht verbessern sie soll aber den Erfolg der Applikation nicht durch Erzeugung einer ung nstigen Stimmung zerst ren Verkn pfungen werden in dunklem Rot mit einem Aufhellungseffekt bei Mauskontakt dargestellt damit sie einfach als Verweis erkannt werden k nnen Fehlermeldungen werden in einem lauten hellen Rot geschrieben um Aufse hen zu erregen Datenflu Bevor im folgenden Abschnitt auf die Klasse Institut_form eingegangen wer den kann ist noch eine Erl uterung des Datenflusses n tig Den meisten Formularen ist ein Such Formular vorgelagert das die wichtig sten Felder der Datens tze in Listenform zum Suchen bereitstellt Durch Auswahl eines Eintrages in einer solchen Suchliste wird der entsprechende Schl sselwert in einer registrierten Variablen gespeichert und der Benutzer wird zum Detailfor mular weitergeleitet ffnet ein Benutzer ein Detailformular so ist also zumeist bereits ein konkreter Datensatz ausgew hlt und der Benutzer soll die Daten dieses Datensatzes angezeigt bekommen In diesem Fall werden also die Steuerelemente mit den Werten aus der Datenbank initialisiert ndert nun der Benutzer Werte im Formular so wird nach Bet tigen der Speichern Schaltflache dasselbe Formular nochmals aufgerufen der neuerliche Aufruf beinhaltet aber in den globalen Variablen die ge nderten Werte der Formu larelemente sowie den Namen der gedr ckten Schaltfl che Die ge nderten Daten d rfen nun nicht direk
93. nander in Beziehung stehen Jedes der dargestellten K stchen entspricht einer eigenen Kartei also ei ner Sammlung einzelner Datens tze Jeder einzelne Datensatz z B eine Person besteht aus einzelnen Feldern Vorname Nachname und wird als Formular angezeigt 4 2 Erste Schritte Gleich das wichtigste zu allererst Die Institutsdatenbank ist eine Internet Anwendung Deshalb m ssen Sie sobald Sie nderungen an Daten vornehmen KAPITEL 4 BENUTZERHANDBUCH 69 die Speichern Schaltfl che dr cken damit Ihre nderungen auch tats chlich ge speichert werden Au erdem Verwenden Sie bitte nicht die Zur ck Schaltfl che Ihres Internet browsers Diese Schaltfl che ist auf normalen Internetseiten sehr hilfreich bei der Institutsdatenbank f hrt sie aber nur zu gro er Verwirrung weil Sie beim Zur ckgehen Daten wiedersehen die wahrscheinlich nicht mehr g ltig sind 4 2 1 Starten Zum Starten der Institutsdatenbank ffnen Sie Ihren bevorzugten Internetbrow ser Netscape Internet Explorer 0 4 und geben die Adresse der Datenbank ein Ihr Administrator wird Ihnen gerne eine Verkn pfung anlegen die Sie nur anklicken m ssen um die Datenbank zu ffnen Sie k nnen die Datenbank sofort verwenden Wenn Sie gesch tzte Daten nachschlagen oder nderungen vorneh men m chten m ssen Sie sich anmelden login Dazu verwenden Sie bitte den Login Link links oben sie werden anschlie end nach Ihrem Benutze
94. nche Benutzer verwenden die M glichkeit Formulare abzuschicken in dem sie den Submit Button mit der Leertaste bet tigen wenn er den Fo kus besitzt Damit auch in diesem Fall und in Verbindung mit dem Internet Explorer die gew nschten JavaScript Routinen vor dem Submit ausgef hrt werden darf das Ereignis onClick nicht verwendet werden statt dessen mu immer onSubmit verwendet werden Datenbank e In SQL String Verkettung verwendet man besser die MySQL Funktion CONCAT_WS anstatt CONCAT CONCAT_WS ignoriert NULL Werte in einzelnen Feldern bei CONCAT wird der gesamte String NULL e Bei Verwendung von Verkn pfungsausdr cken der Form FROM TabelleX LEFT JOIN TabelleY ON Kriterien d rfen bei den Kriterien 92 ANHANG C TYPISCHE FEHLERQUELLEN 93 nur jene Felder verwendet werden die auch an der Verkniipfung beteiligt sind also Schliisselfelder sind Weitere Bedingungen miissen im WHERE Abschnitt untergebracht werden Datenbank e JavaScripts m ssen unter exakter Einhaltung von Zeichensetzung in html php eingebettet werden lt script type text javascript language JavaScript Seu JavaScript Code fee lt script gt Es kommt dabei auch auf die Zeilenumbriiche vor und nach den html Kommentaren an Diese Information stammt aus SelfHTML siehe auch selfhtml8 javascript intro htm javascriptbereiche JavaScript Die Methode zur Zeichenketten Ersetzung String replace mit
95. ndere Datenbanken vor allem auf die mysql Datenbank m ssen unbedingt verboten werden Alle weiteren Privilegien insbesondere zum ndern der Tabellenentw rfe CREATE ALTER und DROP oder zum Zugriff auf Dateien LOAD DATA INFILE etc passwd INTO TABLE GeklautePasswoerter m ssen ihm verwehrt bleiben da sie in der Web Applikation nicht verwendet werden 5Die Benutzer der Web Applikation authentifizieren sich gegen ber dem Webserver nicht gegen ber MySQL Die Web Applikation hat alle m glichen Rechte und bestimmt selbst welche Rechte sie an jeden einzelnen Benutzer weitergibt KAPITEL 3 ENTWICKLUNGSPROZESS 59 Sofern der Webserver auf derselben Maschine l uft wie MySQL sollte fiir die IP Adresse des Benutzers 127 0 0 1 angegeben werden damit nur vom Server aus auf die Datenbank zugegriffen werden kann Selbstverst ndlich darf in MyS QL kein einziger Benutzer ohne PaBwort eingerichtet sein um unbefugte Zugriffe zu verhindern F r zus tzlichen Schutz kann das Pa wort verschl sselt abgespei chert werden ENCRYPT Funktion In der user Tabelle wird also ein Benutzer angelegt der vorerst noch kein einziges Privileg besitzt und als Host die IP Adresse des Webservers eingegeben hat Diesem unprivilegierten Benutzer werden anschlie end durch zwei Eintr ge in der DB Tabelle die Zugriffe auf Institut und IDM erlaubt So kann der User nicht auf die anderen Datenbanken zugreifen Sch tzen der Zugang
96. nes Bereiches einzeln anzuw hlen f gen Sie besser den jeweiligen Eintrag Alle Daten der hinzu e Mit den entfernen Links k nnen Sie einzelne Felder wieder aus der Grup pe l schen Wenn Sie die gew nschten Feldgruppen erstellt haben k nnen Sie im Privi legienformular die gew nschten Privilegien zwischen Benutzergruppen und Feld gruppen zuordnen Siehe dazu den n chsten Abschnitt 4 5 3 KAPITEL 4 BENUTZERHANDBUCH 76 4 5 3 Vergeben von Privilegien In diesem Schritt weisen Sie jeweils einer Benutzergruppe das Recht zu auf ei ne vorgegebene Feldgruppe zuzugreifen Die Benutzergruppe und die Feldgruppe m ssen zu diesem Zeitpunkt bereits erstellt sein Lesen Sie ggf in den vorigen Abschnitten nach um Benutzergruppen 4 5 1 und Feldgruppen 4 5 2 zu erstellen e Loggen Sie sich mit einem Benutzernamen ein der berechtigt ist Privilegi en zu vergeben e ffnen Sie das Privilegienformular Einstellungen Privilegien e Klappen Sie die Benutzergruppe auf der Sie neue Privilegien geben m chten klicken Sie auf den Pfeil links Sie sehen welche Privilegien die Gruppe momentan besitzt e W hlen Sie eine Feldgruppe und das gew nschte Privileg in den Auswahl listen und klicken Sie auf Hinzuf gen um das Privileg zu erteilen e Wenn Sie ein bestehendes Privileg ndern m chten w hlen Sie einfach die Feldgruppe in der Auswahlliste aus und geben die neue Privilegienstufe an so als w rden Sie das Privil
97. neue Da tenbankstruktur Dabei werden die Daten an das ge nderte Datenbankschema an gepa t und so formatiert da sie von MySQL korrekt weiterverarbeitet werden k nnen Als Ergebnis erh lt man eine Textdatei die alle Einfiigeanweisungen enth lt Nach dem Einspielen der Daten in den Datenbankserver m ssen fehlende In formationen manuell erg nzt werden Dazu z hlen alle Daten die erst im neuen Datenbankmodell hinzugef gt wurden z B Projekte und Computer oder aus an deren Gr nden noch nicht eingegeben wurden Einrichten von MySQL In Kapitel 6 des MySQL Handbuches 6 wird das Privilegiensystem von MySQL beschrieben Das Studium der Original Lekt re wird dem Leser empfohlen hier kann nur eine kurze Zusammenfassung wiedergegeben werden Bei der Vergabe von Zugriffsrechten mu der Grundsatz befolgt werden niemandem mehr Rechte zu geben als unbedingt n tig Der Datenbankserver mysqld Proze mu unter einem Account Linux Username gestartet werden der ausschlie lich und als einziger auf das Verzeichnis zugreifen darf das die Tabellen enth lt F r den Webserver mu ein MySQL Benutzer eingerichtet wer den der ebenfalls nur mit minimalen Privilegien ausgestattet werden darf Der MySQL Benutzer darf auf die Tabellen der Institutsverwaltung lediglich SELECT INSERT UPDATE und DELETE Anweisungen anwenden Zus tzlich ben tigt er dieselben Rechte f r die Benutzertabelle die in der IDM Datenbank liegt Zugriffe auf a
98. ngenden Argu mente gegen den unangefochtenen Marktf hrer Apache sprechen wird Apa che als Server eingesetzt Er bietet u erst flexible Konfigurationsm glichkeiten Modul Schnittstellen zu den meisten Programmiersprachen und ist aufgrund sei KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 16 ner langen und aktiven Weiterentwicklung als besonders ausgereift zu bezeichnen Programmiersprache Die zu verwendende Programmiersprache soll die Pro grammierung von Datenbankzugriffen effizient unterstiitzen die geschriebenen Programme sollen ressourcenschonend und performant ablaufen und leicht wart bar sein Dazu soll die Sprache modulares beispielsweise objektorientiertes Pro grammieren unterst tzen Die Sprache soll selbstverst ndlich gut dokumentiert und leicht erlernbar sein um einen raschen Projektfortschritt zu erm glichen Bei den Programmiersprachen bietet sich die gr te Auswahl da immer wie der neue Sprachen am Markt auftauchen Es mu daher besonders sorgf ltig auf Eignung und dauerhafte Unterst tzung geachtet werden Server Side Includes SSI sind Tags die in den normalen html Quelltext ein gebettet werden und vom Webserver selbst ausgewertet werden bevor die Seite ausgeliefert wird Mit SSI k nnen jedoch nur einfache Konstrukte realisiert wer den von einer echten Programmiersprache kann kaum gesprochen werden Java bietet mit Java Server Pages JSP und Zugriff auf die Java Enterprise Edi tion eine besonders prof
99. nn ein Datensatz ung ltig geworden ist die Person ist ausgeschieden der Raum wurde an ein anderes Institut abgegeben usw ist der Datensatz zu l schen Wichtig L schen Sie niemals die Werte die in den Textfeldern eingetragen sind Wenn ein Datensatz gel scht werden soll dann ist das mit der L schen Schaltfl che zu erledigen Bevor Sie einen Datensatz l schen k nnen darf er mit keinen anderen Da tens tzen mehr in Beziehung stehen Sie k nnen eine Person zum Beispiel erst KAPITEL 4 BENUTZERHANDBUCH 83 dann l schen wenn sie keine Projekte mehr leitet und keine Klappen benutzt usw Wenn noch Beziehungen bestehen bekommen Sie nach dem L sch Versuch eine Liste mit den bestehenden Beziehungen pr sentiert Sie m ssen alle Beziehungen l sen indem Sie die entsprechenden Datens tze l schen bevor Sie den eigentli chen Datensatz l schen k nnen Nachdem ein Datensatz gel scht wurde f llt er aus allen Auswahllisten heraus und wird nur dann noch angezeigt wenn Sie bei den Einstellungen die entspre chende Funktion aktivieren sie m ssen auch die n tigen Privilegien besitzen Im Formular werden die Wiederherstellen Schaltfl che und das L schdatum an gezeigt Wenn ein Datensatz sp ter wieder gebraucht wird weil etwa die Person wie der ans Institut zur ckkehrt so kann der Datensatz wiederhergestellt werden Beim Wiederherstellen sind hnliche Abh ngigkeiten wie beim L schen nur in umgekehrter Reihenf
100. nqreds KA Zld unyegs3un3n 19Jq y 1x1 ZUOIJEN e ISSIIPY o unyegs3un3n 19Jq y osn sseursny o u yorozz my Is muu uogunzin Nune SvnogssSunsnioJqy 1x1 ZIESIJUNSON gt ANSUY a ayola Senogssunsniojqy osn wumegssunsnigqy zm DYIOH eureu IX 3enogs3un3n 19Jqy PULL SIG ewoy osn paul eureugoeN oSuovT ES Jononog IX jejsurjoqun URU A ueyoqsunzjnN wis Sunyloy Jonanog osn opuq apamuy popumey ES 93814 jejsugoqun IX uurdog 119q En LABEL Y Jong BIOMUBIOA d dnosp o4 de uauosieg oumoewy gt uoge UMJET YW L d ung cd 1neneq Td sdnjesSp oJ a uks d A a Sunxouruy v z a Ed y 8 z a y QE s uO a ES INOJUOM HAS uonney o E N Zu SA Sunyloy vA 4 yospng REECH Thssoupy S Sunyxrouruy E ie opugssun uez EN Iourunugne T opnoeqor e dALPeL 3 opuq IXIL E 2 uuidog K i ddery VAS e GEN essan yos Ka opnoeqor uod I L m e Pat gt a 1oqo83enjny y uoddepy Lo Sunsoipunjoy IJO fox d 2 Sunqlosyosag AS paud an d Lroqossenjny d L essonyos ssn gosuy d amp issnpgosuy uoSuniorpunjos INS uedKpieqe88enpy E vi uod g essenpgog LV uoA s y uod K ssnpgjosuy iagramm ER D Abbildung 2 1 KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 12 ware finden soll ein Hilfesystem integriert werden das kontextabh ngig gezielte Informationen bietet Das Hilfesystem mu dazu online d h als Bestandteil der Software zur Verf gung stehen Navigation Der Benutzer mu stets die Orientierung behalten k nnen Durch
101. nschten Sicherheitseinstellungen berpr ft werden Weiters wird der Einsatz verschl ssel ter Daten bertragung SSL erwogen um sowohl die Zugangsdaten als auch die von der Datenbank abgerufenen Nutzdaten gegen Abh ren zu sichern Um eine Web Applikation robust zu gestalten d rfen Benutzereingaben nie mals ungepr ft bernommen werden Dies gilt f r Datenbankanwendungen ge nerell f r Web Applikationen jedoch ganz besonders da im allgemeinen die Anwender einer Web Applikation entweder v llig unbekannt sind oder aus psy chologischen Gr nden wenig Arbeitsdisziplin zeigen da sie sich unbeobachtet f hlen Diese Pr fungen verfolgen zwei Ziele 1 Erhaltung der Datenintegrit t Die Anwendung mu erkennen wenn Benutzer unsinnige oder zu kurze Daten eingeben Zu diesem Zweck wird f r jedes unbedingt auszuf llende Feld eine Mindestl nge in Zeichen vorgege ben Au erdem wird entsprechend dem vorgegebenen Datentyp jedes Feldes eine berpr fung mittels regul rer Ausdr cke vorgenommen um die Plausibilit t der eingegebenen Daten sicherzustellen 2 Schutz vor Angriffen von au en Eine einfache aber durchaus wir kungsvolle Attacke gegen eine Web Applikation ist es in ein Textfeld Daten ein zugeben die vom Datenbankserver als Befehl interpretiert werden und so Scha den an den Daten anrichten W rde beispielsweise ein Benutzer in ein Textfeld den Wert Text DROP DATABASE Institut eingeben so w rde die Anwei
102. ntabelle die Etage des Sitzzimmers abzuspei chern Diese Information geh rt nicht in die Personentabelle da die Personen nicht direkt mit Etagen sondern mit den R umen in Beziehung stehen siehe Abb 2 1 Schl sselfelder Grunds tzlich vertritt der Autor die berzeugung da Attribute also Da ten des Objektes nur in den seltensten Fallen als Schl sselfelder geeignet sind Dies l t sich durch zwei Gr nde untermauern Zuerst einmal finden sich in der realen Welt kaum Attribute die zwingend vorhanden und gleichzeitig wirklich eindeutig sind F r Personen w re beispielsweise der Name als Schl ssel v llig ungeeignet selbst Sozialversicherungsnummern sind nicht in allen F llen eindeu tig oder berhaupt vorhanden Und weiters besteht die M glichkeit da Attribute ihren Wert im Laufe der Zeit ndern Dann m te in der gesamten Datenbank jedes Vorkommen des Schl ssels ausgebessert werden um die Konsistenz zu er halten Aus diesen Gr nden werden Schl ssel in der Institutsdatenbank prinzipiell als Zeilennummernfeld auto increment ausgef hrt Dadurch tr gt der Schl ssel keine Information er dient nur zur Identifikation des Datensatzes und gelangt niemals sichtbar an die Benutzeroberfl che Der dadurch zus tzlich verbrauch te Speicherplatz kann als vernachl ssigbar bezeichnet werden au erdem ist die Suche nach Zahlen in der Datenbank deutlich effizienter als die Suche nach Zei chenketten Benennung
103. oder wird nachgereicht sind zumeist nur wenig hilfreich Wenn die Datenbank das Formular nicht akzeptiert weil wesentliche Informatio nen fehlen miissen Sie diese ermitteln bevor Sie den Datensatz anlegen k nnen 4 4 Privilegienvergabe Das Privilegiensystem der Institutsdatenbank ist sehr flexibel es mu aber auch mit Vorsicht angewandt werden um die Kontrolle tiber die vergebenen Privilegien zu behalten Das Prinzip ist in Abbildung 4 2 dargestellt Benutzer k nnen Benut zergruppen zugeteilt werden und Datenbankfelder werden in Feldgruppen ein geordnet Die Privilegien werden ausschlie lich zwischen Benutzergruppen und Feldgruppen vergeben Die Abbildung zeigt da Benutzer auch mehreren Benutzergruppen an geh ren k nnen W hrend der Benutzer Sepp nur auf die Personendaten zu greifen kann darf Franz alle dargestellten Felder bearbeiten weil er der Perso nalabteilung und der Verrechnungsabteilung angeh rt f r ein bestimmtes Feld gelten also immer die st rksten Privilegien aus allen Gruppenmitgliedschaften Das Privilegiensystem erm glicht auch die vollst ndige Abtrennung unter schiedlicher Benutzergruppen Benutzer aus der Personalabteilung die keinen weiteren Gruppen angeh ren in diesem Fall nur Sepp bekommen die Daten der T tigkeiten gar nicht zu sehen weil sie keine Leseberechtigung daf r haben KAPITEL 4 BENUTZERHANDBUCH 13 lesen ndern Personendaten erstellen
104. ogen Paket 4 das die sequence number f r seine Pa kete enth lt 124 in diesem Fall und gleichzeitig den Empfang des Paketes 3 best tigt Nachdem der Browser den Empfang dieses Pakets best tigt hat 5 be steht zwischen Browser und Server eine g ltige TCP Session Zwei unabh ngige Datenkan le zwischen den Ports 1032 Client und 80 Server erm glichen die Kommunikation in beide Richtungen Nun sind die Vorarbeiten abgeschlossen und der Client kann die gew nschte Anfrage absetzen Er schickt dazu ein http GET Paket 6 an den Server Dieses GET Paket enth lt neben weiteren Informationen ber den Client den vom Benut zer angegebenen Link An Zusatzinformation stehen im GET Paket beispielsweise die Version des verwendeten Browsers user agent die bevorzugte Sprache und die Bildformate die der Browser verarbeiten kann Nachdem der Server in 7 den Empfang des GET Paketes best tigt hat endet hier das erste Drittel der Verarbeitung Im zweiten Drittel bearbeitet der Server die Anfrage und stellt eine Antwort zusammen im letzten Drittel wird die Antwort an den Browser zur ckgeschickt und die TCP Session abgebaut Bis jetzt hat der inetd Internet Daemon mit dem Client kommuniziert Nach dem http GET Paket hat jedoch der inetd die Kontrolle an den httpd der eigentli KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 23 Browser http Server E Netscape Eo 1032 gt 80 SYN Seq 17 a p 80 1032 SYN ACK Seq
105. ohforms inc page inc und Institut inc include pagestart inc gt pagestart inc page_open startet die von Session Auth und Perm abgeleiteten Klassen Die Session Klasse stellt registrierte Variablen wieder her personen php lt class personen doc extends Site Diverse Spr nge in local incund Institut inc Sdoc new personen_doc Sdoc gt p page_close startet Ssess gt freeze Tabelle 3 2 Aufrufreihenfolge Institut inc local inc enth lt alle von PHPLIB abgeleiteten Klassen die selbstdefinierten Klassen sind in Institut inc zu finden Die Programmausf hrung springt allerdings zuerst an das Ende der Datei Klassendefinitionen sind wie Typdeklarationen Dort wird die eben definierte Dokumentklasse instantiiert und die Methode p ausgef hrt um den Seitenin halt auszugeben Am Ende folgt der Aufruf von page_close Dadurch werden die aktuell g ltigen Werte der registrierten Variablen in der Datenbank gespeichert Ssess gt freeze 3 2 3 Aufbau der Formulare Site Klasse Wie in der Aufgabenstellung gefordert sollen alle Formulare der Applikation das selbe Layout und gemeinsame Navigationselemente besitzen Die Navigations elemente Men s und Links zu anderen Seiten d rfen jedoch nicht starr sein sondern m ssen an jede Seite angepa t sein abh ngig von der Position der Sei te in der hierarchischen Organisation Als scheinbar einfache L sung h tte man die Navigationselemente in jede
106. ohl Entities als auch wenn auch selten Relations k nnen Attribute besitzen Attri bute sind einfache Werte wie zum Beispiel ein Vorname eine L nge oder ein Geburtsdatum Entities Relations und die dazugeh rigen Attribute lassen sich sehr an schaulich im Entity Relationship Diagramm ER Diagramm darstellen Das ER Diagramm ist als Gespr chsbasis mit dem Auftraggeber ein wichtiges Hilfsmittel da mit seiner Hilfe die Basis f r das Datenbankmodell erarbeitet werden kann Aus dem ER Diagramm werden sp ter die zu verwendenden Tabellen und die Abh ngigkeiten der Tabellen untereinander abgeleitet In manchen F llen ist nicht ganz offensichtlich ob es sich bei einem Objekt um ein Attribut oder um eine eigene Entity handelt Beispielsweise haben Personen ein Sitzzimmer in dem sie ihren Arbeitsplatz haben Man k nnte nun einfach die Raumnummer als Attribut der Person zuordnen oder aber die R ume zu einer ei genst ndigen Entity erkl ren und eine Beziehung zwischen den Entities R ume und Personen herstellen Abb 3 1 P sitzt in R Personen Personen Vorname RaumNummer Vorname Nachname Laenge Nachname Titel Breite Titel ZimmerNummer Abbildung 3 1 Realisierung als Attribut oder als Entity Die erstere Methode sieht einfacher aus sie kann auch durchaus ausreichend sein Sie funktioniert jedoch nur dann wenn keine weiteren Daten zum Sitzzim mer wie beispielsweise L nge Breite oder die Etage gesp
107. ojroxsnov TUYA uusad jrexsrauguqessun o1s1ou1oporA IQLIJIIMYISOT jrexsrauguqeuoso T 9L9ABL nN ANHANG B LOSCHABHANGIGKEITEN uars eu TAl q dnois sasn Ury JULIA JULIA SUOISSOS n UdISO IALI quo eu ssag dnois sasn WN ey am a Cu EIER UTAJ usad eu uoddn gyuLiopfo4 UTAJ O am sum uod 3ov ueSuniorpungos opuonanoq pun ouoeSr9 uouosioqd SABE Inu uourqeugro p i ofo1q e simga EIUS a cod Lor a EEN a apud uod T 1oqo8 genjny 1odo pp ofouiq ueuosioq ourox SABE mu uourqeugro pi ofo1q aay a ET GASES tonsea a JOASISURYQLSIUN 9ISIDYIDPITAA IQL IMIIMYISO jrexsrdugeuqeuoso T uoddnuces dnois Josn a usddniQup1op gt 24 uoddninpje4 amquny uourqeurgro yoloig USNONYSHOBL uod T 19v sdnyogp o4 uoSuniorpungos uod 1oqoS3engny EE uod essenjqog essenpgog WISS L schabh ngigkeiten und Wiederherstellungsabh ngigkeiten Anhang C Typische Fehlerquellen W hrend der Entwicklung sind dem Autor einige Fehler passiert die jeweils ein sogenanntes Aha Erlebnis bewirkt haben als ihre Ursachen endlich entdeckt waren In der Hoffnung da sie f r Entwickler von Internet Applikationen hilf reich seien sollen sie hier ohne Anspruch auf Vollst ndigkeit kurz aufgez hlt wer den Browser e Nennen Sie einen html Button niemals submit Sonst funktioniert die Me thode this form submit nicht mehr e Ma
108. olge zu ber cksichtigen Ein Datensatz kann nur dann wie derhergestellt werden wenn kein Datensatz von dem er abh ngig ist z B sein Sitzzimmer seine Abteilung gel scht ist 4 7 Sicherheit Zur Sicherheit f r die Datenbank und zur Sicherheit Ihres Computers hier ein paar Tips die Sie beachten sollten e Geben Sie Ihr Pa wort nicht weiter und kleben Sie es nicht auf Ihren Com puter Nein auch nicht auf Ihren Monitor e Lassen Sie Ihren Computer nie alleine wenn die Datenbank ge ffnet ist Am besten w re es den Computer durch eine Pa wort Sperre zu sch tzen wenn Sie den Arbeitsplatz verlassen auch wenn es nur f r kurze Zeit ist e Klicken Sie auf logout bevor Sie die Datenbank verlassen Dadurch kann niemand in Ihrem Namen Schaden anrichten e Sch tzen Sie sich vor Viren ffnen Sie keine E Mails die suspekt er scheinen englischsprachiger Betreff Absender die Sie nicht kennen ver lockende Angebote und bleiben Sie obskuren Internetseiten fern e Verwenden Sie stets die zweit aktuellste Browsersoftware um Programm fehlern und Sicherheitsliicken zu entgehen KAPITEL 4 BENUTZERHANDBUCH 84 4 8 Anwender Glossar Hier werden Begriffe erklart ohne die die Beschreibung der Institutsdatenbank kaum m glich w re Abfrage Mit einer Abfrage kann man Fragen an die Datenbank rich ten Zu einer Abfrage mu man angeben welche Felder Spalten der Tabellen angezeigt werden sollen und w
109. onen Tabelle KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 22 che Netzwerkadresse des Servers die MAC Adresse zu ermitteln bevor er an schlie end eine TCP Session ffnet um die Anfrage tats chlich abzusetzen Der erste Schritt 1 ist also ein ARP request Der Browser stellt an alle lokal angeschlossenen Rechner die Frage Ethernet Broadcast wem die vom Benutzer eingegebene IP Adresse geh rt L ge der Server in einem anderen Subnetz so w rde der Router mit seiner eigenen MAC Adresse antworten und die kommen den Anfragen an den Server weiterleiten In diesem Fall liegen aber Client und Server auf demselben Netz und so antwortet der Server selbst Von nun an kann der Browser den Server direkt ber das lokale Netzwerk ansprechen er beginnt auch sofort die TCP Session zu er ffnen 3 Eine TCP Session wird im sogenannten three way handshake er ffnet indem die beteiligten Rechner sequence numbers austauschen und den Empfang jeweils best tigen Sequence numbers numerieren die bertragenen Datenpakete und wer den in jeder Session auf zuf llige Werte initialisiert damit nicht verz gerte Pakete aus vorangegangenen Sessions die bertragung durcheinander bringen k nnen Der Client hat zuf llig entschieden Port 1032 als Eingangsport zu verwen den und hat die neue sequence number mit 17 festgelegt Er schickt nun ein TCP SYN Paket synchronize das diese Daten enth lt an den Server Der Server antwortet mit einem anal
110. ormulars aufgehoben sondern erst durch Klicken auf die Suchen Schaltfl che Browseridentifikation und JavaScript Erkennung Die Web Applikation verwendet JavaScript f r die Challenge Response Authentifizierung f r die clientseitigen Suchformulare zum Schutz gegen unbeabsichtigtes Abschicken KAPITEL 3 ENTWICKLUNGSPROZESS 57 von Formularen und zum Uberwachen von Steuerelementen auf die der Benutzer keine Editierrechte besitzt Die Validierung der Daten erfolgt ausschlieBlich am Server da mit JavaScript erzeugte Meldungsfenster den Arbeitsablauf des Benut zers st ren und die serverseitige Validierung zuverl ssiger und flexibler zu reali sieren ist Dariiber hinaus w re es ein Sicherheitsrisiko sich auf die Ausfiihrung von Validierungsscripts zu verlassen da b sartige Benutzer die Validierungsrou tinen aus dem Seitenquelltext entfernen und so ungiiltige Daten in die Datenbank einschleusen k nnten Ein Browser der JavaScripts nicht ausf hrt kann die Anwendung nicht sinn voll einsetzen weil die Suche nach Datens tzen nicht funktioniert Deshalb wer den im Zuge der Authentifizierung Benutzer ausgeschlossen deren Browser Ja vaScript nicht verarbeitet Die JavaScript Erkennung ist nur ber Umwege reali sierbar und wird hier ideal mit der erh hten Sicherheit der verschliisselten Au thentifizierung verkoppelt Wenn der Wert der Response bei der Anmeldung leer ist so hat der Browser das Script nicht ausgef hrt und k
111. richtet werden soll Diese Weisheit sollte man nicht vergessen wenn man in der Anfangsphase eines Projektes oft m hsame Diskussionen ber die Organisation der Daten mit dem Auftraggeber zu f hren hat Es ist unbedingt notwendig viel Zeit in einen ausgereiften Datenbankentwurf zu investieren da ein schlechter Entwurf sp ter kaum mehr korrigiert werden kann und so das gesamte Softwareprojekt belastet Es kommt beim Entwurf darauf an die Entwurfsregeln zur Einhaltung der Nor malformen im Prinzip einzuhalten und au erdem ein konsistentes Schema zur Benennung von Datenbankobjekten zu verwenden Die Regeln zum Erreichen von Normalformen im Prinzip einzuhalten bedeutet sie in bestimmten F llen zu verletzen um einen einfacheren Tabellenentwurf oder spezielle Funktionalit t zu erreichen darauf wird im folgenden Abschnitt n her eingegangen 29 KAPITEL 3 ENTWICKLUNGSPROZESS 30 Die konsistente Benennung von Datenbankobjekten macht sich erst sp ter be zahlt wenn man innerhalb der Abfragen dieselben Namen zu verwenden hat die man selbst Wochen zuvor vergeben hat dann ist die Verwendung kurzer und ein fach zu merkender Namen sehr vorteilhaft Hierfiir existieren keine Normen le diglich subjektive Pr ferenzen die ebenfalls erl utert werden sollen 3 1 1 Entwurfsregeln Die Theorie des Datenbankentwurfs 12 13 und 14 definiert Entities und Relations also beliebige Objekte die untereinander in Beziehung stehen Sow
112. rischen FeldIDs k nnen in der Felder Tabelle die vollst ndigen Feldnamen und die Beschriftungen ermittelt werden Die FeldIDs werden aber auch zur Auswahl der Attribute verwendet die Bitfelder denen in der Attribute Tabelle erst zur Laufzeit Bezeichnungen zu geordnet werden Attribute werden in der Form Tabellenname Stellenwert dar KAPITEL 3 ENTWICKLUNGSPROZESS 54 gestellt Au erdem werden negative FeldIDs verwendet um Felder darzustellen die in der Felder Tabelle in dieser Form nicht existieren wie zum Beispiel den Betreuer einer T tigkeit Die Funktion hole_feldname bersetzt die FeldIDs in die vollst ndigen Feldnamen ermittelt ob das Leseprivileg f r die Felder vor handen ist und retourniert einen kompletten Feldinfo Datensatz als assoziatives Array Die Methode init verwendet die Formularvariablen um die interne Re pr sentation der Abfrage aufzubauen Diese besteht aus einem Profil das den Verkn pfungsausdruck festlegt der Liste der anzuzeigenden Felder einer Liste von Kriterien und einer Liste von Feldern die zum Sortieren verwendet werden sollen F r die Kriterien und Auswahlfelder zum Sortieren wird im Formular jeweils um eine Zeile mehr erstellt als momentan ben tigt wird Dadurch erscheint nach Ausf llen einer Zeile beim n chsten Anzeigen eine neue Zeile f r die n chsten Werte Zeilen in denen keine g ltige FeldID ausgew hlt sind werden entfernt Wenn das Leserecht f r ausgew hlte Felder
113. rnamen und Kennwort gefragt Bitte geben Sie Namen und Kennwort genau so ein wie Sie sie vom Administrator bekommen haben es kommt auch auf Gro und Kleinschrei bung an Wenn Sie sich erfolgreich angemeldet haben erscheint Ihr Benutzername links oben andernfalls werden Sie erneut zur Eingabe von Name und Pa wort aufgefordert Wenn Sie keinen passenden Anmeldenamen haben k nnen Sie als Benutzername auch nobody angeben und das Pa wortfeld leer lassen sie haben dann eingeschr nkte Rechte 4 2 2 Navigation Die Institutsdatenbank ist in mehrere Zweige aufgeteilt die jeweils zusammen geh rige Seiten enthalten Zu Ihrer Orientierung steht links eine Liste mit allen Zweigen Der Zweig den Sie gerade benutzen ist weiter aufgegliedert und zeigt alle untergeordneten Seiten an Die Tabreiter am oberen und unteren Rand zeigen hingegen immer nur die benachbarten Formulare an Wenn Sie ein Formular ffnen m ssen Sie sich zuerst in einer Liste aussu chen welchen Datensatz sie genau sehen m chten Wenn Sie beispielsweise das Personen Formular ffnen bekommen Sie zuerst eine Liste mit Namen Geben Sie ein paar Buchstaben des gesuchten Namens ein und dr cken Sie auf Suchen Dadurch werden in der Liste nur noch die passenden Namen angezeigt Wenn Sie KAPITEL 4 BENUTZERHANDBUCH 70 den passenden Namen gefunden haben klicken Sie ihn in der Liste einfach an und Sie werden zu den ffentlichen Daten der Person weitergeleitet Di
114. s nachgepr ft und ein Zertifikat erstellt das den Namen und den ffentlichen Schl ssel der Person sowie den Namen der Zertifizierungsstelle enth lt Das Zertifikat wird mit dem privaten Schl ssel der Zertifizierungsstelle signiert Damit ist sichergestellt da nur die Zertifizierungs stelle das Zertifikat ausstellen kann G ngige Browser kennen die ffentlichen Schl ssel der gr eren Zertifizierungsstellen und k nnen so Zertifikate ffnen Bei der Verwendung von SSL zur Verschl sselung von http Sitzungen wird das SSL Protokoll zwischen TCP IP und http eingeschaltet Es werden also http Pakete in SSL Rahmen verpackt und diese mit TCP IP versendet Da die Anwendung des oben beschriebenen asymmetrischen Verfahrens zu sehr rechenintensiv w re wird dieses Verfahren nur dazu ben tzt um die Iden tit ten der Kommunikationspartner zu berpr fen und anschlie end ein gemein sames Geheimnis shared secret Schl ssel f r ein symmetrisches Verschl sse lungsverfahren den nur die beiden Kommunikationspartner kennen ausgehan delt Zumeist wird ohnehin nur die Identit t des Servers auf diese Art berpr ft da mit der Benutzer wei da er mit dem echten Server kommuniziert Die Identit t des Benutzers wird durch Vergabe von Namen und Pa w rtern auf einer h heren Ebene berpr ft Die Installation von SSL mit Apache erfolgt am besten streng nach Anlei tung Zun chst mu Apache mod ss1 und OpenSSL installiert
115. schnitten gepa t Dort d rfen aber nur an der Verkn pfung beteiligte Felder verwendet wer KAPITEL 3 ENTWICKLUNGSPROZESS 55 den Die benutzerdefinierten Kriterien werden an die Ausschlu bedingungen an geschlossen Sie bestehen aus jeweils einer Vergleichsfunktion dem Feldnamen der optionalen Negation sowie der Verbindung AND OR zur n chsten Bedin gung create_orderpart gibt schlie lich die Sortierbedingungen aus Bereits in der Methode init wurde sichergestellt daB alle Felder nach denen sortiert werden soll auch in der Ergebnistabelle enthalten sind Die Ausgabe der Daten erfolgt normalerweise als html Tabelle Zum Expor tieren der Daten ist aber auch eine durch Tabulatoren getrennte und eine durch Komma getrennte Listenform vorgesehen Organigramm Die Datenbank speichert die Organisationsstruktur des Instituts in einer hierarchi schen Struktur als Baum Die Baumstruktur wird auf die Datenbank abgebildet indem jede Organisationseinheit mehrere ihr untergeordnete Organisationseinhei ten haben kann Organisationseinheiten k nnen Abteilungen Arbeitsgruppen oder ganze Institute sein es k nnen also mehrere unabh ngige Teilb ume realisiert werden Auch die Benennungen der Typen von Organisationseinheiten k nnen in einer eigenen Tabelle definiert werden und sind somit an die Gegebenheiten anzupassen Das Organigramm Formular stellt die Hierarchie mit Hilfe von Tabellen als Baum dar und kann dazu benutzt werden d
116. sdaten Die Zugangsdaten zur Anmeldung am Datenbankserver sind im Programm im Klartext enthalten und d rfen unter keinen Umst nden nach au en gelangen weil ein Benutzer mit Hilfe der Zugangsdaten volle nderungs und L schprivilegien erh lt Unter normalen Umst nden sind die Zugangsdaten im Quelltext gut ge sch tzt weil der Benutzer stets nur den durch php interpretierten Quelltext be kommt der die Zugangsdaten nat rlich nicht mehr enth lt Sollte jedoch aus ir gendeinem Grund der php Interpreter nicht korrekt ausgef hrt werden so w rde ein Benutzer den Quelltext erhalten und k nnte die Zugangsdaten mi brauchen Dieser Fall k nnte durch eine Fehlkonfiguration durch einen Programmfehler im php Modul oder absichtlich durch einen Angriff von au en herbeigef hrt wer den Um die Zugangsdaten gegen diese Angriffsmethode zu sch tzen m ssen sie in eine Datei ausgelagert und per include in die Webseiten eingebunden wer den Die Datei mu in einem Verzeichnis liegen das au erhalb des Dokumenten verzeichnisses des Webservers liegt Dadurch kann der Angreifer die Datei nicht einfach durch Eingabe des Namens im Browser abrufen Die Zugangsdaten wer den also entweder normal verwendet oder erst gar nicht eingebunden wenn php nicht l uft In beiden F llen gelangen sie nicht zum Client Im Fall der Institutsdatenbank sind die Zugangsdaten zentral in der Klas sendefinition von DB_Institut local inc abgelegt Diese D
117. sie vom Browser vollst ndig geladen worden sind Zum einen gibt es Benutzer die doppelt auf Schaltfl chen klicken zum anderen f hrt der Browser JavaScripts m glicherweise nicht aus wenn sie im Quelltext erst sp ter positioniert sind und daher noch nicht heruntergeladen wurden Daher wird eine Sperre eingebaut die das Abschicken des Formulars erst nach vollst ndigem Laden erm glicht und nur genau ein Submit zul t Dazu wird eine globale JavaScript Variable ready mit O false initialisiert Erst mit Eintritt des Ereignisses onLoad wird die Variable freigegeben auf 1 ge setzt Bevor nun ein Formular abgeschickt wird pr ft eine JavaScript Funktion ob ready freigeschaltet ist Dazu wird die after validation Funktion der Form Klasse verwendet siehe myform gt get_start in local inc Wenn die Sperr variable nicht aktiv ist wird der Submit abgebrochen Die Sperrfreigabe wird auch f r die Suchlistenformulare eingesetzt um eine besondere Eigenheit zu vermeiden Das Dr cken der Return Taste wird von man chen Browsern als Bet tigung des ersten Submitbuttons interpretiert Das w re in den vorgelagerten Suchformularen besonders unerw nscht da Benutzer nach Eingabe eines Suchbegriffes instinktiv Return dr cken und so auf die leere De tailseite weitergeleitet werden da sie noch keinen Eintrag in der Liste der Such ergebnisse ausgew hlt haben Deshalb wird in Suchformularen die Submitsperre nicht bereits beim Laden des F
118. starten die Ausgabe des html Quelltextes Bei gel schten Datens tzen wird das L schdatum und eine Schalt fl che zum Wiederherstellen angezeigt f r alle anderen Datens tze erscheint eine L schen Schaltfl che show delete ist trotz seiner K rze besonders hilfreich Die Methode erzeugt einen Kriterienausdruck f r SQL Abfragen der die gel schten Datens tze ein oder ausschlie t Bei gel schten Datens tzen ist im Feld del das Datum der L schung eingetragen aktive Datens tze haben ein leeres Datum 0 gespeichert Normalerweise erzeugt show_delete ein Kriterium das nur Datens tze ohne vor handenem L schdatum zul t Nur wenn die globale Variable show_all gesetzt KAPITEL 3 ENTWICKLUNGSPROZESS 50 ist und der Benutzer das L sch Privileg fiir die angegebene Tabelle besitzt wird das Kriterium weggelassen und der Benutzer bekommt alle Datens tze geliefert delete_warn wird am Beginn von Formularen eingesetzt um eine Meldung auszugeben falls der aktuelle Datensatz gel scht ist Wenn die Varia ble show_all nicht aktiv ist wird ein Hinweis ausgegeben der den Benutzer zum Einstellungen Formular verweist wo er show_all aktivieren kann Die Methode retourniert false 0 wenn der Datensatz nicht angezeigt werden soll also wenn er gel scht ist und show_all nicht aktiv start_form ruftdie Methode start des form Objekts auf Dadurch wird das ffnende lt form gt Tag ausgegeben und in weiterer Folge m ssen a
119. sung zum Abspeichern der Daten nach dem Wort Text durch das eingegebene Anf hrungszeichen vorzeitig zu Ende sein und anschlie end die DROP DATABASE Anweisung ausgef hrt werden Dies kann jedoch zuverl ssig verhindert werden KAPITEL 2 PROBLEMSTELLUNG UND LOSUNGSANSATZ 19 indem Sonderzeichen z B die Anfiihrungszeichen in allen Eingabefeldern mas kiert escaped werden Dadurch kann der String Kontext in der SQL Anweisung nicht vorzeitig verlassen werden 2 3 1 berblick und Literatur Die Erstellung von Web Applikationen ist eine multidisziplin re Aufgabe Wie noch gezeigt wird kommunizieren mehrere Prozesse tiber unterschiedliche Pro tokolle und Sprachen miteinander Der Programmierer hat dabei den Uberblick ber die tats chlichen Vorg nge zu behalten und mu gleichzeitig in verschiede nen Sprachen denken und programmieren An manchen Stellen ist es unvermeid lich unterschiedliche Sprachen in derselben Datei zu verwenden oder sogar mit einer Sprache Konstrukte zu erstellen die in einer anderen Sprache ausgef hrt werden sollen beispielsweise Erstellung eines php Programms das JavaScript Code ausgibt der Daten aus der Datenbank enth lt html In dieser Anwendung wird html als Kommunikationssprache mit dem Client einem Internet Browser verwendet Obwohl g ngige Browser tolerant ge gen ber Fehlern im html Quelltext sind mu trotzdem auf Vollst ndigkeit und Standardkonformit t geachtet werden damit die Anwen
120. t Hilfe von Auth kann nun fest gestellt werden wer der Benutzer eigentlich ist Auth stellt also eine Beziehung zwischen einer aktuellen Sitzung einer SessionID und einem Benutzerdaten satz aus der user Tabelle einer userID her Dazu wird ein Login Formular be reitgestellt in dem der Benutzer seinen Namen und sein Pa wort angeben kann um sich zu authentifizieren Erst wenn der angegebene Name und das Pa wort KAPITEL 3 ENTWICKLUNGSPROZESS 42 mit den in der Datenbank abgelegten Benutzerdaten bereinstimmen gilt der Be nutzer als authentifiziert und die userID steht zur Ermittlung der Berechtigungen zur Verf gung Die abgeleitete Klasse Institut_Challenge_Auth implementiert brigens ein Challenge Response Verfahren zur Authentifizierung Dabei wird die MDS5 Pr fsumme von Benutzername Pa wort und einer zuf lligen Zeichenkette der Challenge berechnet und als Antwort zum Server retourniert Der Server er mittelt dieselbe Pr fsumme mit dem Pa wort aus der user Tabelle und berpr ft ob die beiden Pr fsummen bereinstimmen Dadurch wird das Pa wort nie im Klartext bertragen und kann nicht abgeh rt werden Die Kr nung dieser Hierarchie bildet nun Perm Diese Klasse ordnet jedem authentifizierten Benutzer jeder user1D eine oder mehrere Privilegienstufen zu Weiters kann mittels Methoden der Perm Klasse abgefragt werden ob der Benut zer ein spezielles Set von Privilegien besitzt das zum Betrachten der aktuellen
121. t in die Datenbank bernommen werden sie m ssen zuerst die Validierung erfolgreich passieren Die Validierung der Daten wird durch die form Klasse vorgenommen und verwendet nicht die globalen Variablen sondern die Steuerelemente der zu verwendende regul re Ausdruck ist eine Eigenschaft Property jedes einzelnen Steuerelementes Folglich m ssen zuerst die Steuerele mente erstellt und mit den Werten der globalen Variablen initialisiert werden Ist die Validierung erfolgreich werden die Daten in der Datenbank abgespei chert andernfalls werden Fehlermeldungen zu den falsch ausgef llten Steuerele menten ausgegeben F r die Werte der Steuerelemente gibt es also die in Tabelle 3 3 dargestellten drei M glichkeiten KAPITEL 3 ENTWICKLUNGSPROZESS 48 Datenquelle Anwendungsfall Datenbank wenn die Seite normal das bedeutet ohne vorhe rige Bet tigung einer Schaltfl che ge ffnet wird globale Variablen wenn der Datensatz abgespeichert oder ein neuer Datensatz erstellt wird leer globale Variablen Bei einem Endlosformular dient die erste Zeile das erste Formular als Eingabem glichkeit f r neue Datens tze Dieses Formular muf daher normaler weise leere Felder enthalten Nur dann wenn neu eingegebene Daten die Validierung nicht bestehen miissen die eingegebenen Werte nochmals ange zeigt werden damit sie korrigiert werden k nnen Tabelle 3 3 Werte fiir Steuerelemente Institut_form Klasse Diese Klasse di
122. tet werden auch wenn der Standort des Rechners zu Beginn der bertragung un bekannt ist MAC Adresse Global eindeutige Hardware Adresse die in jeder Netzwerkkarte fest einprogrammiert ist Nur ber die se Adresse kann das Interface tats chlich angespro chen werden 87 ANHANG A ABKURZUNGEN UND BEGRIFFE Server TCP Session Die Portnummer bestimmt welcher Server Prozef ankommende Daten bekommen soll Fiir Web Server wird tiblicherweise die Portnummer 80 verwendet Server stellen Dienste bereit die von Clients abge rufen werden k nnen Von einem Webserver kann man beispielsweise tiber das htt Protokoll Internetsei ten abrufen Selbstverst ndlich kann auch ein Server selbst zum Client werden wenn er zum Aufbau einer Internetseite einen Datenbankserver konsultiert Eine virtuelle Netzwerkverbindung zwischen zwei Rechnern tiber das Internet Sie ist eindeutig gekenn zeichnet durch die beiden IP Adressen samt Portnum mern Die beiden Rechner sind prinzipiell gleichbe rechtigt jeder der beiden k nnte unaufgefordert Da ten senden der Ablauf wird aber meist durch h here Protokolle etwa http gesteuert 88 Anhang B Loschabhangigkeiten Die folgende Tabelle zeigt die Abh ngigkeiten die beachtet werden m ssen be vor ein Datensatz gel scht oder wiederhergestellt werden darf Die Abh ngigkeiten lassen sich direkt aus dem EER Diagramm Abb 2 1 ab leiten Beim L schen eines Datensatzes d rfen kein
123. unktioniert hat sehen Sie nun das Wort gel scht und am unteren Ende der Karteikarte wird das L schdatum angezeigt Viel wahrscheinlicher ist aber der andere Fall e Wenn das L schen nicht m glich war bekommen Sie eine Liste mit den Hinderungsgr nden also allen bestehenden Beziehungen Klicken Sie der Reihe nach auf jeden der Links um die konkrete Beziehung anzuzeigen e Wenn die Person noch T tigkeiten aus bt l schen Sie die T tigkeiten Wenn die Person f r etwas verantwortlich ist Computer R ume Projekt oder Institutsleitung dann w hlen Sie an den entsprechenden Stellen einen neuen Verantwortlichen aus um die Beziehung zu l sen e Wenn alle Beziehungen gel st und alle Verantwortlichkeiten abgegeben sind k nnen Sie die Person tats chlich l schen 4 5 7 Anlegen eines neuen Raumes Stellvertretend f r viele andere Formulare wird hier gezeigt wie man einen neu en Raum eingibt Die Formulare funktionieren alle sehr hnlich deshalb gilt das gesagte auch f r andere F lle KAPITEL 4 BENUTZERHANDBUCH 81 e Loggen Sie sich mit einem Benutzernamen ein der berechtigt ist R ume anzulegen e Offnen Sie das R ume Suchformular R ume e Klicken Sie unten auf den Link zum Eingeben eines neuen Raumes Die Karteikarte ffnet sich und alle Felder sind leer Wenn Sie hier nichts ein geben k nnen haben Sie nicht die n tigen Privilegien e Fiillen Sie das Formular aus Beachten Sie bitte dazu die Hin
124. vaScript existieren zwei Handbiicher von Netscape 4 5 Es ist jedoch zu beachten da die von Microsoft implementierten JavaScript Versionen nicht vollst ndig kompatibel zum Netscape Standard sind php ist die zentrale Sprache Der Webserver arbeitet php Skripte ab um als Ergebnis html Quelltexte zu erhalten die an den Client zur ckgesendet werden Dabei werden grunds tzlich Bl cke von php Code in den html Quelltext einge baut Die Schreibweise ist vergleichbar mit JavaScript Code es wird jedoch der php Block bei Abruf der Seite durch das php Modul ausgewertet und durch seine Ergebnisse ersetzt Es ist auch erlaubt da eine Datei nur aus einem einzigen php Block besteht bzw da kein php Block existiert eine html Datei ist also immer auch ein g ltiges php Programm Zum ersten Einstieg in php ist das PHP HOWTO 7 gut geeignet Der Leser wird aber nach kurzem Studium desselben bald auf die offizielle PHP Dokumentation umsteigen wollen 8 die besonders umfassend ist und alle php Funktionen behandelt Haufig gestellte Fragen beantwortet die Zusammenfassung der deutschsprachigen php Newsgroup 9 SQL Mittels SQL wird auf die Datenbank zugegriffen Obwohl die Sprache genormt ist implementieren Datenbankhersteller jeweils propriet re Erweiterun gen um Kunden an das eigene Produkt zu binden an extended subset of SQL Um solch eine Bindung zu vermeiden l t sich MySQL im sogenannten ANSI Mode betreiben in dem
125. wand zur nderung der Beschriftung minimal BIEX Diese Ausarbeitung wurde selbstverst ndlich in BIEX verfa t Das ga rantiert h chste Stabilit t und Satzqualit t auch bei langen Texten mit Bildern und Querverweisen wie man sie von keinem Textverarbeitungssystemen bekommt KAPITEL 3 ENTWICKLUNGSPROZESS 39 Die Abbildungen wurden mit XFig erstellt XFig erm glicht die Erstellung von Linienzeichnungen mit Text und eingebetteten Bildern Durch die verschach telte Blockbildung k nnen Zeichnungsteile gruppiert und gemeinsam verschoben werden Der Export erfolgt mittels Encapsulated PostScript eps vektororientiert dadurch entstehen keine Qualit tsverluste bei der Gr enanpassung 3 2 2 Aufbau und Zusammenspiel der Klassen Als Grundlage der Webapplikation dient eine Auswahl von Klassen aus der PHP LIB PHPLIB selbst ist als frei verf gbare Sammlung von php Klassen unter phplib sourceforge net erh ltlich Die Bibliothek ist sehr ausgereift und dennoch berschaubar was eigene Anpassungen unterst tzt Zu PHPLIB existiert auch eine sehr gute Dokumentation 15 die vor Anwendung der Klassen unbedingt durchgearbeitet werden sollte Zun chst soll der Aufbau der Klassenhierarchie sowie der entstandene Mehr wert durch die Erweiterungen dargestellt werden danach folgt eine Darstellung ber den Programmablauf beim Aufruf einer Formularseite Klassenhierarchie Abbildung 3 3 zeigt die Beziehungen der Klassen un tereinander Die grau
126. weise zum Ausfiillen 4 3 e Klicken Sie auf Speichern um den neuen Raum anzulegen e Achten Sie darauf da keine Fehlermeldung angezeigt wird Sie m ssen so lange Werte korrigieren und erg nzen bis keine Fehlermeldung mehr erscheint Erst dann ist der Raum wirklich gespeichert e Sie k nnen nun den Raum mit anderen Datens tzen in Verbindung bringen Sie k nnen ins Klappenformular wechseln und bei einer Klappe den soeben erstellten Raum als Standort w hlen Sie k nnen auch ins Personenformular wechseln und bei den ffentlichen Daten einer Person den Raum als Sitz zimmer angeben Ab sofort erscheint der neu eingegebene Raum in allen Auswahllisten wo R ume angezeigt werden und Sie k nnen ihn ausw hlen 4 5 8 Eine Suchabfrage formulieren Das Suchformular erm glicht es Ihnen der Datenbank eine Frage zu stellen Sie geben an welche Felder Sie sehen m chten und welche Kriterien die Datens tze erf llen m ssen damit sie angezeigt werden Wenn Sie einfach nur Datens tze auffinden m chten dann ist das Volltext Suchformular im Service Bereich besser geeignet Geben Sie einfach einen Teil eines Namens eines Projektthemas einer Telefonklappe usw ein Verwenden Sie die in den Treffern angezeigten Links um die jeweilige Karteikarte zu ffnen Zum Erstellen einer neuen Abfrage gehen Sie so vor e ffnen Sie das Suchformular Service Center Such Abfrage KAPITEL 4 BENUTZERHANDBUCH 82 e W hlen Sie bei Suchen n
127. zeuge parallel verwendet werden Zum anderen bedurfte die bestehende Datenbank durch mangelnde Konsistenzerhal tung einer aufwendigen Wartung durch den Administrator um die Anwendung funktionsf hig zu halten Daher entstand der Wunsch nach einer m glichst umfas senden betriebssicheren dauerhaften und vor allem auch anwenderfreundlichen L sung Ziel ist es nun ausgehend von der bestehenden Datenbank das Datenmo dell zu berarbeiten und zu erweitern so da es den erweiterten Aufgaben ent spricht umfassend Bei der Erweiterung soll bewu t Platz f r zuk nftige noch nicht vorhersehbare Anforderungen eingeplant werden dauerhaft Das Daten modell wird auf einem Datenbankserver implementiert und als Grundlage f r die zu schreibende Web Anwendung ben tzt Dadurch wird auch eine Trennung von Programm und Daten erreicht unterst tzt durch eine st rkere Modularisie rung betriebssicher Die Web Anwendung mu die Datenbasis benutzerge recht pr sentieren und dabei einen Kompromi zwischen Komfort und Sicher heit finden Beim Design der Oberfl che mu besondere R cksicht auf Benutzer KAPITEL 1 EINLEITUNG 8 Orientierung genommen werden damit die Anwendung auch von den Benutzern akzeptiert wird anwenderfreundlich Die weitere Ausarbeitung teilt sich in drei gro e Teile Im folgenden Kapitel 2 wird zun chst einmal die Aufgabenstellung weiter pr zisiert um danach ber haupt zielgerichtet nach ein

Download Pdf Manuals

image

Related Search

Related Contents

  Bedienungsanleitung OpenPhone 12/12i  Moultrie L20 Digital Camera User Manual  D-Link DKT-710  Martha Stewart TG76P3739D06 Instructions / Assembly  User Manual Display and Firmware  Polaroid PMP430-4 User's Manual  V7 Computer AC Power Cable UK Plug to IEC-C13 black 2m  PERSPECTIVES DOCUMENTAIRES EN EDUCATION  テラストーンW伽x剛 取扱説明書  

Copyright © All rights reserved.
Failed to retrieve file