Lade Inhalt...

DynaMart - Erstellung eines dynamischen Shop-Portals auf Basis von PHP und MySQL

Bachelorarbeit 2007 65 Seiten

Informatik - Internet, neue Technologien

Leseprobe

Inhaltsverzeichnis

Abkürzungsverzeichnis

1 Einleitung

2 Funktionen der Seite
2.1 Frontend
2.2 Backend

3 Theoretische Grundlagen
3.1 Web-Techniken
3.1.1 XHTML
3.1.2 CSS
3.1.3 JavaScript
3.1.4 Apache
3.1.5 MySQL
3.1.6 Statisch vs. dynamisch
3.1.7 PHP
3.1.7.1 Arbeitsweise
3.1.7.2 Übertragung zum Server
3.1.7.3 Unterschiede zwischen PHP 4 und PHP 5
3.1.7.4 Konfiguration

4 Praktische Umsetzung
4.1 Entwurfsphase
4.1.1 Datenbank
4.1.2 MVC
4.1.3 Content Management System
4.2 Entwicklungsumgebung
4.2.1 XAMPP
4.2.2 Subversion
4.2.3 Mantis
4.2.4 DBDesigner
4.2.5 Die Wahl des Editors
4.3 Programmierung
4.3.1 PHP-Code
4.3.1.1 config.php
4.3.1.2 Cookies und Sessions
4.3.1.3 Klassenfindung
4.3.1.4 Browser-Weiche
4.3.2 Smarty
4.3.3 Mehrsprachig mit IntSmarty
4.4 Sicherheit
4.4.1 Apache-Sicherheit
4.4.2 SSL
4.4.3 Sessions
4.4.4 Cross-Site-Scripting
4.4.5 SQL-Injection
4.4.6 Safe-Mode

5 Ausblick

Anhang
Quellcode-Beispiele
Datenbankentwurf
Acid2-Test

Abkürzungsverzeichnis

Abbildung in dieser Leseprobe nicht enthalten

1 Einleitung

In dieser Abschlussarbeit geht es nicht um die Erstellung eines einzigen Shopsystems, sondern um die Entwicklung einer zusammenhängenden Shopsammlung. Es gibt viele Internetkaufhäuser, die nur online existieren, und es gibt große Versandhäuser mit langer Geschichte, die ihren Wirkungsbereich auch auf das Internet ausgebreitet haben. Doch es gibt ebenso kleine Geschäfte, für die sich ein Internetauftritt nicht zu lohnen scheint. Gemeint sind damit Läden, die sich sowohl in städtischen Einkaufspassagen oder auch auf dem Land befinden. Für einzelne Geschäfte, die nur eine kleine Laufkundschaft besitzen, mag es vielleicht sogar ein Risiko sein, ein Online-Geschäft zu eröffnen.

DynaMart konzentriert sich mit seiner Idee auf räumliche Regionen, deren Einkaufspassagen virtuell nachgebildet werden. Damit ist nicht gemeint, eine am Heimrechner begehbare 3D-Welt zu erschaffen. Vielmehr soll die Webseite ein Sammelpunkt sein für Geschäfte, deren Besitzer sonst vor einem Online-Auftritt aus verschiedenen Gründen zurückschrecken würden. In einem geschlossenen Nutzerkreis von Geschäftseigentümern sollen diese die Möglichkeit haben, mit einem wirtschaftlich geringen Risiko ihre Waren online anbieten zu können. Eine kostenintensive eigene Internetseite entfällt. Alle Verkäufer einer bestimmten Region können sich online registrieren und bieten interessierten Kunden ihre Produkte an.

Der Besucher bekommt die Gelegenheit, durch die Shops seines Heimatortes und deren Artikel zu stöbern, als wären sie direkt vor Ort. Die Besitzer können virtuellen Geschäftsraum mieten um ihre Waren online anzubieten, ohne in eine eigene Internetseite investieren zu müssen. Dabei müssen die angebotenen Artikel nicht zwingend zum Versand gedacht sein, sondern können auch zum Abholen bereit gehalten werden. Im Vordergrund steht also die Präsenz von Läden, die sonst nicht den Schritt ins Internet wagen würden.

