Manual - BERNHIST

Werbung
Anleitung
zu
BERNHIST
Version 4
Einführung, Konzept und Installation
Serge Meyer
[email protected]
Historisch – Statistische Datenbank BERNHIST
Inhaltsverzeichnis
BERNHIST in Strom der Modernisierung .................................................................................3
Die Werkzeuge ...........................................................................................................................5
Linux...................................................................................................................................5
Apache ................................................................................................................................6
MySQL ...............................................................................................................................6
PHP.....................................................................................................................................7
Das Prinzip einer dynamischen Webseite ..................................................................................8
Das Konzept von BERNHIST....................................................................................................9
Die Datenbank ....................................................................................................................9
Die Webanwendung .........................................................................................................12
Der Ablauf einer Abfrage .................................................................................................13
Zugriffskontrolle mit Sessions..........................................................................................14
Installation ................................................................................................................................15
Der Server.........................................................................................................................15
Dienste starten ..................................................................................................................19
Installation testen..............................................................................................................19
Einrichten der Datenbank .................................................................................................20
Wohin mit den Skripts? ....................................................................................................21
Datenblatt BERNHIST .............................................................................................................23
Literaturverzeichnis ..................................................................................................................24
Anhang......................................................................................................................................25
A Datenbankschema .........................................................................................................25
B Codefragmente..............................................................................................................26
2
Historisch – Statistische Datenbank BERNHIST
BERNHIST in Strom der Modernisierung
Die Geschichte und der Werdegang von BERNHIST verliefen parallel mit der Entwicklung
der Informatik. Das Projekt wurde im Verlauf der letzten zwanzig Jahre immer wieder an die
neuen Möglichkeiten der EDV angepasst um sich vor allem die Entwicklung der
elektronischen Datenspeichermedien zu Nutze zu machen.
Begonnen wurde 1984 mit einem Pilotprojekt zur Erfassung von Taufen und Sterbefällen in
Kirchenbüchern. Die Daten wurden in ein EDV-System der BEDAG eingelesen und mittels
des Statistikpakets SPSSX ausgewertet. Was zu Beginn noch gut funktionierte, wurde mit
zunehmendem Umfang des Datenbestandes schnell zu einem wilden Haufen unübersichtlich
gegliederter Daten. Innert kurzer Zeit hatte niemand der Forschungsgruppe mehr die
Übersicht. Als, möglicherweise einzigen, Ausweg aus der damaligen Situation drängte sich
eine komplette Reorganisation und Umstrukturierung des gesamten Datenbestandes auf. So
wurde im Jahr 1991 der Datenbestand in die Form eines relationalen Datenmodells gebracht.
Dies war eine sowohl richtige wie auch wichtige Entscheidung. Die relationalen
Datenbanksysteme haben sich mittlerweile durchgesetzt und sind zum Standard geworden,
um grosse Datenmengen zu verwalten. Heute läuft BERNHIST immer noch auf einer
relationalen Datenbank. Die Idee war 1991 die historisch – statistischen Daten einer grösseren
Zahl Benutzer zugänglich zu machen. So sollte der Zugriff via Netzwerk von jedem IBM –
PC mit standardisierter Software aus über eine einfach zu bedienende Oberfläche ermöglicht
werden. Zudem sollten mehrere Personen gleichzeitig mit BERNHIST arbeiten können. Um
diese Vorgaben zu realisieren, wurde BERNHIST mittels dem Betriebssystem VMS auf
einem Rechner der Informatikdienste der Uni Bern installiert und mit einer komplett in C
geschriebenen Abfrageoberfläche den interessierten Nutzer zugänglich gemacht. Um mit der
enorm schnellen Entwicklung im Informatikbereich Schritt halten zu können, wurde Mitte der
Neunzigerjahre ein neues Konzept zu einer verbesserten Nutzung von BERNHIST entworfen.
BERNHIST sollte fortan sowohl wie bisher als Netzwerk- und immer stärker als
Internetversion wie auch als CD-ROM Version verfügbar sein. In einem ersten Schritt wurde
der Datenbestand in das modernere und einfacher zu bedienende Datenbanksystem MS
Access portiert. Von dieser Ausgangslage aus wurde die Datenbank mittels einem Java
Applet und einem Delphi – Programm auf einem institutseigenen Server zum laufen gebracht.
Diese Internetversion war bis zum Hackerangriff auf den Institutsserver im Frühling 2003 frei
verfügbar. Auf MS Access basierend entstand eine CD-ROM, die durch eine Runtimeversion
auf Windows Betriebssystemen installiert werden konnte.
3
Historisch – Statistische Datenbank BERNHIST
Im neuen Jahrtausend drängte sich wiederum eine modernere, den stetig wachsenden
Bedürfnissen der Benutzer gerecht werdende Version von BERNHIST auf. Nun wurde
sowohl für die CD-ROM Version wie für die Internetversion eine Machbarkeitsstudie erstellt.
Bald einmal zeichnete sich immer deutlicher ab, dass die Realisation einer CD-ROM eher
schlecht als recht möglich ist. Der Standard der CD-Programme ist heutzutage dermassen
hoch, dass ein konkurrenzfähiges Produkt nur mit einem hohen Einsatz an Zeit, Geld und
technischem Know - How zu haben ist. Es wäre zwar technisch nicht unmöglich, eine
Nachfolgeversion der bestehenden Access CD-ROM zu erstellen, aber die schlechte
Dokumentation der Runtimeversion, der ungenügende Support des Herstellers und die
Unmöglichkeit, den nötigen Support zu leisten, zwangen bald einmal zum Abbruch des CDROM Projekts.
Um möglichst viele Probleme auf Anwenderseite schon von Beginn weg zu eliminieren,
wurde einer serverseitigen Lösung an Stelle der clientbasierten CD-ROM der Vorzug
gegeben. So kann der Anwender, egal welches Betriebssystem er einsetzt, mit dem ihm
vertrauten Browser auf den Datenbestand zugreifen. Diese Lösung ist durch die billigen
Surftarife, und der sich allmählich auch in Haushalten durchsetzenden Standleitungen (ADSL,
Cablecom) vertretbar. Zudem hat mit dem Projekt der Swisscom „Schulen ans Netz“ eine
wichtige Benutzergruppe freien Zugang zum Internet.
Dies eröffnet bei der Planung einer neuen Internetanwendung völlig neue Perspektiven und
Möglichkeiten. Die Anforderungen, die an eine zeitgemässe Internetanwendung gestellt
werden sind teilweise immer noch ähnlich wie vor zehn Jahren:
▫
Die Anwendung muss für alle Interessierten Nutzer uneingeschränkt verfügbar
sein.
▫
Die Benutzeroberfläche soll den heutigen Webstandards entsprechen und einfach
zu bedienen sein.
▫
Der Zugriff kann eingeschränkt und nur einer bestimmten Benutzergruppe gewährt
werden.
▫
Die Administration der Hard- und der Software soll möglichst einfach organisiert
und mit wenig Aufwand und ohne spezifisches Fachwissen zu bewerkstelligen
sein.
▫
Die gesamte Lösung soll möglichst kostengünstig realisiert werden.
4
Historisch – Statistische Datenbank BERNHIST
Die Werkzeuge
Um diesen Vorgaben gerecht zu werden, wurde der Entschluss gefasst, das ganze Projekt
mittels freier Software, so genannter Open Source Software, zu realisieren. Da das Herzstück
von BERHIST eine Datenbank ist, die möglichst schlank und schnell sein sollte, bot sich eine
auf Linux basierende Lösung an. Am weitesten verbreitet um eine Datenbank unter Linux ans
Internet anzubinden, ist die vielfach auch für grosse kommerzielle Anwendungen (z.B.
Yahoo, Amazon) eingesetzte Lösung LAMP (Linux (Betriebssystem), Apache (Webserver),
MySQL (Datenbank) und PHP (Skriptsprache)).
Für die Leser, denen die oben genannten Begriffe fremd sind, folgt an dieser Stelle eine kurze
Erläuterung der einzelnen Komponenten und ihrer Funktion.
Linux1
Linux ist ein vollständiges Betriebssystem, das nicht von einer renommierten Softwarefirma
entwickelt wurde, sondern innert wenigen Jahren aus der Zusammenarbeit einiger
Computerfreaks entstanden ist. Allen voran war Linus Torvalds, der nicht länger von
kommerzieller Software abhängig sein wollte und sein eigenes Betriebssystem zu entwickeln
begann. Dieser Gedanke begeisterte viele Leute rund um den Globus, die sich schon bald
tatkräftig an der Entwicklung von Linux beteiligten. Der Grundgedanke war ein freies
Betriebssystem zu schaffen. Das heisst, dass Linux gratis einsetzbar und dass der Quellcode
offen (eben Open Source) und frei verfügbar ist. Wenn man mit Linux nicht zufrieden ist,
kann der Quellcode, sofern man über die nötigen Kenntnisse verfügt, gleich selbst den
eigenen Bedürfnissen angepasst werden.
Obwohl im Gegensatz zu kommerzieller Software keine Gebrauchsanweisung mitgeliefert
wird, kann man auf unzählige Onlinedokumentationen zurückgreifen. Wenn man hier keine
Lösung findet, so wird einem mit Sicherheit in einer Linux Newsgroup geholfen.
Ein weiterer grosser Vorteil von Linux ist der modulare Aufbau der Software. Je nach
Einsatzzweck werden nur die benötigten Module installiert. Dies ermöglicht ein sehr
kompaktes, optimal auf die eigenen Bedürfnisse zugeschnittenes Betriebssystem, das keinen
unnötigen Ballast mit sich führt und so eine bestmögliche Performance erreicht. Im Prinzip
kann jedes Modul einzeln aus dem Internet heruntergeladen und installiert werden. Dies sei
aber nur sehr erfahrenen Anwendern empfohlen, die auch vor einem hohen Zeitaufwand nicht
1
http://www.linux.org/
5
Historisch – Statistische Datenbank BERNHIST
zurückschrecken. Diese Arbeit nehmen einem verschiedene Distributionen (z.B. SUSE2,
RedHat3) ab, die ein komplett einsatzfähiges Linux fixfertig auf CD oder DVD anbieten. Mit
den letzten Distributionsausgaben wurde die Installation und Konfiguration stetig vereinfacht,
so dass heute eine Linuxinstallation in etwa einer Windowsinstallation entspricht.
In den letzten Jahren hat sich Linux vom Spielzeug einiger Computerfreaks zum
ernstzunehmenden Konkurrenten von Marktleader Microsoft gemausert. Immer mehr
Universitäten, Organisationen und Firmen greifen zu Linux, wenn sie eine ebenso
kostengünstige wie auch stabile Alternative zu den Windowssystemen suchen. Dass Linux
auch von der Konkurrenz ernst genommen wird zeigt das Beispiel der Stadt München, die vor
kurzem beschlossen hat, sämtliche Server und Desktopcomputer mit Linux statt mit Windows
zu bestücken. Dies hat den Vize CEO von Microsoft dazu bewogen, extra nach München zu
reisen, um der Stadt ein besonderes Windowsangebot zu unterbreiten. Seine Reise war
vergebens, die Münchner liessen sich auch von einem billigeren Angebot nicht umstimmen.
Apache4
Wenn man sich einmal für Linux als Serverbetriebssystem entschlossen hat, und einen
Webserver betreiben will, kommt eigentlich nur Apache in Frage. Der Apache - Webserver ist
derzeit der am weitesten verbreitete Webserver im Internet. Momentan wird Apache auf
knapp 70% aller Webserver im Internet eingesetzt, Tendenz steigend (zum Vergleich:
Microsoft 20%).5 Es gibt mehrere Gründe, sich für den Apache zu entscheiden. Er ist
ebenfalls kostenlos und inklusive Sourcecode verfügbar und zudem bietet er eine sehr hohe
Performance bei vergleichsweise geringer Ressourcenauslastung, er bietet sehr viele, flexibel
einsetzbare Funktionsmöglichkeiten, und er ist relativ einfach zu konfigurieren. Je nach
Linuxdistribution wird er schon einsatzbereit mit dem Betriebssystem mitinstalliert.
MySQL6
MySQL schickt sich an, den Erfolg von Linux im Betriebssystemsektor auf dem
Datenbankmarkt zu wiederholen. Das Rezept ist eigentlich einfach: Man nehme eine
Datenbank,
die
zwar
noch
nicht
die
gleiche
2
http://www.suse.de/de/index.html
http://www.redhat.com/
4
http://www.apache.org/
5
http://news.netcraft.com/archives/web_server_survey.html
6
http://www.mysql.com/
3
6
Funktionsfülle
wie
kommerzielle
Historisch – Statistische Datenbank BERNHIST
Datenbanksysteme anbieten kann, die dafür aber zuverlässig und schnell funktioniert, ohne
allzu grosse Anforderungen an die Hardware zu stellen. Dann gebe man dieser Datenbank
eine Opensource – Lizenz, was die kostenlose Nutzung ermöglicht.
MySQL hat vor allem in den letzten Jahren als Datenbank für dynamische Webseiten weite
Verbreitung gefunden und stellt schon beinahe einen De – Facto - Standard dar. In
Kombination mit PHP oder Pearl stellt MySQL für immer mehr Webseiten die Datenbasis zur
Verfügung.
PHP7
PHP ist ein rekursives Akronym, bedeutet PHP Hypertext Processor und gehört zu den
serverseitigen Skriptsprachen. Eine Skriptsprache ermöglicht es, kleine Programme in HTML
einzubetten und auszuführen. Im Gegensatz zu clientseitigen Skriptsprachen wie z.B.
JavaScript, bei denen der Code erst durch den Browser ausgeführt wird, werden serverseitige
Skriptsprachen wie PHP schon vom Webserver interpretiert, bevor die Seite an den Browser
geschickt wird. Nachdem der PHP – Code interpretiert wurde, sendet der Webserver eine
reine Standard – HTML – Datei an den Browser. Das Skript wird komplett auf dem Server
verarbeitet. Dies hat mehrere Vorteile:
▫
Keine Probleme mit der Browser – Kompatibilität: Da die PHP – Skripte
ausschliesslich vom Webserver verarbeitet werden, braucht man sich um die
Browsereinstellungen der User nicht mehr zu kümmern. Es ist ja nicht mehr
ersichtlich und nachvollziehbar, welche Codefragmente von PHP generiert wurden,
und welche direkt in HTML codiert wurden.
▫
Zugriff auf serverseitige Ressourcen: Viele Informationen sind nur für ein auf dem
Webserver laufendes Skript verfügbar. Dazu gehören einfache Informationen wie
Datum und Zeitangaben (wäre auch mit JavaScript realisierbar, würde aber das Datum
und die Zeit des Clients anzeigen), oder aber kompliziertere Informationen wie etwa
die Daten, die in einer MySQL – Datenbank gespeichert sind.
▫
Lastverringerung auf dem Client: Bei clientseitigen Skriptanwendungen kann es bei
langsamen Computern zu beträchtlichen Verzögerungen der Anzeige kommen, weil
der Browser zuerst das Skript interpretieren muss, bevor die Webseite angezeigt wird.
7
http://www.php.net/
7
Historisch – Statistische Datenbank BERNHIST
Beim serverseitigen Skripting verlagert sich diese Last auf die Maschine, auf der der
Webserver läuft.
Nachdem nun die einzelnen Komponenten vorgestellt wurden, zeigt der nächste Abschnitt,
wie diese mächtigen Werkzeuge miteinander funktionieren.
Das Prinzip einer dynamischen Webseite
Die ganze Idee einer datenbankgestützten Webseite besteht darin, dass der Inhalt der Seite in
einer Datenbank liegt und dynamisch daraus geholt wird um Webseiten zu erzeugen, die
Leute mit einem normalen Webbrowser ansehen können. Auf der einen Seite des Systems hat
man also einen Benutzer, der eine Webseite in den Browser lädt und davon ausgeht, eine
Standard – HTML – Seite zu sehen. Am anderen Ende ist der Inhalt der Webseite, der sich in
einer oder mehreren Tabellen einer MySQL – Datenbank befindet, und diese Datenbank
weiss
Webserver
Daten
holen
Dynamische
Seite
PHP
Webbrowser
MySQL
PHPDatei
Seitenanforderung
Abbildung1: PHP vermittelt zwischen dem Webserver und der Datenbank.
lediglich, wie sie auf Anfragen oder Befehle antworten muss. Wie in der Grafik zu sehen ist,
vermittelt PHP zwischen beiden Anforderungen, denn es spricht beide Sprachen. PHP
verarbeitet die Seitenanforderung, holt die gewünschten Daten aus der MySQL – Datenbank
und sendet sie dann als formatierte HTML – Seite an den Browser. In den meisten Fällen wird
PHP in ein HTML Grundgerüst, welches für das Layout der Seite zuständig ist, eingebettet
und zeigt den gewünschten Inhalt an der gewünschten Stelle in der Webseite an. Webdesign
8
Historisch – Statistische Datenbank BERNHIST
mit Hilfe von PHP ist also auch ein Konzept, um Inhalt und Form voneinander zu trennen.
Weiterführende Möglichkeiten dieser Technik und deren Vorteile werden zu einem späteren
Zeitpunkt noch diskutiert.
Das Konzept von BERNHIST
Was bedeutet nun die Theorie der letzten Seiten konkret in Bezug auf BERNHIST? Der erste
Schritt zur neuen Version war die Portierung der Access – Datenbank auf einen MySQL –
Server. Die Datenbankstruktur wurde zuerst 1:1 übernommen und anschliessend vereinfacht.
Die aktuelle Version von BERNHIST besteht aus verschiedenen PHP – Skripts, die auf
Anfrage eines Benutzers vom PHP – Interpreter eines Apache – Webservers ausgeführt
werden, die verlangten Daten aus der Datenbank abfragen und das Resultat an den Browser
des Benutzers senden. So ist es möglich von jedem Internetanschluss aus auf die gewünschten
Daten, die in BERNHIST gespeichert sind, zuzugreifen.
Die Datenbank
Das Herzstück von BERNHIST ist die Datenbank, in der die Daten strukturiert gespeichert
sind. Hier entscheidet sich, wie die Daten verwaltet werden, ob das Datenbankschema optimal
ist und ob dieses eine sinnvolle Abfrage ermöglicht. Wenn dieses Fundament nicht besteht,
können mit keiner auch noch so ausgeklügelten Anwendung Daten aus BERNHIST abgefragt
werden. Aus diesen Gründen ist auf die Administration der Datenbank grossen Wert zu legen
und gehört zu den wichtigsten Aufgaben des Administrators von BERNHIST. In der
ursprünglichen Konfiguration ist ein MySQL – Server der Version 3.23.56 aufgesetzt. Wie
bei OpenSource – Software üblich, werden ständig neue und verbesserte Versionen
veröffentlicht.
Da
MySQL
noch
nicht
über
alle
Funktionen
eines
kompletten
Datenbanksystems verfügt, sind die Updates bei dieser Software besonders häufig. Dies ist
aber kein Grund zur Beunruhigung, die Funktionen, die bei der momentanen Version
implementiert sind, reichen für den Betrieb von BERNHIST vollständig. Solange keine
bahnbrechenden Neuerungen wie z.B. ein GUI (Graphical User Interface) anstehen, gibt es
keinen Grund für einen Versionswechsel. Je nach eingesetzter Linuxversion kann diese
sowieso variieren.
Anders als bei Access, verfügt MySQL nicht über eine grafische Benutzerschnittstelle, mit
der an der Datenbank manipuliert werden kann. Um die Datenbank zu warten oder um
9
Historisch – Statistische Datenbank BERNHIST
Änderungen vorzunehmen stehen zwei Möglichkeiten zur Verfügung. Je nach Einsatzzweck
ist eher der einen oder der anderen der Vorzug zu geben. Einerseits ist es möglich direkt via
Konsole auf den Datenbankserver zuzugreifen. Dies geschieht direkt am Server oder remote
von einem Terminal8 aus. Dies setzt aber Grundkenntnisse von Linux und von MySQL
voraus, da alle Manipulationen via Kommandozeile erfolgen müssen. Als Referenz sei an
dieser Stelle das Buch MySQL9 von Michael Kofler empfohlen. Weitere Bücher zum Thema
sind in der Literaturangabe aufgeführt. Die etwas benutzerfreundlichere Lösung ist
phpMyAdmin10. Dies ist eine Ansammlung von komplett in PHP geschriebenen Skripts, die
direkt auf dem Webserver in einem eigenen Verzeichnis liegen. Mit Hilfe dieser Skripts kann
mit einem Browser auf die Datenbank zugegriffen werden. Mit diesem Werkzeug steht einem
der volle Umfang der Datenbankfunktionen (erstellen, ändern, löschen, etc) zur Verfügung.
Um phpMyAdmin fehlerfrei zum laufen zu bringen, muss lediglich die Datei config.inc.php
dem System angepasst werden. Dabei muss drei Variabeln der richtige Wert zugewiesen
werden:
Die Variable $cfg['PmaAbsoluteUri'] gibt den absoluten Ort von phpMyAdmin an. Beim
Webserver von BERNHIST ist das:
$cfg['PmaAbsoluteUri'] = 'http://hist41.unibe.ch/phpMyAdmin';
Zudem muss phpMyAdmin über die Zugriffsrechte des Datenbankservers verfügen. Das
geschieht über eine Variable für den Benutzernamen und über eine Variable für das Passwort.
Zum Thema Sicherheit: Dieses Passwort steht in Klartext in einer Datei auf dem Server! Aus
diesem Grund wird ein Benutzer erstellt, der nur Zugriff auf die Datenbank bernhist und
nicht auf den ganzen Server hat. Es sollte ein Passwort verwendet werden, das nicht auch
anderweitig in Gebrauch ist!
$cfg['Servers'][$i]['user']
= 'bernhist';
$cfg['Servers'][$i]['password']
= '123456';
Wenn man sich mit Hilfe eines dieser Werkzeuge Zugang zum Datenbankserver verschafft
hat, sieht man, dass die Datenbank BERNHIST aus sechs Tabellen besteht:
8
Um von einem entfernten Windowsrechner auf einen Linuxserver zuzugreifen eignet sich das Programm SSHClient (http://hist41.unibe.ch/downloads/index.html).
9
Kofler, Michael: MySQL Einführung .Programmierung, Referenz. Addison-Wesley 2001.
10
http://www.phpmyadmin.net
10
Historisch – Statistische Datenbank BERNHIST
feedback_db
Speichert die Feedbacks der Feedbackseite, keine relevanten Daten.
obs_base
Enthält alle Werte. Grösste und wichtigste Tabelle.
ort1
Enthält alle Orte.
quellenthema
Enthält alle Quellenbegriffe.
thema
Enthält alle standardisierten Quellenbegriffe.
thema_in
Enthält die Verknüpfungen von Thema und Quellenthema.
Wahrscheinlich stellt man sich als erstes die Frage, weshalb sowohl Quellenbegriffe wie auch
standardisierte Quellenbegriffe je eine Tabelle in der Datenbank für sich in Anspruch nehmen.
Diese Einteilung wurde von Peter Häberli und Klaus Imfeld bei der Erstellung von
BERNHIST V2.011 vorgenommen. Um einen möglichst übersichtlich organisierten
Themenkatalog zur Auswahl stellen zu können, mussten die in der Datenbanktabelle
quellenthema unstrukturiert abgelegten Themen mit einem standardisierten Oberbegriff
versehen werden. Diese standardisierten Begriffe befinden sich separiert von den
Quellenthemen in der Tabelle thema. Die Tabelle thema_in speichert nun die Verknüpfung
von Quellenthemen mit standardisierten Themen.
In der Tabelle ort1 sind die Orte aller Hierarchieebenen gespeichert. Hier wurde die Struktur
der Tabelle den neuen Anforderungen angepasst. Um die Abfrage der Orte in einer
hierarchischen Baumstruktur zu ermöglichen, wurde bisher ein rekursiver Algorithmus
verwendet. Um die Geschwindigkeit der Abfrage zu erhöhen und gleichzeitig den
Arbeitsspeicher des Servers zu entlasten, wurde die Datenbanktabelle um fünf Spalten
erweitert, die jeweils die Hierarchiestufe anzeigen. So ist nun ersichtlich, auf welchen Level
(Kanton, Landesteil, Amtsbezirk, Kirchgemeinde, Einwohnergemeinde) sich ein Ort befindet
und welche Orte ihm über- und welche untergeordnet sind.
In der Tabelle obs_base sind alle in BERNHIST verfügbaren Werte gespeichert. Zu jedem
Wert hat es neben dem Primärschlüssel je eine Spalte für das Start- und das Endjahr, den
Fremdschlüssel des Ortes und den Fremdschlüssel des Themas. So kann mit Angabe von
Start- und Endjahr, Ort- und Themenschlüssel der zugehörige Wert abgefragt werden.
Auf der Startseite von BERNHIST besteht die Möglichkeit ein Feedback zu schreiben. Um
dies zu ermöglichen und die Feedbacks via Webseite anzuzeigen, müssen sie in einer
Datenbank gespeichert werden. Diese Aufgabe übernimmt die feedback_db, die ansonsten mit
der Datenabfrage nichts zu tun hat.
Das detaillierte Datenbankschema befindet sich im Anhang.
11
Häberli Peter, Imfeld Klaus: HGIS BERNHIST V2.0. Seminararbeit Uni Bern 1995.
11
Historisch – Statistische Datenbank BERNHIST
Ein weiterer Grund die bestehenden Datenbank zu erweitern, wäre die Implementation eines
Benutzermanagements. Falls es möglich sein sollte, eine grössere Anzahl von Benutzern zu
verwalten, kommt man nicht um zusätzliche Datenbanktabellen, die einem diese Arbeit
abnehmen, herum. Wie eine einfache Zugangskontrolle ohne Datenbank realisiert werden
kann, wird im Abschnitt zur PHP – Programmierung und im Anhang gezeigt.
Die Webanwendung
Anstatt sich auf ein blosses Abfragen von historisch – statistischen Daten zu beschränken,
wurde BERNHIST als Portal konzipiert, das dem Benutzer die Möglichkeit bietet mehr über
BERNHIST und seine Entstehung zu erfahren, sich mit anderen Benutzern via Feedback
auszutauschen und zeigt wo weiterführend Informationen erhältlich sind. Wie bei jedem
Portal im Internet, wird sich nach einiger Zeit weisen, welche Dienste auf Interesse stossen
und welche eher nicht. Es ist auch denkbar die Webseite den Bedürfnissen der Benutzer
entsprechend auszubauen.
Da BERNHIST auf einem Drei – Achsen – Modell basiert muss auch eine für den Benutzer
logische Abfrage nach den drei Achsen Raum, Thema und Zeit geschaffen werden. Jeder
Wert kann somit durch die folgenden drei Achsen festgehalten werden:
▫
Raum: geografischer Bezugsort, auf welchen sich der Wert bezieht.
▫
Thema: inhaltliche Aussage, die dem Wert zugeordnet ist.
▫
Zeit: Zeitpunkt oder –intervall, welches mit dem Wert korrespondiert.
In dieser Reihenfolge ist die Abfrage, durch die der Benutzer geführt wird auch organisiert:
start.php
ort.php thementree.php
thema.php
Abbildung 2: Ablauf der Abfrage.
12
abfrage.php
result.php
Historisch – Statistische Datenbank BERNHIST
Damit die Abfrage funktioniert, müssen in jedem Skript zwei Dateien eingebunden werden.
Zum einen ist die Verbindung zum Datenbankserver in der Datei conn.php im Verzeichnis
conn ausgelagert. Dies hat den Vorteil, dass wenn sich die Zugangsdaten einmal ändern
sollten, nur eine Datei modifiziert werden muss. In den Skripts mit den Abfragebäumen, muss
auf die Datei TreeMenu.php verwiesen werden. Bei einer Neuinstallation ist darauf zu achten,
dass diese Zusatzdateien vorhanden sind und dass die Pfadangaben in den Skripts stimmen.
Die Datei header.php, die für den Kopf jeder Seite verantwortlich ist, ist ebenfalls mit dem
include – Befehl jeder Webseite beigefügt, trägt aber nichts zum Gelingen einer Abfrage bei.
Der Ablauf einer Abfrage
▫
start.php: Auf dieser Seite werden alle Orte aus der Tabelle ort1 der Datenbank
bernhist ausgelesen und ihrer Hierarchiestufe entsprechend im Baum angeordnet. Alle
Orte erscheinen als Link, der bei einem Mausklick den Key, den Namen und den
Orttyp des angeklickten Ortes an die Seite ort.php weitergibt.
▫
ort.php: Dient dem Benutzer nur zur Überprüfung des gewählten Ortes und führt ihn
weiter zur Themenauswahl. Im Falle dass der Benutzer unabsichtlich auf einen
falschen Ort geklickt hat, kann er von hier aus zur Ortauswahl zurückkehren.
▫
thementree.php: Auf dieser Seite werden alle standardisierten Themen und alle
Quellenthemen aus der Datenbank geholt und nach Themenbereich gegliedert. Alle
wählbaren Themen erscheinen als Link, der bei einem Mausklick den Key, das Thema
und den Thementyp an die Seite abfrage.php weitergibt.
▫
abfrage.php: Dies ist die eigentliche Hauptseite der Abfrage. Bis hier hat der Benutzer
seinen gewünschten Ort und sein gewünschtes Thema ausgewählt. Mit diesen beiden
Keys wird nun in der Datenbank überprüft, zu welchen Jahren Werte zu den
gewünschten Variabeln verfügbar sind. Sind zu einer Ort – Thema – Kombination
keine Werte vorhanden, wird dies dem Benutzer an dieser Stelle angezeigt. Falls
Daten vorhanden sind, ist ersichtlich zu welchen Jahren dies der Fall ist und wie viele
Datensätze gefunden wurden. Die verfügbaren Jahrzahlen werden als Start- und als
Endjahr in einer Menüliste angezeigt, was dem Benutzer eine Eingrenzung des
Zeitraumes erlaubt. Nachdem alle drei Achsen bestimmt sind, kann die Abfrage
gestartet werden.
▫
result.php: Auf dieser Seite werden alle die vom Benutzer gewünschten Daten
angezeigt. Um den Umgang und die weiter Nutzung zu erleichtern, sind noch einige
13
Historisch – Statistische Datenbank BERNHIST
Komfortfunktionen implementiert. Es besteht die Möglichkeit sich die Daten per
Mausklick als Liniendiagramm anzeigen zu lassen. In einem Popup – Fenster
erscheint eine dynamisch generierte Grafik. Sie hat die Funktion, dem Benutzer eine
praktische Übersicht über die gewählten Daten zu liefern um schneller über deren
weitere Verwendbarkeit zu entscheiden. Um die Daten professioneller grafisch
aufzubereiten, sollte auf ein Statistikprogramm zurückgegriffen werden. Um dies zu
vereinfachen wird ein Export nach Microsoft Excel angeboten. Der Export nach dem
universell einsetzbaren Dokumentformat PDF rundet die Möglichkeiten der
Datenweiterverwendung ab.
Zugriffskontrolle mit Sessions
Damit nicht alle Surfer in Internet vollen Zugang zu den Daten haben, ist der Einstieg in die
Abfrage mit Benutzername und Passwort gesichert. Um Manipulationen an allen geschützten
Seiten auszuschliessen, bietet sich in PHP der Einsatz einer Session an. Mit dem Start einer
Session wird automatisch eine Sessionidentifikation generiert und als Cookie auf dem
Rechner des Benutzers hinterlegt. Eine Session bietet nun die Möglichkeit, verschiedene
Variabeln zu speichern, auf die solange zurückgegriffen werden kann, wie die Session aktiv
ist. Um Daten aus BERNHIST abzufragen wird nun nach der Variabel $authorized in der
aktuellen Session verlangt. Diese wird aber nur registriert, wenn zuvor der richtige
Benutzername und das richtige Passwort eingegeben und verifiziert wurden. Erst wenn beide
Angaben stimmen, wird mit dem Befehl session_register(´authorized´); die Variabel
in der Session registriert und dem Benutzer Zugang zu den Daten gewährt. Der Klick auf
Logout, führt auf eine Seite auf der nichts anderes gemacht wird als mit dem Befehl
session_unregister(´authorized´);
die Zugangsvariabel wieder aus der Session zu
löschen.
Der Sourcecode aller HTML – Seiten und aller PHP – Skripte ist auf beigelegter CD
verfügbar. Weiter Kopien befinden sich im Historischen Institut sowohl auf CD wie auf dem
Institutsserver.
14
Historisch – Statistische Datenbank BERNHIST
Installation
Sollte dem Server einmal etwas zustossen oder will man die Webanwendung samt Datenbank
auf einem anderen Server laufen lassen, so kommt man um eine Neuinstallation des
kompletten Systems nicht herum. Alle Software und sämtlicher Code der benötigt wird, liegt
diesem Manual bei. Die Anleitung beschreibt zuerst die Installation von Linux samt dem
Apache Webserver und dem Datenbankserver MySQL. Es wird ein RedHat Linux der
Version 9 (shrike) verwendet. Diese oder aktuellere Versionen sind entweder frei verfügbar
und können vom Internet heruntergeladen12 werden oder es besteht die Möglichkeit die CD’s
samt Handbuch im Handel zu kaufen.
Der Server
Bevor die Anleitung der Installation von Linux beginnt, noch ein Wort zur Hardware. Im
Gegensatz zu früheren Distributionen spielen die einzelnen Hardwarekomponenten keine
grosse Rolle mehr, respektive stellen sie kein Hindernis bei der Installation mehr dar. Wenn
keine exotischen Grafikkarten oder ähnliches verwendet wird, erkennt ein modernes Linux
alle wichtigen Bestandteile selbst und installiert analog zu Windows die passen Treiber gleich
mit. Es ist empfohlen für die Installation und den Betrieb von BERNHIST einen Rechner zu
verwenden, der mindestens mit einem Pentium III Prozessor und mit 512 MB Arbeitsspeicher
ausgestattet ist. Die Grösse der Festplatte spielt nur eine untergeordnete Rolle.
Um die Installation zu beginnen, muss der Computer mit eingelegter CD1 gestartet werden.
Es erscheint ein Menu, das durch die verschiedenen Installationsschritte führt und mehr oder
weniger selbsterklärend ist. Die wichtigen Punkte, die es zu beachten gilt sind hier aufgeführt.
Zuerst muss die Installationssprache (German) und die Tastatur (Swiss German) gewählt
werden. Bei der Mouseerkennung sollte trotz einer umfangreichen Auswahl an Möglichkeiten
auf Experimente verzichtet werden. Am sichersten ist die vom System gewählte
Voreinstellung. Da keine der vordefinierten Installationen den Anforderungen von
BERNHIST entspricht, muss die Option Benutzerdefiniert gewählt werden. Das ermöglicht
eine gezielte Auswahl der benötigten Module und man hat die Möglichkeit Softwarepakete
die hier nicht von Nutzen sind (Grafik, Sound, Film, etc…) auszuschliessen. Diese Auswahl
erfolgt erst später.
12
http://www.redhat.com/download/products.html
http://www.linuxiso.org/
15
Historisch – Statistische Datenbank BERNHIST
Bevor irgendetwas auf die Festplatte geschrieben werden kann, wird diese neu formatiert. Es
ist empfohlen, die automatische Partitionierung zu verwenden, die noch zweimal nachfragt,
ob man auch wirklich sicher sei alles zu löschen und alle Linuxpartitionen in diesem System
zu entfernen. Dies ist immer mit Ja zu beantworten.
Im nächsten Fenster wird der Bootloader konfiguriert. Hier sind alle Einstellungen wie vom
System vorgeschlagen zu belassen und kein Passwort zu setzen. Sonst muss bei jedem
Startvorgang dieses Passwort eingegeben werden, was ein Neustart von einem entfernten
Rechner verhindern würde.
Die Netzwerkkarte (eth0 / DHCP) sollte erkannt worden sein und die Einstellung des
Hostnamens erfolgt automatisch über DHCP (Dynamic Host Configuration Protocol).
Die nächsten Benutzerdefinierten Änderungen erfolgen wie in unten stehender Abbildung
gezeigt bei den Einstellungen der Firewall. Hier muss das Sicherheitslevel des Systems auf
Mittel gestellt und die Firewallregeln müssen benutzerdefiniert festgelegt werden. Das
geschieht mit Häkchen, die bei eth0, WWW (HTTP), FTP, SSH und DHCP gemacht werden
müssen.
16
Historisch – Statistische Datenbank BERNHIST
Bei der Sprachunterstützung wählt man German (Switzerland) und mit ein wenig scrollen und
suchen findet man bei den Ländereinstellungen Europa/Zürich.
Das nächste Fenster ist das Wichtigste der ganzen Installation. Hier muss das Passwort für
den root festgelegt werden. Root ist in Unix / Linux – Umgebungen so etwas wie der
Administrator bei Windows. Wenn man sich als root anmeldet, verfügt man über alle Rechte
des Systems. Jede Manipulation am Betriebssystem verlangt nach dem Rootpasswort. Das
heisst, ohne dieses Passwort kann der Computer neu installiert werden. Hoffentlich reicht
diese kurze Ausführung, um die Bedeutung dieses Passwortes zu unterstreichen.
Im nächsten Schritt muss die Authentifizierung konfiguriert werden. Es können die
Standardwerte übernommen werden. Sowohl die MDS– wie auch die Shadow – Passwörter
müssen aktiviert sein.
Bevor nun das Programm mit der Installation beginnt, besteht jetzt die Möglichkeit das
Betriebssystem benutzerdefiniert mit den einzelne Komponenten zusammenzustellen. Die
meisten Einstellungen wie die Wahl des Desktops, sind Geschmackssache und nur für den
Administrator relevant. Wichtig ist das Server Konfigurationstool, der Webserver und der
SQL – Datenbankserver. Sowohl beim Web- wie beim Datenbankserver müssen mit einem
Klick auf die Details weitere Änderungen vorgenommen werden. Wie in der nächsten
17
Historisch – Statistische Datenbank BERNHIST
Abbildung ersichtlich ist, öffnet sich mit einem Mausklick auf den Link Details ein kleines
Fenster in dem ersichtlich ist, was standardmässig installiert wird und was nicht. Wie auf
Seite 7 in diesem Manual beschrieben, wird der PHP – Code vom Webserver interpretiert und
dieser generiert anschliessend die HTML – Seiten, die der Surfer zu sehen bekommt. Damit
der Webserver weiss, mit welchen Seiten er was zu tun hat, wird ein PHP – Interpreter als
Modul in den Webserver integriert. Genau diese Möglichkeit hat man nun in dieser
Detailansicht des Webservers. Damit die PHP – Skripte überhaupt interpretiert werden
können, müssen alle PHP – Module gemäss der Abbildung mitinstalliert werden. Mit einem
Klick auf Ok schliesst sich das Detailfenster und es bleibt noch die Auswahl des richtigen
Datenbankservers.
Wie zuvor muss auch bei der SQL – Datenbank das Detailfenster geöffnet und mit einem
Häkchen der für BERNHIST relevante Datenbankserver mysql – server ausgewählt werden.
Nach dem Schliessen des Fensters mit OK, wird durch einen Mausklick auf Weiter der
Installationsprozess in Gang gesetzt. Unabhängig davon welche Softwarepakete zuvor
ausgewählt wurden, verlangt der Installationsprozess nach allen drei CD’s.
18
Historisch – Statistische Datenbank BERNHIST
Ist die Installation fertig, startet man den Computer neu und meldet sich mit dem
Benutzernamen root und dem Rootpasswort an.
Dienste starten
Um einen funktionierenden Webserver mit einem Datenbankserver betreiben zu können,
müssen beide Dienste noch gestartet werden. Damit diese beiden Server nach jedem
Systemstart zur Verfügung stehen, empfiehlt es sich diese Startvorgänge zu automatisieren.
Dies erreicht man unter dem Hauptmenu > Systemeinstellungen > Servereinstellungen >
Dienste. Von da aus lassen dich alle Dienste starten, stoppen oder automatisieren. Wichtig ist
nun, dass sowohl bei httpd (Webserver) und bei mysqld (Datenbankserver) ein Häkchen
gemacht wird. Mit je einem Klick auf den Startknopf erreicht man, dass die Dienste
unmittelbar gestartet werden.
Installation testen
Um die frische Installation und die eben gestarteten Dienste zu testen, öffnet man eine leere
Textdatei und schreibt folgenden Code hinein:
<?php
phpinfo();
?>
und benennt sie mit phpinfo.php. Diese Testdatei, bei der die Endung .php wichtig ist, wird
nun im Webroot mit dem Pfad /var/www/html gespeichert. Webroot ist das Verzeichnis, das
durch Eingabe des Rechnernamens oder von Localhost im Browser angezeigt wird. Um die
Testdatei im Browser zu betrachten muss folgende Adresse eingegeben werden:
localhost/phpinfo.php oder wenn die Netzwerkeinstellungen bereits gemacht sind:
http://hist41.unibe.ch/phpinfo.php
Wenn die PHP – Angaben im Browser erscheinen, funktioniert das Zusammenspiel des
Webservers mit dem PHP – Interpreter.
19
Historisch – Statistische Datenbank BERNHIST
Der nächste und letzte Schritt, damit BERNHIST über das Internet verfügbar ist, ist die
Installation der HTML – Seiten und der PHP – Skripte und die Anbindung der Datenbank.
Einrichten der Datenbank
Bevor die Datenbank von Nutzen ist, muss sie zuerst mit Daten gefüttert werden. Als erster
Schritt muss eine Datenbank mit dem Namen bernhist erstellt werden. Am einfachsten ist dies
via phpMyAdmin (Seite 9), wo gleich von der Hauptseite aus neue Datenbanken erstellt
werden können. Selbstverständlich kann auch von der Konsole aus mit SQL eine neue
Datenbank erstellt werden. Die restliche Struktur wird mit SQL – Dateien, die auf der CD im
Verzeichnis sql liegen, automatisch erstellt. In diesen SQL – Dateien, es hat pro Tabelle eine
gleichnamige Datei (z.B. obs_base.sql), sind sowohl die Struktur mit den Spalten und ihren
Bezeichnungen wie auch alle zugehörigen Daten, also der eigentliche Inhalt der Datenbank,
gespeichert. Wenn die Datenbank erstellt ist, können die SQL – Dateien relativ einfach
eingelesen werden. Der einfachere Weg führt wiederum über phpMyAdmin, wo der Pfad
einer Batchdatei angegeben werden kann, und mit einem Klick auf Ok wird die entsprechende
Tabelle erstellt und mit den Inhalten gefüllt. Dieses Vorgehen funktioniert aber nur bis zu
20
Historisch – Statistische Datenbank BERNHIST
einer gewissen Grösse der SQL – Dateien. Da aber die Datei obs_base.sql die 100 MB Grenze deutlich überschreitet, muss zum Einlesen auf die Konsole zurückgegriffen werden.
Dieser Vorgang sei hier kurz beschrieben:
Als erstes muss sichergestellt sein, dass man über root - Rechte verfügt. Falls nicht, wird im
Terminal der Befehl su eingegeben, anschliessen wird nach dem root – Passwort verlangt.
Zum einlesen der Datei obs_base.sql muss folgendes Kommando eingetippt werden:
>mysql –u root –p bernhist < obs_base.sql
Enter password: xxx
An Stelle von xxx muss das root – Passwort eingegeben werden.
Wohin mit den Skripts?
Wo und in welchem Verzeichnis die Webseiten und Skripts genau liegen spielt nur eine
untergeordnete Rolle. Wichtig ist, dass alle Pfadangaben stimmen und aus diesem Grund ist
es am einfachsten, die bestehende Struktur zu übernehmen.
Der Pfad zum Verzeichnis, wo die Webseiten liegen müssen (der so genannte Webroot ) ist:
/var/www/html
Um Ordnung auf dem Server zu haben, wird hier ein Verzeichnis bernhist angelegt, wo alle
weiteren Dateien abgelegt werden. Die wichtigsten Verzeichnisse hier sind:
▫
conn mit der Datei conn.php, die für die Verbindung zur Datenbank von allen Skripts
benötigt wird,
▫
png das alle Bilddateien enthält und
▫
d (für Deutsch, andere Sprachversionen könnten an dieser Stelle mit einem eigenen
Verzeichnis verzweigt werden) das alle weiteren Dateien zur Abfrage enthält.
Die weitere Aufteilung der Dateien ist folgendermassen organisiert:
▫
admin enthält alle Skripte die zur Administration von BERNHIST benötigt werden
(Einlesetool).
▫
content ist das Verzeichnis, das alle Skripte der Abfrage (Seite 12) enthält.
21
Historisch – Statistische Datenbank BERNHIST
▫
css enthält alle Cascading Style Sheets.
▫
demo hat den identischen Inhalt wie das Verzeichnis content, ohne aber die
Möglichkeit zur Datenabfrage.
▫
menu ist das Verzeichnis der eigentlichen Webseiten, die erscheinen wenn ein Surfer
die BERNHIST – Seite besucht.
▫
Treemenu.js und Treemenu.php sind die beiden Dateien, die für den Aufbau des
Auswahlbaumes von Ort und Thema verantwortlich sind und sollten weder geändert
noch an einem anderen Ort abgespeichert werden.
Nun ist der Webserver bereit die ersten Surfer zu empfangen. Wird in einen Browser die URL
http://hist41.unibe.ch/bernhist/d/menu/index.php
eingetippt, erscheint nun die Startseite von BERNHIST. Um Dateien von einem entfernten
Computer auf den Server zu kopieren eignet sich das Programm WinSCP13, das ebenfalls auf
der CD verfügbar ist.
Vielleicht mag dem Leser dieser Anleitung die ganze Installationsprozedur etwas mühsam
und kompliziert vorkommen. Es ist aber möglich, innert weniger Stunden ein komplett neues
System aufzusetzen und BERNHIST in kurzer Zeit der Öffentlichkeit zugänglich zu machen.
13
http://winscp.vse.cz
22
Historisch – Statistische Datenbank BERNHIST
Datenblatt BERNHIST
Rechnername:
hist41
URL:
http://hist41.unibe.ch
IP – Adresse:
130.92.61.41
Subnet:
255.255.255.0
Gateway:
130.92.61.1
DNS 1:
130.92.9.52
DNS 2:
130.92.9.51
Root – Passwort:
7wU45%A
Die Internetadresse http://www.bernhist.ch wird von Namecenter verwaltet. Auf deren
Webseite besteht die Möglichkeit die Zielverzeichnisse der Hauptdomain und der
Subdomains zu managen.
URL:
http://www.namecenter.ch
Id:
[email protected]
Passwort:
Urs314159
www.bernhist.ch
http://hist41.unibe.ch/bernhist/d/menu/index.php
statistik.bernhist.ch
http://extremetracking.com/open?login=bernhist
admin.bernhist.ch
http://hist41.unibe.ch/bernhist/d/admin/index.php
Im weiteren kann eine eMail – Weiterleitung eingerichtet werden. Wenn keine speziellen
Adressen definiert sind, werden alle eMails @bernhist.ch, egal was vor dem @ - Zeichen
steht, an die festgelegte Weiterleitungsadresse (meist die des Administrators von BERNHIST)
gesendet.
MySQL – Version:
3.23.54
MySQL – Benutzername:
bernhistadmin
MySQL – Passwort:
topsecret
URL von phpMyAdmin:
http://hist41.unibe.ch/phpMyAdmin/index.php
23
Historisch – Statistische Datenbank BERNHIST
Literaturverzeichnis
Eilebrecht Lars, Rath Nikolaus, Rohde Thomas: Apache Webserver, Installation,
Konfiguration, Administration. mitp – Verlag 2002.
Greenspan Jay, Bulger Brad: MySQL / PHP – Datenbankanwendungen. mitp – Verlag
2001.
Hässler Ulrike: Cascading Stylesheets, Stil mit <Stil>. Springer – Verlag 2003.
Kemper Alfons, Eickler André: Datenbanksysteme, Eine Einführung. Oldenbourg Verlag
1997.
Kofler Michael: MySQL, Einführung, Programmierung, Referenz. Addison - Wesley 2001.
Kuhlmann Gregor, Müllmerstadt Friedrich: SQL, Der Schlüssel zu relationalen Datenbanken. Rowohlt – Verlag 2000.
Meier Andreas: Relationale Datenbanken, Eine Einführung für die Praxis. Springer - Verlag
1998.
Pfister Christian: Geschichte des Kantons Bern seit 1798, Band IV, Im Strom der
Modernisierung, Bevölkerung, Wirtschaft und Umwelt, 1700-1914. Historischer Verein des
Kantons Bern, Bern 1995.
Pfister, Christian; Egli, Hans-Rudolf [Hg.]: Historisch-Statistischer Atlas des Kantons
Bern 1750-1995, Umwelt, Bevölkerung, Wirtschaft, Politik. Historischer Verein des
Kantons Bern, Bern 1998.
Samar Richard, Stocker Christian: PHP de Luxe, Fortgeschrittene PHP – Programmierung. mitp – Verlag 2002.
Shafer Dan, Yank Kevin: Cascading Stylesheets, Anspruchsvolle Websites mit CSS
gestalten. Dpunkt.verlag 2004.
Taggesell Dirk: PHP4, Dynamische Webseiten mit Apache, PHP und MySQL. dtv 2001.
Yank Kevin: PHP und MySQL, Schritt für Schritt zur datenbankgestützten Website.
Dpunkt.verlag 2002.
24
Historisch – Statistische Datenbank BERNHIST
Anhang
A Datenbankschema
25
Historisch – Statistische Datenbank BERNHIST
B Codefragmente
Dieser Abschnitt soll dazu dienen, einzelne wichtige Ausschnitte des PHP – Codes zu
kommentieren und genauer zu erläutern.
Überprüfung von Benutzernamen und Passwort:
session_start();
//Session wird gestartet
if ($_POST['username'] == 'bernhist' and
$_POST['password'] == 'topsecret')
$_SESSION['authorized'] = true;
//entsprechen die Variabeln den
//verlangten Vorgaben
//wenn ja, wird die Variable
//$authorized auf true gesetzt
//und in der Session registriert
session_register('authorized');
if (!$_SESSION['authorized']):
//prüft ob $authorized nicht true
//ist
//der Header kommt auf jede Seite
include ("header.php");
include ("error.php");
//die Errormessage
else:
//falls $authorized true ist
Hier kommen nun die supergeheimen Inhalte.
Variabeln auslesen:
Zuerst werden alle Variabeln, die sich noch im $result der SQL – Abfrage befinden mit dem
Befehl mysql_fetch_array() in den Array $row gelesen.
Jetzt werden die einzelnen Werte der Tabellenfelder (KEY, NAME, TYPE) einer Variabel
zugewiesen. So kann auf die gewünschten Werte zugegriffen werden. Der ganze Prozess
verläuft in einer while – Schlaufe, die den Array bis ans Ende durchläuft. Es ist darauf zu
achten, wo die while – Schlaufe beendet wird.
while($row = mysql_fetch_array($result)){
$key = $row["KEY"];
$name = $row["NAME"];
$type = $row["TYPE"];
$value = $key."|".$name."|".$type;
echo .......;
}
//hier könnte eine Ausgabe erfolgen
//Ende der while – Schlaufe
26
Historisch – Statistische Datenbank BERNHIST
Die Variabel $value dient dem „Transport“ von mehreren Variablen von einer Webseite auf
die Nächste. Beim Zusammenhängen wurde zur Trennung das | - Zeichenverwendet. Um
diese wieder zu entpacken, wird der String an jeder Stelle mit einem | - Zeichen getrennt.
Folgender Code splittet die Variable wieder in die ursprünglichen Werte:
$ortarray = explode("|",$ortvar);
$ortkey = $ortarray[0];
$ortname = $ortarray[1];
$orttype = $ortarray[2];
Zum Schluss noch die SQL – Abfrage der Resultatseite. In PHP ist es möglich, Variabeln
gleich im SQL – Konstrukt einzusetzen. Bei diesem Beispiel werden die Variablen $ortkey,
$themenkey, $startjahr
und $endjahr benötigt, um die gewünschten Werte aus der
Tabelle OBS_BASE auszulesen.
mysql_select_db("bernhist");
//Wahl der Datenbank
$result = @mysql_query("SELECT START ,
END , ort1.NAME, OBS_VALUE, thema.STD_TERM_NAME
FROM `obs_base` , ort1, quellenthema, thema
WHERE obs_base.src_term_key = quellenthema.src_term_key
AND quellenthema.std_term_key = thema.std_term_key
AND obs_base.STD_SYS_KEY = $ortkey
AND thema.std_term_key = $themakey
AND START >= $startjahr
AND END <= $endjahr
AND obs_base.STD_SYS_KEY = ort1.key
ORDER BY START ;");
27
Herunterladen