Auf den folgenden Seiten liegt der Schwerpunkt auf der technischen Ent­wicklung des Shop-Systems. Gestalterische Aspekte werden außen vor gelassen, da das Design von der Agentur gestellt worden ist. Es werden die theoretischen Grundlagen erläutert, die bei der Erstellung eines solchen Projektes zum Tragen kommen. Dies sind übliche Web-Techniken, Herangehensweisen und Lösungen bestimmter wiederkehrender Hürden. Auch auf die von Entwicklern nicht selten vernachlässigte Wahl einer passenden Entwicklungsumgebung wird eingegangen. Oft werden die in der Branche etablierten Standard-Programme bevorzugt, obwohl sich ein Blick auf die Vielzahl an Alternativen durchaus lohnt, zumal unter wirtschaftlichen Aspekten gesehen der Griff zu Open-Source-Programmen doppelt einträglich ist.

Bei der Beschreibung der praktischen Umsetzung wird auf das Thema Sicherheit ein besonderes Augenmerk gerichtet, da es bei Internet-Inhalten oberste Priorität genießen sollte. Es werden auch unvermeidbare Kompromisse aufgezeigt, die den Entwickler unter bestimmten Umständen dazu zwingen, Be­nutzerfreundlichkeit vor Sicherheit zu stellen.

2 Funktionen der Seite

Vor dem Einstieg in die technischen Details dieses Projekts soll ein kurzer Überblick über die Funktionsweise des Portals aus Sicht eines Benutzers gegeben werden. Es werden die Hauptfunktionen angesprochen, auf die konkrete Umsetzung wird in Kap. 4 eingegangen. Diese Funktionen behandeln den Umgang mit den Daten von Administratoren, Kunden und Verkäufer und zeigen die Verzahnung aller Tätigkeiten, die nötig sind, um Daten flexibel zu verwalten. Wie bei größeren Projekten üblich, werden im Laufe der Zeit weitere Funktionen hinzukommen (s. Kap. 5), die in der jetzigen Version nicht implementiert sind.

2.1 Frontend

Das Frontend bildet den Hauptbereich des Portals. Hier können sich Nutzer als Kunde oder Verkäufer registrieren. Bei angemeldeten Usern erkennt das System beim Einloggen automatisch im Hintergrund, um welche Art von User es sich dabei handelt. Dabei bekommen beide unterschiedliche Menüs zu sehen, mit denen verschiedene Tätigkeiten ausgeführt werden können. Verkäufer können eigene Shops verwalten und Artikel einstellen, während Kunden die Shops aller Verkäufer durchstöbern und deren Produkte einkaufen können.

Verkäufer

Um dem Prinzip von DynaMart gerecht zu werden, dürfen sich nur Verkäufer aus einer bestimmten Region anmelden. Da die Anzahl an Geschäften in der Regel überschaubar bleibt, kann es den Administratoren zugemutet werden, potentielle Verkäufer auf deren Ortsbezogenheit zu überprüfen. Bei Bedarf kann aber auch ein Postleitzahlen-Vergleich automatisch durchgeführt werden.

Ein interessierter Verkäufer kann in einem Registrierungs-Formular seine persönlichen Daten eintragen und diese nach Bestätigung an der Server senden. Im Gegensatz zu Kunden müssen sie gewerbliche Angaben hinterlegen, nämlich Umsatzsteuernummer und Umsatzsteuer-Identifikationsnummer. Nach Freischaltung durch einen Admin kann ein Verkäufer beliebig viele Shops on­line stellen. Dabei muss einer dieser Shops mit seinen Produkten den Laden repräsentieren, der seine Geschäftsräume in der betreffenden Region hat. Bei Bedarf können auch weitere, reine Online-Shops eröffnet werden, aber mindestens eines muss real existieren.

In einer gesonderten Eingabemaske gibt er die relevanten Daten für seinen Shop ein. Das sind Name, Beschreibung, AGB und gegebenenfalls Anschrift des realen Ladens. Außerdem wählt er eine Kategorie, unter der ein Shop zu finden ist und die Suche durch einen Kunden übersichtlicher macht. Nach Abschicken des Formulars erfolgt die Freischaltung durch einen Administrator. Danach ist der Shop für die Kunden sichtbar. Zu jedem Shop können Produkte mit Bildern, Beschreibung, Gewicht und Preis eingetragen werden. Bei jeder ausgelösten Bestellung durch einen Kunden erhält der Shop-Betreiber eine Benachrichtigung mit den entsprechenden Informationen, die er zur Zusammenstellung der Bestellung nutzt.

Im späteren Betrieb wird von den Verkäufern eine Gebühr für den Betrieb ihrer Shops erhoben. Die Preisgestaltung steht noch nicht endgültig fest, soll aber verschiedene Bezahlmöglichkeiten anbieten. Darunter soll sich ein Premiumpaket befinden, durch den bestimmte Angebote eines Shops den Kunden gleich auf der Startseite als Eye-Catcher präsentiert werden und sich somit von anderen Angeboten abheben können.

Kunden

Der Kunde kann auf der Hauptseite entweder direkt nach einem bestimmten Shop oder nach Kategorien suchen, Produkte in seinen Warenkorb legen und die Bestellung jederzeit in Auftrag geben. Er kann wählen, ob er die Waren zugeschickt bekommen oder sie lieber vor Ort im Laden abholen möchte. Unabhängig davon kann er die Art der Bezahlung auswählen: Überweisung, Lastschrift oder Barzahlung. Jegliche Kombination von Warenerhalt und Bezahlung ist möglich. Der Kunde kann etwa die Rechnung durch Überweisung ausgleichen und die Bestellung abholen, oder er kann sie sich zuschicken lassen und die Rechnung im Geschäft begleichen. All das wird in der Rechnung festgehalten, die der Kunde per Email erhält. Bei Problemen soll es ihm möglich sein, sich direkt mit dem Verkäufer auseinandersetzen zu können, indem dessen Kontaktdaten für den Kunden transparent hinterlegt sind.

In den Warenkorb gelegte Produkte bleiben dort auch über mehrere Sitzungen so lange gespeichert, bis der Kunde die Bestellung auslöst. Artikel aus verschiedenen Shops werden jeweils gruppiert, da es logistisch ein zu großer Aufwand wäre, mehrere Läden zur Zusammenarbeit zu bewegen. Zu jedem Verkäufer gehören also eigene Bestellvorgänge. Diese werden gespeichert und können unter dem Link „mein Konto“ jederzeit eingesehen werden.

2.2 Backend

Das Hauptwerkzeug des gesamten Portals befindet sich im so genannten Backend. Der Zugriff darauf wird nur eingetragenen Administratoren gewährt und wird durch die Apache-Authentifizierung vor fremden Zugriffen geschützt (s. Kap. 4.4.1). Eingeloggte Administratoren können mit diesem selbst geschriebenen Tool wichtige Aufgaben erledigen, auf die normale Nutzer der Webseite keinen Zugriff haben.

Die wichtigste Aufgabe ist die Administration der Shops und deren Verkäufer. In den jeweiligen Navigationspunkten können diese per Hand neu angelegt werden. Im Normalfall werden Benutzer bei deren Registrierung automatisch in die Datenbank eingetragen, doch bei möglichen technischen Problemen mit dem Server können fehlerhafte Übertragungen entstehen. Im Backend können Nutzer bei Bedarf per Hand nachgetragen werden. Auch erfolgt die obligato­rische Freischaltung eines Nutzers automatisch durch einen Bestätigungslink, der per Email verschickt wird. Dies kann ebenfalls manuell nachgeholt werden.

3 Theoretische Grundlagen

3.1 Web-Techniken

Der größte Teil dieses Projekts bildet die Entwicklung in PHP (Hypertext Preprocessor), mit der die dynamische Realisierung des Portals erst möglich ist. Doch mit PHP allein kann keine Internetseite gestaltet werden. Vielmehr kommen auch Techniken mit ins Spiel, die teilweise von Beginn des Internets an ein Rolle spielen bzw. von alteingesessenen Techniken abstammen. Folgende Technologien finden bei DynaMart ihren Einsatz.

Die grundlegenden Elemente des Shopsystems sind:

-• XHTML 1.0 transitional (Extensible Hypertext Markup Language)
•- CSS 2 (Cascading Stylesheets)

Für die Implementierung der Fly-Menüs für Nicht-Firefox-Browser:

•- JavaScript (verschiedene Versionen, s. Kap. 3.1.3)

Verwendeter Testserver:

•- Apache 2.2.4

Um die Seite darüber hinaus dynamisch zu gestalten, sind folgende Komponenten nötig:

•- MySQL 5.0.3.3
•- PHP 5.2.1

Template-Engine für PHP:

•- Smarty 2.6.18

Modul für mehrsprachige Seiten:

•- IntSmarty 0.9

3.1.1 XHTML

XHTML ist eine Auszeichnungssprache und stellt die Weiterentwicklung vom bekannten HTML (Hypertext Markup Language) dar, welches in all ihren Formen als das Grundgerüst jeder Internetseite fungiert. HTML wurde 1990 von Tim Berners-Lee entworfen und basiert bis Version 4 auf der Metasprache SGML (Standard Generalized Markup Language). Da XML (Extensible Markup Language), welches eine reduzierte SGML-Variante ist, aufgrund der Beliebtheit als Dokumentenformat in der IT-Welt immer wichtiger wurde, entschloss das W3C[1] (World Wide Web Consortium) eine neue Version von HTML zu entwickeln. Dabei sollte die neue Version mit Hilfe von XML definiert werden. Heraus kam dabei XHTML. Seit dem Jahr 2000 gilt XHTML 1.0 transitional als W3C-Empfehlung und wird von professionellen Multimediaentwicklern verwendet. Neben XHTML 1.0 transitional existiert auch die Version XHTML 1.0 strict. Der Wortzusatz hinter der Version bringt zum Ausdruck, wie das Dokument zu verarbeiten ist. Transitional bedeutet, dass auf ältere Browser Rücksicht genommen wird. Strict dagegen fordert strengere Regeln, wie z.B. das Kleinschreiben von Attributen oder das Schließen jedes Tags. Strict wird kaum verwendet, da noch zu viele User mit alten Browsern durch die Netzwelt surfen.

Auch in diesem Projekt wird daher die Transitional-Variante verwendet. Im folgenden Verlauf werden die Elemente eines XHTML-Dokumentes außerdem weiterhin „HTML-Elemente“ genannt, da sie gegenüber HTML nicht verändert wurden und auch in der Fachliteratur so bezeichnet werden.

3.1.2 CSS

Hierbei handelt es sich um eine Sprache zur Definition von Formateigen­schaften einzelner HTML-Elemente. CSS wurde 1996 in der Version 1.0 vom W3C herausgegeben. 1998 erschien die Version 2.0, die heute noch den Standard darstellt und von allen aktuellen Browsern unterstützt wird. Davor gab es nur unzureichende Möglichkeiten, um das Aussehen einer HTML-Seite zu beeinflussen. Es mussten die spärlichen Attribute der HTML-Elemente verwendet werden, um Schriftarten oder Farben zu definieren. Diese Methode gilt unter Profis als unsauber und ist in der Tat sehr umständlich, da es keine Möglichkeit gibt, gleiche Elemente immer gleich zu behandeln. Wenn ein reines HTML-Dokument beispielsweise mehrere Tabellen beinhaltet, deren Schriftart vom Rest der Seite abweicht, so muss die Schriftart auch in jeder einzelnen Tabelle definiert werden. Dies führt zu einem unübersichtlichen Quelltext.

Mit CSS wird das Design einer Seite vollständig aus dem HTML-Dokument in Form einer eigenen Datei ausgelagert, die sich auf dem gleichen Server befindet. Da diese Datei im HTML-Dokument lediglich in einer Zeile referenziert werden muss, kann sie mühelos zu jeder Zeit durch eine andere CSS-Datei mit anderen Anweisungen ausgetauscht werden, ohne die HTML-Dokumentstruktur selbst zu verändern. Es übernimmt dabei nicht nur die Formatierung von Schrift und Farbe, sondern auch das komplette Layout der einzelnen Komponenten. Mit CSS sind also Design und Inhalt einer Internetseite vollständig unabhängig und austauschbar.

3.1.3 JavaScript

JavaScript ist eine reine Skriptsprache (nicht objektorientiert) und wurde 1995 vom Browserhersteller Netscape erfunden. Sie basiert auf dem ECMA[2] Script-Standard, welche durch Ecma International[3] standardisiert wird. Die Sprache ist aus dem Wunsch entstanden, die beschränkten Möglichkeiten von HTML zu erweitern und Internetseiten für den Besucher komfortabler und attraktiver zu gestalten.

Aus markttechnischen Gründen ist der Name der Sprache eine Anlehnung an die von Sun entwickelte Programmiersprache Java. Jedoch haben beide Sprachen nichts gemeinsam und sind in ihrer Nutzung völlig unterschiedlich. Während Java eine vollwertige und ausgewachsene Programmiersprache ist, mit der plattformunabhängige Software entwickelt werden kann, beschränkt sich das Aufgabengebiet von JavaScript auf den Browserbereich.

JavaScript existiert in mehreren Versionen mit verschiedenen Objekten und Methoden, die aktuellste ist 1.7. Doch aufgrund der uneinheitlichen Unter­stützung durch die wichtigsten Browser sollte bei browserunabhängigen Projekten nur die Teilmenge der Funktionen verwendet werden, die alle Browser unterstützen.

Mittels JavaScript können unter anderem HTML-Objekte und CSS-Attribute in Echtzeit manipuliert werden. Dies wird in DynaMart für alle Browser außer dem Firefox dazu verwendet, um aufklappbare Menüs zu realisieren (s. Kap. 4.3.1.4). Diese können bei Firefox auch mit CSS realisiert werden.

Da der Fokus der Programmierung bei diesem Projekt auf PHP liegt, kommen keine speziellen JavaScript-Funktionen zum Einsatz. Denkbar wäre zwar die zusätzliche Integration von AJAX (Asynchronous JavaScript + XML). Da dieser spezielle Bereich der Programmierung in erster Linie für optische Effekte zuständig ist und keine wichtigen Funktionen von PHP übernehmen könnte, kann AJAX hier vernachlässigt werden.

3.1.4 Apache

Der von der Apache Software Foundation[4] entwickelte Apache Server ist der zur Zeit am häufigsten verwendete Webserver im Internet. Die meisten Hosting-Provider bieten Apache standardmäßig in ihren Paketen an. Da es nicht nur unter Unix- bzw. Linux-Systemen lauffähig ist, sondern auch in Win32-Umgebungen, wurde er als lokaler Testserver während der Entwicklung auf einem Windows XP-Rechner eingesetzt.

Das Apache-System ist modular aufgebaut. Durch entsprechende Module können die verschiedensten Komponenten eingesetzt werden. In diesem Fall wird auch PHP als Modul beim Starten des Servers eingebunden, da es von Haus aus nicht Teil des Webservers ist.

3.1.5 MySQL

Um persistente Daten zu verwalten, die bei der Interaktion mit dem Shopsystem anfallen, ist eine Datenbank nötig. Sie sorgt im Wesentlichen für die Verwaltung und die Bereitstellung benötigter Daten an anfragende Schnittstellen. Bei heutigen Systemen handelt es sich um relationale Datenbanken. Auf dem Markt existieren viele verschiedene Datenbanken, die im Web-Bereich am häufigsten verwendete ist MySQL. Es ist das populärste SQL-Datenbank­managementsystem der Welt und wird von MySQL AB[5] als Open-Source-Programm entwickelt. Es unterstützt, wie der Name andeutet, die Abfragesprache SQL (Structured Query Language), welches als Basis vieler Datenbanken dient. Sie wurde Ende der 70er Jahre von IBM als Abfragesprache für die relationale Datenbank DB2 entworfen. Es handelte sich ursprünglich um eine nichtprozedurale Sprache, die keine Schleifen, Unterprogramme, Funktionen u.s.w. enthält. Mittlerweile sind auch diese Sprachkonstrukte implementiert, sodass bestimmte Aufgaben an die Datenbank delegiert werden können.

Nur wenige Entwicklergruppen statten ihre Datenbanksysteme mit voller Unterstützung für den ANSI-92 SQL-Standard aus, sondern erweitern ihre Systeme um eigene Funktionen oder vernachlässigen bestimmte SQL-Standards. MySQL unterstützt weitgehend den aktuellen Standard und implementiert darüber hinaus eigene Sprachelemente. Dank des Standards sind die meisten SQL-Befehlsketten auf die meisten anderen Datenbanken übertragbar.

3.1.6 Statisch vs. dynamisch

Internetseiten können im Prinzip in zwei Sorten unterteilt werden: statische und dynamische Seiten. Statische bieten dem Besucher lediglich vorgefertigte Informationen, die der Ersteller der Seite im Quellcode der HTML-Dokumente hinterlegt, also quasi eingebrannt hat. Diese Informationen sind im Nachhinein nur noch per Hand im Quelltext veränderbar. Solche Seiten sind für gewisse Anforderungen ausreichend, wie etwa eine virtuelle Online-Ausstellung. Für ein Shopsystem allerdings, welches unter anderem von wechselnder Produktvielfalt lebt, ist ein dynamisches System zwingend erforderlich. Die Darstellung einer sich ständig ändernden Produktpalette oder die Anzeige des aktuellen Warenkorbes als Folge einer Datenbankabfrage ist nur mit einem dynamischen System möglich.

Zur Dynamik gehört auch, dass eingeloggte Kunden ihre persönlichen Daten einsehen können. Statische Seiten müssten für jeden Kunden ein eigenes Dokument anlegen, was ein untragbarer Aufwand wäre. Dynamische Seiten dagegen halten ein einziges bereit, in dem personenbezogene Daten durch Platzhalter gekennzeichnet sind. Sie werden dem eingeloggten User entsprechend durch persönliche Daten ersetzt und angezeigt. Jeder Besucher betrachtet also immer eine Kopie des gleichen Dokuments, nur durch eigene Daten ergänzt.

3.1.7 PHP

Dass diese Dynamik so funktioniert, muss durch eine Serversprache realisiert werden. Diese Sprache muss in der Lage sein, dem Besucher die richtigen Informationen aus der Datenbank je nach Anforderung zu präsentieren. Eine solche Sprache ist PHP. Sie kann als Modul in den Apache-Server eingebunden werden oder über CGI (Common Gateway Interface) angesprochen werden.

Entstanden ist sie 1995 durch Rasmus Lerdorf als ein Set von Perl-Skripten unter dem Namen PHP/FI (Personal Home Page / Forms Interpreter). 1998 wurde das Projekt nur noch unter PHP (3.0) weitergeführt, und es entstand das rekursive Akronym „Hypertext Preprocessor“. Über mehrere Versionen hinweg hat sich PHP mittlerweile weltweit als beliebteste Serversprache etabliert. Laut Nexen[6], einer französischen Statistikseite, liefen im Juli 2007 auf rund 33% aller Webseiten PHP. Allerdings stellt dieselbe Seite auch fest, dass drei Viertel aller PHP-betriebenen Seiten noch in der Version 4 laufen, obwohl PHP5 schon seit 2004 released worden ist und die Pflege von PHP4 im August 2008 eingestellt werden soll. Außerdem ist im selben Jahr mit dem Erscheinen von PHP6 zu rechnen. Auf die zögerliche Akzeptanz soll hier nicht weiter eingegangen werden. Die Unterschiede beider Versionen sind in Kap. 3.1.7.3 beschrieben.

3.1.7.1 Arbeitsweise

Um eine Internetseite überhaupt betrachten zu können, muss der Benutzer das angeforderte Dokument als Adresse in den Browser eingeben. Dieser löst die Adresse auf und erhält das angefragte Dokument vom Server über das Internet. Bei statischen Seiten ist es meist die Datei index.html. Die Browser­engine durchläuft den Quellcode und stellt ihn nach bestimmten Regeln im Fenster dar. Jeder Link, der in dieser Seite angeklickt wird, ist wiederum eine Adresse, von der aus der Server dem Browser eine weitere HTML-Datei zum Anzeigen aushändigt. Dabei sind die Inhalte wie schon erwähnt unveränderbar, jede Datei bietet jedem User die gleichen Informationen.

Bei PHP-Seiten hingegen werden die Dateien nicht einfach nur ausgehändigt, sondern vorher vom Server bearbeitet. PHP-Dateien haben die Endung . php, sodass die Einstiegsseite einer Seite üblicherweise das Dokument index.php ist. Der Server erkennt diese Datei aufgrund der Endung als ein PHP-Skript und übergibt diese dem integrierten PHP-Interpreter. Dieser durchsucht nun das Skript nach bestimmten PHP-Tags. Am verbreitetsten sind die Tags <?php [Anweisungen] ?>. Es gibt weitere, die allgemein allerdings aufgrund möglicher Probleme mit anderen Serversprachen nicht empfohlen und hier nicht weiter erwähnt werden. Folgender Codeschnipsel zeigt, wie der Quelltext an einer Stelle mit PHP-Anweisungen aussehen kann.

Abbildung in dieser Leseprobe nicht enthalten

Alles, was sich innerhalb der PHP-Tags befindet, wird ausgewertet. Solche eingebetteten Anweisungen bestehen häufig aus echo -Befehlen. Dieser Befehl gibt als Rückgabewert den übergebenen Parameter wieder. Dieser kann nicht nur aus Strings, sondern auch aus Berechnungen oder String-Konkatenationen bestehen. Im obigen Beispiel würde der gesamte PHP-Bereich von <?php bis ?> durch „Hallo Welt!“ ersetzt werden. Der ausgelieferte Quelltext würde dann so aussehen:

Abbildung in dieser Leseprobe nicht enthalten

Aus der gesamten Datei macht der Interpreter auf diese Weise ein reines HTML-Dokument, welches nach Abarbeitung an den Client geschickt wird. Die über jeden Browser mögliche Quellcode-Anzeige des gerade aktiven Fensters zeigt bei einer solch bearbeiteten Datei, dass keinerlei PHP-Code an den Browser geschickt wird. Ein Benutzer kann ohne Zugriff auf den Server daher niemals den Quellcode einer PHP-Anwendung einsehen.

Üblicherweise bestehen Anwendungen aber nicht aus nur einem Skript, sondern können der Übersicht wegen in beliebig viele Dateien ausgelagert werden. Wird objektorientiert programmiert, so liegt es nahe, für jede geschriebene Klasse eine eigene Datei zu hinterlegen. Der Interpreter durchläuft die Skripte sequentiell und fängt bei der Datei an, die vom Client angefordert wird. Deshalb müssen alle Skripte und Klassen in der Anfangsdatei referenziert werden, da der Interpreter eventuelle Klassenaufrufe nicht versteht. Einer von vier Befehlen für dieses Prinzip lautet include ('[Dateipfad]'). Durch diese Anweisung behandelt der Interpreter den Code in der angegebenen Datei so, als stünde er direkt im aktuellen Skript.

3.1.7.2 Übertragung zum Server

Das Übertragungsprotokoll zwischen Client und Server ist bei Webseiten das Hypertext Transfer Protocol (HTTP). Um einfache Seiten aufzurufen werden gewöhnliche Links verwendet, die die angeforderte Seite im Browserfenster darstellt. Um Daten zwischen ihnen auszutauschen, werden die HTTP-Anfragemethoden GET und POST verwendet. Daten auszutauschen ist immer dann nötig, wenn bestimmte Parameter zwischen den einzelnen Seiten einer Web­site transportiert werden müssen.

Oft werden Daten über ein HTML-Formular an den Server geschickt (z.B. Anmeldedaten). Die Übertragungsart kann vom Programmierer frei gewählt werden. Wird die GET-Methode verwendet, wird der Formulardatenstrom direkt in die Adresszeile an das Ende der Zieladresse hinzugefügt. Die Daten sind also sichtbar. POST hingegen erlaubt einerseits eine größere Übertragung (nützlich bei längeren Texten wie z.B. Forenbeiträge) und verhindert andererseits, dass die Daten in der Adresszeile zu sehen sind. GET wird häufig für die Seitennavigation benutzt, indem bestimmte PHP-Variablen an die URL gehängt werden.

3.1.7.3 Unterschiede zwischen PHP 4 und PHP 5

Wie bereits erwähnt, existiert PHP5 schon seit 2004, wird aber nur zögerlich eingesetzt. Der Upgrade von Version 4 auf 5 ist der größte Sprung in der bisherigen Entwicklungsgeschichte. Auf den ersten Blick fällt dies kaum auf, da PHP5 zur Zeit noch abwärtskompatibel ist, d.h. Entwickler können ihre für Version 4 geschriebenen Programme ohne weiteres auch innerhalb einer PHP5-Umgebung einsetzen. Allerdings kann der reibungslose Ablauf nie garantiert werden, weshalb eine Migration vorhandener PHP-Seiten nicht unbedingt durchgeführt werden sollte. Dafür können Entwickler mit PHP4-Kenntnissen problemlos mit innerhalb der aktuellen Umgebung arbeiten, da eventuelle Diskrepanzen beim Testen in aller Regel entdeckt werden. Der Vorteil von PHP5 sind neue, mächtigere Funktionen.

PHP 4.1

In dieser Version ist es möglich, Formulardaten und Parameter automatisch auf die darauf folgende Seite zu übertragen. Das bedeutet, dass die vom User eingegebenen Inhalte eines Formulares automatisch auf nachfolgenden Seiten verfügbar sind, auch wenn der Programmierer für sie keine Verwendung hat. Auch Parameter, die über GET oder POST gesetzt wurden, sind ohne weiteres verwendbar. Dies ist zwar sehr praktisch, da der Programmierer bequem auf diese Variablen zugreifen kann, stellt aber ein nicht zu vernachlässigendes Sicherheitsrisiko dar.

PHP 4.2

Seit Version 4.2 gibt es die so genannten super globals. Dazu gibt es in der Konfigurationsdatei von PHP (s. Kap. 3.1.7.4) die Eigenschaft register_global. Sie steht standardmäßig auf off, was die automatische Übertragung von Formulardaten und Parametern verhindert. Sie stehen nun nicht mehr automatisch zur Verfügung, sondern müssen explizit mit Hilfe der super globals angefordert werden. Dazu gehören z.B.: $_GET['variable'] für Variablen, die an die URL angehängt werden (z.B. http://localhost/index.php?variable=Hallo)[7] ; $_POST['variable'] für Inhalte, die über ein Formular abgesendet wurden; $_SESSION['variable'] für Session-Variablen. Es gibt noch eine Reihe weiterer super globals, die hier nicht weiter wichtig sind und im PHP-Manual[8] eingesehen werden können.

Aus Kompatibilitätsgründen ändern Provider diese wichtige Einstellung nicht selten wieder auf on, um Kundenbeschwerden zu vermeiden und ältere Skripte lauffähig zu halten, bei denen die Parameter noch automatisch übertragen werden. Bei modernen Seiten sollten nur noch super globals verwendet werden, um Risiken zu vermeiden und zukunftsfähig zu bleiben, da kommende PHP-Versionen womöglich nicht mehr abwärtskompatibel sein werden. Um die Einstellung beim Provider festzustellen, kann einfach eine php-Datei auf den Server geladen werden, die nur den Befehl phpinfo() enthält. Diese Datei wird über den Browser aufgerufen und zeigt alle Einstellungen der aktuell auf dem Server installierten PHP-Version an. Die angezeigte Seite enthält unter anderem auch die Variable register_global und den eingestellten Wert, also entweder on oder off.

PHP 5

In der Version 5 ziert eine neue Engine das Herz von PHP, nämlich die Zend 2 Engine. Durch diesen neuen Motor wird unter anderem eine höhere Performance erreicht, nicht zuletzt durch die verbesserte Speicherverwaltung. Für Entwickler wesentlich interessanter sind jedoch die syntaktischen Änderungen der Sprache selbst. Zwar wird schon in PHP4 ein rudimentäres Klassenkonzept unterstützt, doch volle Objektorientierung (OOP) ist noch nicht möglich. Erst die neueste Version kann mit vielen anderen Sprachen wie Java oder C++ gleichziehen. Im Gegensatz zur Vorversion kann dem Geheimnisprinzip von OOP nun gerecht werden, da Klassenmethoden nun mit Attributen versehen werden können. Diese bestehen aus den bekannten Schlüsselwörtern public, private, protected und final. Die ersten drei regeln die Sichtbarkeit der Methoden. Mit public deklarierte Methoden sind für alle Klasseninstanzen sichtbar, private beschränkt eine Methode auf die eigene Klasse und protected erlaubt nur Zugriffe durch Instanzen, die die Klasse beerben. final verhindert eine Überladung der Methode, d.h. sie kann innerhalb eines Kindobjektes nicht überschrieben werden.

[...]


[1] http://www.w3.org

[2] European Computer Manufacturers Association

[3] http://www.ecma-international.org

[4] http://www.apache.de

[5] http://www.mysql.de

[6] http://www.nexen.net/chiffres_cles/phpversion/17374-php_stats_evolution_for_july_2007.php

[7] Im Folgenden wird localhost als Synonym für die Internetadresse des Portals verwendet. Während der Testphase auf dem lokalen Rechner ist diese außerdem die tatsächliche Adresse

[8] http://de.php.net/manual/de

Details

Seiten
65
Jahr
2007
ISBN (eBook)
9783638900379
ISBN (Buch)
9783638905794
Dateigröße
1 MB
Sprache
Deutsch
Katalognummer
v85512
Institution / Hochschule
Fachhochschule Braunschweig / Wolfenbüttel; Standort Braunschweig
Note
1,3
Schlagworte
DynaMart Erstellung Shop-Portals Basis MySQL

Autor

Zurück

Titel: DynaMart - Erstellung eines dynamischen Shop-Portals auf Basis von PHP und MySQL