Home

1. Bericht - Homeepage www.phpeppershop.streaming

image

Contents

1. phpeppershop dokumentation sdw Seite 17 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 7 Tests Schon als wir mit Programmieren begannen merkten wir dass ein kompletter Test aller Funktionen und Zust nde schlussendlich nicht mit einem vertretbaren Zeitaufwand m glich sein w rde Wir beschlossen einige Massnahmen damit der Shop in seiner Schlussversion m glichst wenige dazu leicht lokal sierbare Fehler enthielte 1 Funktionen sollen falls ein Problem auftritt dieses direkt m Klartext detailliert e schrieben an den Browser ausgeben 2 Funktionen die den R ckgabewert eigentlich nicht brauchen geben bei Erfolg true zu r ck Tritt irgend ein Problem auf wird ein false zur ckgegeben Der Fehler kann also recht genau lokalisiert werden 3 Funktionen sollen direkt nach der Erstellung mit einigen sinnvollen Extremwerten getes tet werden 4 Schnittstellen zwischen Funktionen m ssen genau definiert werden 5 Jede Zeile deren Bedeutung auf den ersten Blick nicht gleich erkennbar ist soll kommen tiert werden Wir wendeten dieses Konzept konsequent an Es entstanden jedoch einige Funktionen die aufgrund ihrer Gr sse und Komplexit t nicht mehr komplett ausgetestet werden konnten Durch die oben
2. 1 6 3 Effektiver Ablauf des Projekts Wie in der folgenden Tabelle ersichtlich ist haben wir fast alle geplanten Funktionen im plementieren k nnen Die jetzt noch rot unterlegten Arbeiten stellten sich w hrend der Im plementierung des Shop f r dessen Funktionalit t und Bedienbarkeit als nicht elementar heraus so dass w r w hrend der Diplomarbeit deren Priorit t heruntersetzten Einige niederpriorit re Funktionen konnten praktisch im gleichen Arbeitsschritt mit einer Funktion der wir eine h here Priorit t zugeteilt hatten gel st werden Dies erkl rt warum wir nicht konsequent eine Priorit tsstufe nach der anderen abarbeiteten phpeppershop dokumentation sdw Seite 16 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Arbeiten die erfolgreich gel st werden konnten Arbeiten zu dessen L sung keine Zeit mehr blieb oder die uns als unwichtig erschienen Die Farben in der Wochen bersicht wurden aus der Zeitplanung vom 18 09 2001 bernommen und entsprechen den Priorit ten der Arbeiten
3. 12 kleinste 2 bis zwei Tage 3 mehr Zeit wird ben tigt phpeppershop dokumentation sdw Seite 14 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Bekannte Fehler und M ngel beheben P Z Aufgabe 1 ll Provider Probleme gt 1 User ev 1 Datenbank detaillierte Installationsangaben 2 3 Gleicher Artikel mit verschiedenen Var Optionen k nnen nicht kumuliert werden 3 3 Unterkategorien z B 300 Kategorien und mehr Produkte 4 3 Ab ndern der Artikel Update Funktionen 5 3 Artikel in mehreren Kategorien eintragen k nnen 6 3 Mehrwertsteuer und Verpackungskosten Frachtkosten in die Berechnung miteinbeziehen 7 1 Scrollen im Top Frame unterbinden 8 1 Charset mm Mailversand erg nzen 9 1 Bilddatum f r Cache auf 1 1 1971 korrigieren 10 1 Kostenlose Artikel gt z B Prospekte bestellen gt Zahlungsm glichkeiten weglassen 1 PLZ auch alphanumerisch USA Admin Modus fertig stellen wesch Shop Administrationsmodus fertig stellen Zahlungsm sglichkeiten Kategorienmanagement Unterkategorien u s w Button hinzuf gen der mehr leere Options Variantenfelder generiert 3 3 Kategorienmanagement 1 2 A ch Felderkonfiguration bei Kundenadresseingabe dynamisch w hlbar gestalten Admin gt Reihenfolge w hlbar Implementieren wichtiger Zusatzfunktionalit t
4. Beschreibung DA Unterkategorie ist eine Child Klasse einer Kategorie Sie bernimmt somit alle Attri bute und Methoden Die Unterkategorie erweitert die Kategorie um die Variable Un terkategorie_von Darin wird jeweils der Name der Haupt Kategorie gespeichert Diese einfache Klassenbeziehung erlaubt eigentlich eine beliebig tiefe Verschachte lung von Kategorien kreditkarte_def php Kreditkarte phpeppershop dokumentation sdw Seite 69 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Beschreibung Definiert die Klasse Kreditkarte Sie speichert f r jede Kreditkarte einzeln den Namen des Kreditkarten Instituts Hersteller das Handling und das benutzen Flag Das Handling kann von der Datenbank her nur zwei Werte annehmen intern extern Mit DA intern ist gemeint dass die Bestellung komplett PhPepperShop intern abgewickelt wird Wenn extern angew hlt wurde kann man ein Pay Objekt mit der kompletten Bestellung und Kunden Information in der Datei payment_interface php abholen und die Bestellung als akzeptiert oder nicht_akzeptiert wieder zur ck geben Man kann die eigentliche Zahlung dann in einem externen Programm auf einem externen Server abwickeln kunde_def php Kunde Beschreibung Definiert die Klasse Kunde welche alle Daten eines Kunden fassen kann Diese Klasse wurde vor allem daf r ausgelegt alle m glichen Daten eines Kunden speichern zu k nnen Wenn man nicht alle Va
5. Kreditkartenunterst tzung gt ev Wrapperklasse f r mehrere Institute Warenkorb ist leer Meldung implementieren htaccess erkl ren Anzahl Artikel pro Suchresultatseite festlegen z B 25 Artikel pro Seite Kunde kann w hlen 10 50 alle 3 1 2 Backup des Shops ev auch automatisiert gt wenigstens Anleitung 1 3 2 9 0 Si GO ech Suchanfrage mit mehreren Begriffen wie bei http www google com Layout Management Bue CSS Einstellungen per Web machen Zelle Shop Logo upload erm glichen gt Als GIF Bilddatei im Bilder Verzeichnis ablegen Eigene Buttons Buttonsets ev mit Java Script onMouseOver onClick MS CRM 1 Eigenes Login automatisch ausgef llte Adresse Login zwingend nicht zwingend gt H ndlermodus phpeppershop dokumentation sdw Seite 15 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 6 2 Zeitplanung erstellt zu Projektbeginn h chste Dringlichkeit hohe Dringlichkeit mittlere Dringlichkeit nice to have
6. Modul Klassendefinitionen Datei Klassenname artikel_def php Artikel Beschreibung DA Definiert eine Klasse Artikel um mit den vielen Attributen eines Artikels umgehen zu k nnen Ein Artikel Objekt kann auch alle Optionen und Variationen beliebige Menge eines Artikels fassen Auf die Variablen der Klasse wird direkt ohne set get Funktionen zugegriffen F r die Optionen und Variationen Arrays gibt es entsprechende Funktionen artikel_def php Option und Variation Beschreibung DA Im PhPepperShop werden Artikel Optionen und Variationen in Arrays transportiert Zuk nftige Entwicklungen f r den PhPepperShop sollen aber diese beiden Klassen verwenden Sie bilden eine Zeile der jeweiligen Tabelle artikel_optionen artikel_va riationen ab Man hat auf diese Weise viel elegantere Zugriffsm glichkeiten auf die Daten artikel_def php Artikelmitkategorien Beschreibung DA Diese etwas seltsam benannte Klasse wurde f r den Transport von Artikeln und ihren Kategorien erstellt Seitdem ein Artikel in mehreren Kategorien gleichzeitig sein kann musste man einen Weg haben beide Informationen auf einmal transportieren zu k n nen Diese Klasse fasst deshalb ein Artikel Objekt und einen Array von Kategorien attribut_def php Attribut Beschreibung DA Definiert die Klasse Attribut Es existiert eine Tabelle attribut in welcher diese At tribute gespeichert werden Di
7. As mentioned in the title the PhPepperShop is an open source project which includes free availability of the source code and unrestricted utilisation and development The PhPepper Shop project is maintained on Source Forge The latest news and a sample shop can be found on www phpeppershop com phpeppershop dokumentation sdw Seite 4 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 2 Vorwort Im Rahmen unserer Diplomarbeit erweiterten wir unsere erste Projektarbeit Webshop Framework in PHP zu einem marktreifen Produkt dem PhPepperShop Das wichtigste Ziel f r uns war den Shop soweit zu entwickeln dass man ihn ohne Bedenken der ffentlichkeit bergeben kann Wir wollten den Shop so programmieren dass er m g lichst vielseitig und branchenunabh ngig eingesetzt werden kann Weiter sollte sich der Shop komplett auf die Bed rfnisse des Shopbetreibers anpassen lassen Dabei ber cksichtigten wir auch die W nsche und Verbesserungsvorschl ge des inzwischen bei uns eingegangenen Feedbacks Ein von Anfang an erkl rtes Ziel war es den Shop frei von l zenzrechtlichen Einschr nkun gen auf einem ffentlich zug nglichen Server gehostet anzubieten Wir vertreten mit voller berzeugung die Idee der Open Source Software Entwicklung phpeppershop dokumentation sdw Seite 5 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 3 Aufgabenstellung Diplomarbeit Open Source Webs
8. guration Administration MITP Verlag GmbH Bonn Lars Eilebrecht 3 Auflage 2000 671 Seiten ISBN 3 8266 0612 4 gut bei der Apache Konfiguration und beim Einrichten von htaccess 4 1 3 CRM Customer Relationship Management iX Magazin f r professionelle Informa Wir haben umfassende und sehr aktuelle Ar tionstechnik Ausgabe 8 2001 ab Seite 38 Operatives und analytisches CRM CRM und Betriebswirtschaft Ausgabe 7 2001 ab Seite 104 Dienen und Verdienen CRM Der Wert eines Kunden Heinz Heise Verlag 30604 Hannover tikel in der renommierten Zeitschrift LA ge funden Die Artikel geben dem Modewort CRM etwas Farbe Man lernt dass CRM nicht einfach eine Technik oder eine Sammlung von Funk tionen ist sondern eine Unternehmensphilo sophie Man muss um ein umfangreiches CRM einzuf hren weit mehr machen als es in einen Shop zu integrieren 4 1 4 Datenbanken und im speziellen MySQL MySQL in 21 Tagen Markt Technik Verlag M nchen Mark Maslakowsk 2001 580 Seiten ISBN 3 8272 5850 2 SQL der Schl ssel zu relationalen Da tenbanken Rowohlt Taschenbuch Verlag GmbH Reineck bei Hamburg Gregor Kuhlmann Friedrich M llmerstadt Mai 1999 318 Seiten ISBN 3 499 60063 3 Datenbanken Vorlesung an der Z r cher Hochschule Winterthur Dr Hans Walter Buff zweites Jahr IT Dies war unser Hauptbuch im Bereich Da tenbanken Man findet auch knifflige Aspekte von MySQL hier drin Vor allem f r die
9. Phil deutsch Aw ll Shop in PHP Nuke integrieren p fs gmx de kingluui deutsch 7Shop vom Deutschen ins Spanische bersetzen xxxforumbanner kingluui de phpeppershop dokumentation sdw Seite 61 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 10 Schlusswort Wir haben unser Ziel erreicht Der Shop kann der ffentlichkeit bergeben werden Wir wis sen dass er auch in Zukunft weiter entwickelt werden wird und freuen uns schon auf weitere interessante Features und Feedbacks Der PhPepperShop ist etwas Einmaliges Er bietet eine enorme Flexibilit t und Dynamik welche auch kommerzielle und teure Shop L sungen oft vermissen lassen Aufsrund des enormen Echos auf unsere Projektarbeit von diesem Fr hjahr waren wir hoch motiviert den Shop auf die Bed rfnisse des Marktes anzupassen Dies ist uns unserer Mel nung nach auch gelungen Bei Herrn Feisthammel m chten wir uns ganz herzlich f r seine ausserordentliche Unter st tzung die er uns auch in diesem Projekt wieder gew hrleistete bedanken Speziellen Dank m chten wir unseren Freundinnen aussprechen die uns auch in dieser letz ten grossen Arbeit unseres Studiums viel Verst ndnis und Unterst tzung entgegen brachten Winterthur den 28 10 2001 Reto Glanzmann Jose Fontanil phpeppershop dokumentation sdw Seite 62 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 Architektur 2 1 Security Wir haben un
10. achten Sie dass die Schriftstil Einstellungen Browser abh ngig interpretiert werden Falls Sie die Gr sse des Left Frame linker Fensterteil welcher die Kategogien und Unter kategorien enth lt ver ndern wollen k nnen Sie das im Feld Breite Left Frame tun Die H he des Top Frames oberer Fensterteil kann im Feld H he Top Frame eingestellt wer den phpeppershop dokumentation sdw Seite 146 von 169 2001 R Glanzmann amp J Fontanil Z Ww 15 November 2001 A ayoutmanagement microsoft Internet Explorer ais Datei Bearbeiten Ansicht Favoriten Extras zur ck gt A Z zuchen Giravorten C veraf B G a A Adresse Je http 160 85 138 78 glanzret phpeppershop shopfAdmin SHOP_LAYOUT php DI Wechseln zu te sl SHOP ADMINISTRATION Layout Management In dieser Maske k nnen Sie das Aussehen ihres Shops einstellen Mit den Eingabefeldern R G und B definieren Sie die Farbe nach dem Muster Rot Gr n Blau Sie k nnen in jedes der Farbfelder einen Wert zwischen 0 und 255 eingeben z B weiss R 255 G 255 B 255 schwarz R 0 6 0 BD Sie haben f nf Eingabefelder f r das Fontset zur Verf gung Geben Sie in dem Feld 1 Priorit t die Schriftart ein die als erste Priorit t zur Anzeige des Shops verwendet werden soll 2 Priorit t ist die Schriftart die verwendet wird wenn der Surfer die unter 1 Priorit t eingetragene Schriftart auf seinem Computer nicht inst
11. ber mehrere Seiten in Hidden Feldern Enth lt ein String viele Sonderzeichen kann dessen URL encodierter String viel l nger als der Orginalstring werden da jedes Sonderzeichen durch drei Codier Zeichen ersetzt wird Dies muss vor allem beachtet werden wenn an irgend einer Stelle eine L ngenbeschr nkung verwendet wird Eingabesting Funktion Ausgabestring string zum bertragen urlencode 22string 22 zum 27 FCber tragen 27 22string 22 zum 27 FCber urldecode string zum bertragen tragen 27 Zu beachten ist dass der Punkt von urlencode nicht als Sonderzeichen behandelt wird was zu Problemen f hren kann wenn ein Variablenwert als Var iablenname verwendet werden soll Mit der Funktion str_replace kann auch der Punkt noch durch die entsprechende ASCII Sequenz 2E ersetzt werden ser roplaca y zZE Seinserzen urldecode ersetzt alle ASCII Sequenzen mit dem entsprechenden Zeichen wodurch eine gesonderte Behandlung des Punktes wegf llt PHP Funktion htmispecialchars Die Funktion htmlspecialchars wandelt die folgenden Zeichen so um dass die Darstellung in HTML korrekt erfolgt phpeppershop dokumentation sdw Seite 54 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 e wird als amp amp dargestellt e wird als amp quot zur ckgegeben e lt wirdin amp lt umgewandelt e gt wird als amp gt ausgegeben Eingabesting Funktion Ausg
12. je nachdem ob das Bestellungsmanagement erw nscht ist oder nicht Eingestellt wird dieses Attribut in den allgemeinen Shop Einstellungen setshopsettings Argumente keine R ckgabe wert Y oder N String USER_ARTIKEL_HANDLING php getvaroptinc Beschreibung DA Liest aus den Shop Settings aus wieviele Felder f r die Erfassung von Optionen und Variationen bei einem Artikel mindestens dargestellt wer den Zus tzlich wird noch der Wert ausgelesen wie viele leere Felder angezeigt werden wenn die Anzahl der eingegeben Optionen Variationen die An zahl der eingestellten Minimalfelderanzahl bersteigt Argumente keine R ckgabewert entweder Array 1 Element Optionen Inkrement Opt_inc 2 Element Variations Inkrement Var_inc 3 Element Optionen Basisanzahl Opt_anz 4 Element Variations Basisanzahl Var_anz oder Abbruch per die Funktion phpeppershop dokumentation sdw Seite 79 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 USER_ARTIKEL_HANDLING php getSSL Beschreibung DA Diese Funktion berpr ft ob SSL eingeschaltet wurde Wenn ja wird eine absolute URL zusammengebaut und https vorangestellt Um wieder aus dem SSL Bereich austreten zu k nnen kann man der Funktion im Flag noSSL true mitteilen dass man den SSL Bereich verlassen will Es wird dann als R ckgabewert eine URL mit http zur ckgegeben Mit der Variable server wir
13. DA L scht ALLE abgelaufenen Bestellungen und ihre Artikel und Kunden Refe renzen Problematik Dies ist eine USER Funktion die aber eine Administrator Operation ausf hrt gt Sicherheitsl cke Besser w re eine Art Cron Job der mit Admin Rechten diese Operation ausf hrt Wir dachten uns aber auf diese Weise muss der Admin nichts machen und der Shop h lt die Anzahl der einge tragenen Bestellungen bei ausgeschaltetem Bestellungsmanagement von al leine in Grenzen Diese Funktion ist zeitaufw ndig und soll an einem selten be suchten Platz aufgerufen werden bei uns nach Bestellungs Abschluss Argumente keine R ckgabewert keiner USER_BESTELLUNG php getversandkostensettings Beschreibung DA Liefert die Versandkosten Einstellungen des Shops Argumente Setting_Nr im Hinblick auf mehrere zu verwaltende Shops R ckgabewert Versandkosten Objekt USER_BESTELLUNG php getversandkostentext Beschreibung DA Liefert den Beschreibungstext des Rechnungspostens f r die Versandkosten im Warenkorb z B Versand und Verpackungskosten Argumente Setting_Nr im Hinblick auf mehrere zu verwaltende Shops R ckgabewert String USER_BESTELLUNG php berechneversandkosten Beschreibung DA Berechnet die Versandkosten einer Bestellung und schreibt die Werte auch gleich in die entsprechenden Variablen der angegebenen Bestellung Es wird je nach Bezahlungsart noch die Nachnahmegeb hr
14. Datei Formular in welchem man die Versandkostensettings editieren kann Funktionsname USER_BESTELLUNG_ DARSTELLUNG php darstellenBestellung Beschreibung DA Diese Funktion stellt die im Argument gelieferte Bestellung in HTML dar und leitet die Daten dann zur bertragung in die Datenbank weiter Ist der bergebene l schen Wert true dann wird die M glichkeit ange zeigt Artikel aus dem Warenkorb zu entfernen ist bei der Darstellung des Warenkorbes zusammen mit den Adressdaten der Bestellung nicht mehr erw nscht Ist das Flag Admin true so werden f r die Buttons andere Pfade benutzt Damit die Bestellung f r immer statisch bleibt und die Preise nicht jedes Mal neu berechnet werden wenn man im Bestellungsmanagement die Bestellungen editiert musste noch ein weiteres Flag eingebaut werden welches die Funktion berechneversandkosten ausklammert Argumente Bestellungs Objekt l schen Flag Administrator Flag R ckgabewert Darstellung des Warenkorbes in HTML USER_BESTELLUNG_ DARSTELLUNG php darstellenStringBestellung Beschreibung DA Diese Funktion schreibt den Warenkorb Inhalt formatiert in einen String der zum Versand der E Mails an den Shopbenutzer und betrei ber gebraucht wird Funktionalit t ansonsten hnlich wie Funktion darstellenBestellung Argumente Bestellungs Objekt R ckgabewert Abgef llte Bestellung in einem String Datei Funktionsname SHOP_ADM
15. Demo Shop und Shop Settings einf gen s in tialize php User Datenbankverbindung aufnehmen e ADMIN_initialize php Administrator Datenbankverbindung aufnehmen Ben tigte Softlinks und Kopie des CSS Files erstellen Netscape Kompatibilit t Angepasste Shop Datenbank und User im MySQL DBMS erstellen lt snopname Create sgL e shopname_insert sql 3 Erl uterung der n tigen Eingaben I m Teil i En Les Der Name des Shops wird dazu verwendet dem Shop einen ein deutigen Namen zu geben Auch die Datenbank und das Shop Ver zeichnis werden so heissen CD rer Home des Shops einsbhceo Vopn ale schon zwi Iatonbank Vsor haben ckt Ziel Gracuion lassen wollen keahlen sis zuei Vir enpfeblen diss de nur So umer Security Konzept wallstaendig greift pa Ein coder zuzi Ostenbsuk User benutzen 1 z23 L Sollen die Ueer own den Skripten s utbomstisch erzemtmelcescht werden Nenn se keira LDatsenbank O ser anlegecn dumrfan vashlec xis n etentsllz vann e Die Frage nach ein oder zwei Da tenbank Usern spricht das Pro blem vieler Benutzer an welche von ihrem Provider nur einen User zugewiesen bekommen und auch auf Anfrage keinen weiteren User erhalten Wenn man hier 1 eln tippt muss man sich bewusst sein dass das Sicherheitskonzept des PhPepperShops etwas untergraben wird Das heisst im Klartext vom Datenbank Management System her gesehen k nnte die Izer schon existieren
16. NOT NULL DEFAULT IhrShop shopserver com Admin_pwd CHAR 16 NOT NULL DEFAULT machshop Abrechnung_nach_Preis enum N Y NOT NULL keineVersandkostenmehr enum N Y NOT NULL DEFAULT N keineVersandkostenmehr_ab DOUBLE NOT NULL DEFAULT 0 0 Rechnung enum N Y Nachnahme enum N Y Vorauskasse enum N Y Kreditkarten_Postcard enum N Y DEFAULT N Nachnamebetrag DOUBLE NOT NULL DEFAULT 0 0 Kontoinformation VARCHAR 255 NOT NULL DEFAULT Einzahlungen bitte auf unser Postkonto PC 40 168786 4 Waehrung CHAR 4 NOT NULL DEFAULT CHF ShopVersion CHAR 48 NOT NULL DEFAULT Oktober 2001 Gewichts_Masseinheit CHAR 16 DEFAULT kg Thumbnail_Breite INT NOT NULL DEFAULT 100 NOT NULL DEFAULT NOT NULL DEFAULT Y NOT NULL DEFAULT YT NOT NULL e E DE Version v 1403 NOT NULL DEFAULT N Abrechnung_nach_Gewicht enum N DEFAULT N Y NOT NULL AGB TEXT Max 65535 Bytes gross in MySQL SSL enum N Y NOT NULL DEFAULT N Bestellungsmanagement enum N Y NOT NULL DEFAULT Y SuchInkrement INT NOT NULL DEFAULT 10 max_session_time BIGINT In anderen DBs ev ein anderer Typ 10 Stellen Opt_inc INT NOT NULL DEFAULT 3 Var_inc INT NOT NULL DEFAULT 3 Opt_anz INT NOT NULL DEFAULT 5 Var_anz INT NOT NULL DEFAULT 5 PRIMARY KEY Setting_Nr UNIQUE UC_Setting_Nr Setting_Nr NOT NULL Abrechnung_nach_Pauschale enum N Y DEFAULT Y Pauschale_text v
17. Schriftgr sse isp Schriftgr sse 16px Text Dekoration keine Text Dekoration keine z Schriftstil norma zl Schriftstil norma sl Main Frame Haupt Fensterteil Schrifteinstellungen Normaler Text Links Schriftfarbe Co ch Gin Schriffarbe Cie ch Biss Schriftgewicht normal z Schriftgewicht normal r Schriftgr sse 16px Schriftgr sse L ps zl Text Dekoration keine Text Dekoration unterstrichen Schriftstil normal r Schriftstil normal r berschrift 1 gr sste berschrift 2 Schriftfabe WEHRT co Bo zcpptarte BR ci ein Schriftgewicht fett z Schriftgewicht fett z Schriftgr sse 30px 2 Schriftgr sse 25px zl Text Dekoration keine z Text Dekoration keine Shop_ Settings z Schriftstil normal z Schriftstil Puma berschrift 3 berschrift 4 Schriftfabe WR sh Bo Schriffarbe RT ci ein Schriftgewicht fett z Schriftgewicht fett r Schriftgr sse 20p2 2 Schriftgr sse 16px Text Dekoration keine Text Dekoration keine z Schriftstil normal z Schriftstil normal D berschrift 5 kleinste Schriftfarbe EHRT sh En Schriftgewicht fett p Schriftgr sse 12px Text Dekoration keine z Schriftstil normal D Speichern Abbrechen Fertig a Internet phpeppershop dokumentation sdw Seite 147 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Bilder Hintergrund amp Shoplogo hochladen S e k nnen f r
18. String Session_ID String R ckgabewert true bei Erfolg oder Abbruch per die Funktion USER_BESTELLUNG php validateCC Beschreibung DA Die folgende Funktion von Error Brett Brett InterWebDesign com berpr ft die Kreditkartennummer auf Vollst ndigkeit und Pr fsumme MOD 10 Verfahren Das Datum wird nicht hier validiert Argumente Kreditkartennummer String Kreditkarten_Institut String true bei korrekter Kreditkartennummer false bei falscher Kreditkartennummer 1 bei nicht korrektem Kreditkarten Institut R ckgabewert USER_BESTELLUNG php toCharArray phpeppershop dokumentation sdw Seite 77 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Beschreibung Diese Funktion gibt eine Zeichenkette als Array zur ck Sie wird bis jetzt nur DA von validateCC ben tigt Argumente String R ckgabewert Array der Zeichen vom Eingabestring USER_BESTELLUNG php schliessenBestellung Beschreibung Damit ein Kunde seine Bestellung nicht mehr ab ndern kann wird seine Be stellung mit dem Attribut Bestellung_abgeschlossen in der Tabelle bestellung als unver nderbar markiert In der Datenbank wird ferner die Session ID bei diesem Eintrag gel scht Somit erh lt er mit der gleichen Session ID eine neue Bestellung in der Datenbank siehe auch test_create_Session Datei Argumente Session_ID String abschliessen_Flag enum Y N R ckgabewert true
19. Top Frame wird verwendet um Funktionen anzubieten die jederzeit ausgef hrt werden k nnen Warenkorb anzeigen Zur Kasse Hilfe Suchfunktion und um den Shopna men oder das Shoplogo permanent anzuzeigen Im linken Frame Left Frame werden die Artikelkategorien und Unterkategorien zur Aus wahl angezeigt Dieses Frame wird aktualisiert sobald der Shopbenutzer eine Kategorie oder Unterkatgorie anklickt Das gr sste Frame Content Frame wird zur Userinteraktion verwendet In diesem Frame l uft praktisch die gesamte Interaktion mit dem Benutzer ab Beim Anklicken eines Artikelthumbnails und des Hilfe Buttons wird ein neues Fenster ge ffnet Dieses POP UP ist mittels JavaScript realisiert Die entsprechenden JavaScript Funktionen befinden sich direkt im HTML Quelltext der jeweiligen Sites Die POP UP Fens ter k nnen entweder per eingeblendetem Link oder mittels Schliessen Button wieder ge schlossen werden Es ist Shopweit ein Fontset definiert Alle Formatierungsangaben befinden sich an zentraler Stelle in einem CSS File auf welches im Layout Management noch genauer eingegangen wird 2 5 2 Layout Administrationsmodus Das Benutzerinterface f r den Shopadministrator berarbeiteten wir vollst ndig Der Admi nistrationsbereich besitzt nun eine eigene USS Datei damit er immer gleich aussieht auch wenn der Shopadministrator im Shoplayout Men Farbeinstellungen t tigt die eine Bedie nung des Shops verunm sglichen phpep
20. Unterkategorie_von String der neuen Kategorie Unterkategorie R ckgabewert true bei Erfolg SHOP_ADMINISTRATION php delKategorie Beschreibung DA Eine Kategorie l schen Dabei werden die noch darin enthaltenen Artikel sofern sie keiner weiteren noch existiernden Kategorie angeh ren in die Kategorie Nichtzugeordnet abgelegt Diese Funktion ben tigt seit der Implementierung von Unterkategorien und Mehrfachkategorien pro Arti kel eine komplexe Logik Ist das Artikelloeschen_Flag gleich true so wer den die Artikel gel scht Argumente Kategorie_ID INT Artikelloeschen_Flag boolean R ckgabewert true bei Erfolg SHOP_ADMINISTRATION php verschiebenKategorie Beschreibung DA Eine Unter Kategorie verschieben Die Funktionalit t um die Positi onsnummern nach dem Verschieben wieder richtig zu verteilen wurde in die Funktion katposschieben verlest Argumente Kategorie_ID INT neue Positionsnummer INT aktuelle und neue Unterkategorie Strings R ckgabewert true bei Erfolg SHOP_ADMINISTRATION php umbenennen amp Kategorie Beschreibung DA Eine Unter Kategorie umbenennen Es wird der Name der entsprechen den Kategorie aktualisiert Falls die Kategorie Unterkategorien besitzt wird deren Attribut Unterkategorie_von nachgef hrt Argumente Kategorie_ID INT Neuer_Name String R ckgabewert true oder Abbruch per die Funktion SHOP_ADMINISTRATION php katp
21. bank beibehalten Man muss hierbei aber ber cksichtigen dass die Bilder des Shops Hin tergrundbilder Buttons etc nicht in der Datenbank gespeichert sind und gel scht werden Der Shop wird komplett deinstalliert Alle vom Shop verwendeten Verzeichnisse und Dateien sind danach gel scht phpeppershop dokumentation sdw Seite 134 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 3 2 Backup und Restore mit MySQL Hier zeichnet sich nun der Vorteil unseres Konzepts aus Der ganze Shop ist in der Daten bank abgebildet inkl Konfiguration Daten und Bilder Wenn man also ein Backup der Da tenbank erstellt hat man zugleich auch ein Backup des Shops mit Ausnahme der Buttons und Hintergrundbilder des Shops Diese sind aus Performancegr nden nicht in der Daten bank sondern im Dateisystem untergebracht Die Daten liegen aber komplett in der Daten bank Wir gehen hier spezifisch auf MySQL als Datenbank ein weil sie als reine Webdatenbank am meisten benutzt wird Man kann ein Datenbank Backup auch ber kombinierte SELECT Statements kompatibel mit allen Datenbanken ber alle Tabellen machen Wir haben uns dies schon berlegt aber aus Zeitgr nden nicht mehr implementieren k nnen Das komplette Backup eines PhPepperShops umfasst genau genommen zwei Teile 1 Backup von User Buttons und Hintergrundbildern 2 Backup der Daten des Shops Datenbank 3 2 1 Automatisiertes Datenbank Backup Das automatisiert
22. ber die PHP4 interne Session Verwaltung abgewickelt und wurde grunds tzlich ohne Ver nderung aus der Projektarbeit bernommen PHPA4 ist grunds tzlich in der Lage die Verkn pfung der Zugriffe ber URL oder Cookies vorzunehmen Die Session Konfiguration l uft weitgehend ber die Datei php ini ab bei uns im Verzeichnis etc Dort beliessen wir alle Session relevanten Einstellungen auf den Default Werten Auf diese Weise konfiguriert arbeitet unser Session Management mit Coo kies deren Lebenszeit auf die Laufzeit des Browsers beschr nkt ist 2 3 1 Maximale Session Dauer Weiter wird in der php ini die maximale Zeit einer Session auf 1440 Sekunden also rund 24 Minuten beschr nkt Default Einstellung In den Shop Settings kann der Shop Administra tor aber die Zeit einer Session ver ndern Was immer er in diesem Feld eingibt wird nur zum Tragen kommen solange die dort angegebene maximale Session Zeit k rzer oder gleich lang ist als die in der php ini Weiter ist zu beachten dass die Zeit die in den Shop Settings eingestellt ist sich nicht direkt auf die Session Variable auswirkt Es gibt PHP Funktionen mit welchen man die Variablen in der php ini ndern k nnte und somit auch die obere Limite flexibler setzen k nnte Auf den Einsatz einer solchen Funktion haben wir aber verzichtet da kaum ein Provider Freude dar ber empfindet wenn seine Kunden in seiner php ini nderungen vornehmen k nnten Ausserdem hat man als
23. gerne strukturiert haben m chte Weiter macht es Sinn nicht einfach den Source Code in das CVS Root Verzeichnis des jewel ligen Projekts abzulegen Man sollte vielmehr eine kleine Struktur verwenden Die meisten Projekte haben mehrere Verzeichnisse und manchmal sogar noch Informations Dateien im CVS Root Sinnvoll erscheint uns ein Verzeichnis namens src f r den Source Code und ein weiteres f r die Dokumentation meistens doc genannt Hier lohnt es sich einmal bei schon bestehenden Projekten vorbeizuschauen und sich anzusehen wie sich diese Projekte organi siert haben Wenn man Dateien hinzuf gt welche lediglich informativen Charakter besitzen sollte man diese mit Grossbuchstaben schreiben da sie von UNIX dann am Anfang der Da teiauflistung dargestellt werden SourceForge akzeptiert wie schon weiter oben erw hnt nur SSH bertragungen Folglich muss auch bei CVS SSH verwendet werden Um CVS mitzuteilen dass es SSH benutzen soll ist es eine Variable zu exportieren man kann auch setenv Linux export verwenden export CVS_RSH ssh Damit dieser Eintrag nach jedem Login zur Verf gung steht empfiehlt es sich diese Zeile der Datei etc profile local hinzuzuf gen Den Quellcode ins Repository importieren Import Einen CVS Import macht man grunds tzlich nur zu Beginn eines Projekts um den vielfach schon vorhandenen Code ins CVS Repository aufzunehmen Zuerst wechselt man in das Verzeichnis dessen Unterverzeichnisse und
24. ln Rasmus Lerdorf 1 Auflage 2000 111 Seiten ISBN 3 89721 225 0 PHP 4 Das bhv Taschenbuch bhv Verlag Landsberg Uwe Hess G nther Karl 1 Auflage Apr l 2001 764 Seiten ISBN 3 8287 5057 5 Linux Enterprise PHP Special Ausgabe Sonderausgabe Herbst 2001 98 Seiten PHP Archive Foren http www hotscripts com http www phpbuilder com http www phparchiv de Dies war wie auch in der Projektarbeit un ser Hauptbuch Es enth lt eine Vielfalt an Themen die alle ziemlich ausf hrlich erkl rt werden Aber auch dieses Buch hat seine Grenzen Bilder in Datenbank speichern gr ssere Projekte mit PHP Dieses Buch ist die Vorg nger Version des oben genannten Wir haben es selten konsul tiert aber doch ab und zu etwas daraus brauchen k nnen Eine praktische kompakte Zusammenfas sung aber leider nur f r PHP3 Eine gute Einf hrung in die Grundlagen von PHPA der Stoff geht aber nicht all zu tief Ein Blick n die aktuelle PHP Entwicklung mit Vorstellung der PHPLib und PEAR Viele interessante professionelle Ans tze Diese drei Pages halfen uns w hrend der Entwicklung oft weiter Viele Scripts findet man auf hotscripts und im phparchiv Kom petente Foren in phpbuilder phpeppershop dokumentation sdw Seite 149 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 4 1 2 Apache Webserver Apache Web Server Installation Konfi Ein sehr tief gehendes Buch Half uns sehr
25. t angepasst Eingabe Plausibilit tspr fung im Shop Administrationsmodus per Java Skript e Versandkostensettings Di 9 Oktober 01 e Versandkostensettings fertig Formular muss nochmals leicht berarbeitet werden Kategorienmanagement GUI grosse Probleme Netscape 4 xx und Java Script Mi 10 Oktober 01 e Kategorienmanagement Do 11 Oktober 01 e Kategorienmanagement Sonderzeichen f hig gemacht e Backup Shop angeschaut Kostenlose Artikel implementiert Fr 12 Oktober 01 e Datenbank auf CRM vorbereitet e Analyse CRM und Erstellung CRM Objekte Shop Sonderzeichen f hig gemacht Mo 15 Oktober 01 e CRM Shop benutzerseitig implementiert Di 16 Oktober 01 Dynamische Adresseingabefelder Suche erweitert um Anzahl Suchresultate Suche mit mehreren Begriffen m glich wie bei www google com Mi 17 Oktober 01 e GNU PG Versuch 1 Zahlungsm glichkeiten CRM Kreditkarten Datenbank objektm ssig Administrator m ssig implementiert e Versandkostensettings Update Do 18 Oktober 01 Shopbuttons Upload fertiggestellt e Nachnahmegeb hr Vorauskasse im Shop integriert Update nicht m glich da Netz nicht verf gbar phpeppershop dokumentation sdw Seite 156 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 Ganzer Nachmittag Mailserver nicht verf gbar Totalausfall LAN nichts geht mehr Stundenlang vi i E E Cl IS i DL 955 4 kB sec UL 0
26. true bei Erfolg sonst Abbruch per die Funktion USER_BESTELLUNG php gibBestellung_an_Kunde Beschreibung DA Ordnet eine Bestellung einem Kunden zu in Tabelle bestellung_kunde Argumente Bestellungs_ID INT Kunden_ID String R ckgabewert true bei Erfolg USER_BESTELLUNG php delBestellung_von_Kunde phpeppershop dokumentation sdw Seite 75 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Beschreibung DA L scht alle Bestellungen eines Kunden Wird ben tigt um persistente Kunden ihre Bestellungen und deren Referenzen zum zu l schenden Kunden zu entfer nen Zuerst werden alle zu l schenden Bestellungs_IDs ausgelesen dann alle Refe renzen vom Kunden zu den Bestellungen gel scht und zum Schluss die Bestel lungen entfernt Argumente Kunden_ID String R ckgabewert true bei Erfolg USER_BESTELLUNG php getAttributobjekt Beschreibung DA Gibt ein Attr but Objekt zur ck darin befinden sich in Arrays alle Attribute sortiert nach ihrer jeweiligen Positions Nr Argumente keine R ckgabewert Attribut Objekt USER_BESTELLUNG php setAttributobjekt Beschreibung Setzt alle Attribute in der Tabelle attribut Argumente Attribut Objekt DA R ckgabewert true bei Erfolg USER_BESTELLUNG php checkLogin Beschreibung Diese Funktion berpr ft die eingegebenen Login Daten und veranlasst dann je nach Eingabe DA einen neuen
27. 15 November 2001 HE 28 LIED en een 28 PO I ER 28 ZI EE 28 II JIPEG SOLL WAL ee een a ee aaa 29 EAR EE 29 PHP konfigurieren und kompileren 29 EIERE 30 STATT EE 30 1 8 2 Einrichten eines Passwort gesch tzten Bereichs mit bhtaccesg 3l 1 8 3 Source Rorseseinrichten asia in innen 33 Eimel EE 33 Dource Forse einrichten 33 Eigener ENEE 33 Ein nenes Projekt lancieren u s nah geugeeheg gengt a ae 33 Das NEUE E emr ichte are een 33 bersicht des Projekts EE 34 Trove C atetoris a ON EE 34 Pubic Iniormat O EH 34 Entwiekler einrichten sun ae 35 Webseiten f r das Projekt aufsetzen 35 Ma l nelisten anlesen EE E 35 Newe Tore leede 36 Dokumentation een irn 36 Bug Support Patch Feature Request Tracker n n 36 EE EE 37 Wa E EE 37 CVS Entwick EE E ner 37 CVS f r sein Projekt auf SourceForge emmmchten 37 Den Quellcode ins Repository importieren OUmport nn 38 Arbeitskopie aus dem Repository auschecken Checkout 38 Upgedatete Datei zur ck ins Repository schreiben Update Commit 39 Eine neue Datei ins Repository einf gen Add Gomm 39 Webzugriff auf das Repository Diff 31 39 Eine Datei oder ein Verzeichnis entfernen 40 Eine Datei verschieben are 40 ee 40 Weitere Services von ourceborge 41 Aufsaben Task Management serie 41 EE 41 Comple Ca EE 41 MySOL D tenbank TT 41 Virtual Hosto SEVICE eet Ee 41 Re zu Source Fore E
28. 165 Pixel Fontset Einstellungen 1 Priorit t aris fl 2 Priorit t Helvetica 3 Priorit t Geneva 4 Priorit t Swiss 5 Priorit t SunSans Regular Top Frame oberer Fensterteil Schrifteinstellungen Shoptitel Admin Stern Schriftffarbe IRTSS GJ255 BJ255 Schriftfarbe J255 B f255 Schriftgewicht fett z Schriftgewicht normal r Schriftgr sse 30px Schriftgr sse 15px Text Dekoration keine Text Dekoration keine z Schriftstil italic kursiv Schriftstil normal z Left Frame linker Fensterteil Schrifteinstellungen Kategorien und Unterkategorien Mausover gt Kategorien und Unterkategorien Schriftfarbe IRI2ss Gl2ss BJ255 Schriftfarbe BR ch ein Schriftgewicht fett z Schriftgewicht fett p Schriftgr sse its Schriftgr sse 16px Text Dekoration keine Text Dekoration keine z Schriftstil normal z Schriftstil normal D Main Frame Haupt Fensterteil Schrifteinstellungen Normaler Text Links Schriftfabee Co ch Ein Schriffaebe Ge ci Eis Schriftgewicht normal z Schriftgewicht normal x Schriftgr sse its Schriftgr sse 16p Text Dekoration keine Text Dekoration unterstrichen gt Schriftstil normal z Schriftstil normal r berschrift 1 gr sste berschrift 2 Schriftfabe WEHRT SI Bo Schriffate Co ci ein Schriftgewicht fett
29. 5 kB sec Kreditkarten Zahlungsworkflow Analyse e GNU PG Versuch 2 Artikelhandling berarbeitet Fr 19 Oktober 01 Eigene Pop Up und Hilfe Funktionen f r Administrationsmodus die mit dem CSS File des Administrationsmodus arbeiten Kreditkarten Zahlungsworkflow beendet Sa e Buttons Upload um Kategoriebuttons erweitert e Admin Buttons einheitlich erstellt Sa Testergebnisse abgearbeitet und Bugs behoben Ga Bestellmanagement an CRM anpassen e Raumreservierung f r Pr sentationen DA Tag Mo 22 Oktober 01 e Festlegung Layout f r Dokumentation e Beginn Dokumentation Di 23 Oktober 01 Fr 26 Oktober Dokumentation Diplomarbeit Mo 29 Oktober 01 e Abgabe Diplomarbeit phpeppershop dokumentation sdw Seite 157 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 4 4 GPL GNU General Public Licence Dieses Programm ist freie Software Sie k nnen es unter den Bedingungen der GNU General Public License wie von der Free Software Foundation herausgegeben weitergeben und oder modifizieren entweder unter Version 2 der Lizenz oder wenn Sie es w nschen jeder sp te ren Version Die Ver ffentlichung dieses Programms erfolgt in der Hoffnung dass es Ihnen von Nutzen sein wird aber OHNE JEDE GEWAHRLEISTUNG sogar ohne die implizite Gew hrleis tung der MARKTREIFE oder der EIGNUNG FUR EINEN BESTIMMTEN ZWECK Details finden Sie in der GNU General Public License Sie s
30. 65 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 2 PHP Module und Funktionen Im folgenden wird nun die Implementation des Shops aus struktureller Sicht genauer erl u tert Die bersicht soll helfen den Aufbau des Shops besser verstehen zu k nnen Die Modul und Funktionsbeschreibungen geben einen berblick ber die Abbildung der Shop Funktio nalit ten auf die PHP Scripte Damit man den Unterschied von der Projektarbeit zur Di plomarbeit sieht wurden ge nderte und neu geschriebene Funktionen und Module mit einem DA gekennzeichnet 2 2 1 bersicht Der Shop wurde funktionell in mehrere Schichten unterteilt Die PHP Module Dateien sind jeweils einer der Schichten zugeordnet Schichtenmodell des PhPepperShops HTML Darstellung Frameset Kunden Navigation im top Frame Darstellen Module hier werden die komplexen Abl ufe in Funktionen mit HTML Plain Text Output behandelt Aufruf Module rufen Funktionen auf und generieren HTML Payment Interface Schnittstelle f r externes Zahlungssystem PHP Funktionen Datenbankanbindung Getrennte User und Administrator Datenbankanbindung Datenbank Wrapper Spricht verschiedene Datenbanken an bietet nach oben eine einheitli che Schnittstelle f r Datenbank Funktionen SQL Statements User und Administrator SQL Statements zentral in je einer Datei Klassendefinitionen Definitionen der komplexeren Daten
31. ADMINISTRATION W hlen Sie eine GIF Grafikdatei gif auf Ihrer Festplatte und danach welchen Shop Button Knopf sie damit ersetzen wollen wechseln zu Links 7 mit Browse Durchsuchen kann ein Bild auf der Festplatte ausgew hlt werden nur GIF Dateien Durchsuchen Bestellung absenden nn C Hilfe Artikel C Artikel suchen Warenkorb anzeigen C Artikel anzeigen nach Suche weiter zur Kasse zur ck In den Warenkorb legen 5 Artikel aus YyYarenkorb l schen Kategorie leer Kategorie schliessen Kategorei ffnen Kategorie ausgew hlt Bild hochladen Abbrechen ge wu e e suchen Warenkorb anzeigen S Artikel anzeigen weiter zur Kasse A zur ck 4 4 In den Warenkorb legen SS l schen X E Fertig Internet phpeppershop dokumentation sdw Seite 148 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 4 Anhang 4 1 Literaturverzeichnis Nachfolgend eine Liste mit allen Quellen und Literaturverweisen aufgegliedert nach den einzelnen Themen die durch das Webshop Programming tang ert werden 4 1 1 PHP PHP 4 Grundlagen und Profiwissen Carl Hanser Verlag M nchen Wien J rg Krause November 2000 1161 Seiten ISBN 3 446 21546 8 PHP Grundlagen und Profiwissen Carl Hanser Verlag M nchen Wien J rg Krause M rz 2000 1067 Seiten ISBN 3 446 21301 5 PHP kurz amp gut O Reilly Verlag K
32. Artikel _ ID Kategorie_ID Variations_Nr INT NOT NULL DEFAULT 1 Variationstext CHAR 64 Aufpreis DOUBLE NOT NULL DEFAULT 0 0 FK_Artikel_ID INT NOT NULL FOREIGN KEY FK_Artikel_ID REFERENCES artikel Artikel_ID b_k_ID INT NOT NULL DEFAULT O AUTO_INCREMENT FK_Kunden_ID VARCHAR 255 NOT NULL FK_Bestellungs_ID INT NOT NULL FOREIGN KEY FK_Kunden_ID REFERENCES kunde b_k_ID Kunden_ID PRIMARY KEY Attribut_ID CHAR 32 E String CHAR 255 PRIMARY KEY Attribut_ID UNIOUE UC_Attribut_ID Attribut_ID NOT NULL Kreditkarten_ID INT DEFAULT 0 NOT NULL AUTO_INCREMENT Hersteller CHAR 32 NOT NULL Handling enum intern extern DEFAULT intern benutzen enum N Y NOT NULL DEFAULT PRIMARY KEY Kreditkarten_ID UNIQUE UC_Kreditkarten_ID Kreditkarten_ID NOT NULL YY phpeppershop dokumentation sdw Seite 108 von 169 2001 R Glanzmann amp J Fontanil Z W 15 November 2001 Setting_Nr INT NOT NULL DEFAULT 0O AUTO_INCREMENT MwStsatz DOUBLE NOT NULL DEFAULT 7 6 MwStpflichtig enum N Y NOT NULL DEFAULT Y MwStNummer INT NOT NULL DEFAULT 0 Name CHAR 48 NOT NULL DEFAULT shop_db Adressel CHAR 48 NOT NULL DEFAULT Adresse 1 Adresse2 CHAR 48 NOT NULL DEFAULT Adresse 2 PLZOrE CHAR 48 NOT NULL DEFAULT PLZ und OrE Tell CHAR 24 NOT NULL DEFAULT Telefon Nummer 1 Tel2 CHAR 24 NOT NULL DEFAULT Telefon Nummer 2 Email VARCHAR 128
33. Artikels in einem Fenster darstellen Mit der M glichkeit das Fenster per Link zu schliessen Diese Funktion musste als eigene Datei ausprogrammiert werden wegen HTML Variable darstellen SHOP_ADMINISTRATION_ AUFRUF php 1 Beschreibung DA Ein neuer leerer Artikel wird erzeugt und an darstellenArtikel weiter gegeben Auf diese Weise kann man neue Artikel in die Datenbank auf nehmen SHOP_ADMINISTRATION_ AUFRUF php 101 Beschreibung DA Einem Artikel eine oder mehrere Kategorien zuordnen Dies ist die Sta tion nach der Eingabe der Artikeldaten Man kommt von der Darstellen Funktion darstellenArtikel Artikel hierhin Von hier aus geht es wei ter ins Modul bild_up php wo die Bilder zum Artikel gespeichert werden k nnen SHOP_ADMINISTRATION_ AUFRUF php phpeppershop dokumentation sdw Seite 90 von 169 2001 R Glanzmann amp J Fontanil Z W 15 November 2001 Modul Aufruf Module Administrationsaufrufe Beschreibung DA Auswahlmen Kategorienwahl und Artikelwahl wenn man einen Ar tikel zum Bearbeiten L schen ausw hlen will Wenn man auf eine Ka tegorie Unterkategorie klickt baut sich das Fenster neu auf und man kann die sich darin befindenden Artikel sehen Wenn man sich hier f r einen entschieden hat geht es weiter zu darstellen 5 SHOP_ADMINISTRATION_ AUFRUF php 5 Beschreibung Nachdem der Artikel bearbeitet wurde wird hier e
34. Bild gif jpg oder png zum hochladen mit Durchsuchen Browise kann ein Bild auf der Festplatte ausgew hlt werden Durchsuchen Bild hochladen Abbrechen ha E Internet Screenshot Buttons hochladen Z Layoutmanagement Microsoft Internet Explorer S x Datei Bearbeiten Ansicht Favoriten Extras da ich gt A A Asuchen Ggravorten Heu ir A Adresse el http ien 96 138 78 glanzret phpeppershopfshopfAdmin SHOP_LAYOUT php darstellen 30 SHOP ADMINISTRATION W hlen Sie eine GIF Grafikdatei gif auf Ihrer Festplatte und danach welchen Shop Button Knopf sie damit ersetzen wollen 7 wechseinzu Links gt mit Browse Durchsuchen kann ein Bild auf der Festplatte ausgew hlt werden nur GIF Dateien Durchsuchen Bestellung absenden ee Hilfe Artikel Artikel suchen suchen Warenkorb anzeigen en W Artikel anzeigen nach Suche Artikel anzeigen weiter 2U C zur Kasse C zur ck p In den Warenkorb legen In den Warenkorb legen et Artikel aus Warenkorb l schen l schen X Kategorie leer et l Fertig e Internet 2 5 4 Buttons im Administrationsbereich Da nach Abschluss der Diplomarbeit prinzipiell jedermann am PhPepperShop weiterentwi ckeln kann werden neue Men s im Administrationsbereich dazu kommen Damit trotzdem eine optische Einheitlichkeit bestehen bleibt haben wir genau definiert wie Administrations Buttons auszu
35. CVS System nicht benutzen k nnen wenn man sich nicht vorher einmal per SSH darauf eingelogst hat erst da wird das ben tigte Home Verzeichnis erstellt Trove Categorisation Man kann sich jetzt der Trove Categorisation seines Projekts widmen auf Edit klicken Hier kann man sein Projekt beschreiben und kategorisieren sodass Leute die nach Projekten mit gewissen Eigenschaften suchen auch f ndig werden Wenn ein Projekt nicht eindeutig zugeordnet werden kann darf man mehrere Einteilungen benutzen SourceForge erlaubt bis zu drei Einteilungen gleichzeitig Public Information dit Public Info Admin User Permissions Edit Public Info Edit Release Files Post Jon i oO Im Admin Bereich klicken wir nun au Project History HOSTS Edit Multimedia Data Database Admin Hier sieht man die ffentlich zug nglichen Dienste f r dieses Projekt und die Beschreibung dazu Hier muss nat rlich ein jeder selber w hlen was f r sein Projekt alles ben tigt wird Mailinglisten Foren und CVS wird wohl jeder w hlen Surveys wahrscheinlich eher weniger phpeppershop dokumentation sdw Seite 34 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Es ist erstaunlich was SourceForge einem hier alles anbietet und zwar gratis und franko Bleibt nur die Frage ob das von VA Linux gesponserte System auch f r immer bestehen bleibt 216 Mio Verlust bei 16 Mio Umsatz im letzten Quartal Unsere
36. Certificate Validity 365 Certificate Version 3 Die Schl ssel sollen nat rlich verschl sselt werden dies also best tigen zuerst CA dann Server Angemerkt sei hier noch dass bei jedem Neustart des Apache das Passwort f r den Server Key eingegeben werden muss phpeppershop dokumentation sdw Seite 27 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Apache Installation vervollst ndigen Im Apache Source Verzeichnis make install In s usr local apache 1 3 20 usr local apache current Damit der Apache auch mit SSL Unterst tzung startet m ssen wir noch einen kleinen Ein trag in der Datei usr local apache current bin apachectl ndern start if SRUNNING eq 1 then echo SO SARG httpa pid SPID already running continue ri Original Err SHTTIPD Ehen gaendert DSSL eingefuegt if SHETIPD DSSE Then echo SO SARG httpa started else echo SO SARG httpa could not be started ERROR 3 fi I Nun m ssen noch alle SSL Eintr ge aus der httpd conf default in die Datei httpd conf kopiert werden Es geht va darum die Module 1ibss1l und modss1l zu laden LoadModule PHP PHP ist ein komplexes System und damit es wie von uns erwartet funktioniert m ssen wir zuerst noch ein paar Hilfslibraries kompilieren und installieren Freetype Im Freetype Source Verzeichnis Jconfigure prefix usr local make make install PDFlib Im PDFlib Sourc
37. Commit auf SourceForge phpeppershop dokumentation sdw Seite 50 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 8 8 Variablen zwischen den Webpages transportieren Um einen Variablenwert von einer HTML Seite zur N chsten weiterzugeben k nnen fol sende Verfahren verwendet werden bermittlung direkt im Link GET Bei der direkten Daten bertragung werden der URL die zus tzlich zu bertragenen Varia blennamen und Werte angeh ngt Diese werden dann in der URI dem n chsten Dokument bergeben Aufbau der URI Link Var ablenname_l Variablenwert_1 amp Variablenname_2 Variablenwert_2 amp Praktisches Beispiel href auswertung php name mueller amp vorname hans amp darstellen 1 Es ist zu beachten dass die maximale URI L nge von Browser zu Browser unterschiedlich st Es sollte keine URI bergeben werden d e l nger als 2 KByte st Diese L ngenbe schr nkung grenzt das Einsatzgebiet stark ein Ausserdem d rfen Sonderzeichen nicht direkt bergeben werden Wir haben dieses Verfahren w hrend der ersten Projektarbeit einige Male dazu verwendet die Variable f r de Darstellen Weiche weiterzugeben Da der Surfer jedoch die ganze URI sieht und nat rlich auch ver ndern kann besteht die Gefahr dass er unvorhersehbare und nicht erw nschte Zust nde herstellen kann Aus diesem Grund haben wir weitgehendst auf den weiteren Einsatz von GET verzichtet bermittlung als Feld in ein
38. Dateien ins CVS Repository importiert werden sollen Alles was jetzt im aktuellen Verzeichnis und in allen Unterverzeichnissen vorhanden ist wird ins Repository bernommen Man muss folgendes Kommando benutzen um den Code zu importieren cvs d ext Loginname cvs Projektname sourceforge net cvsroot Projektname import Verzeichnisname vendor start Wobei der Loginname und der Projektname entsprechend ersetzt werden m ssen Mit dem Verzeichnisnamen ist das Verzeichnis gemeint in welchem die Daten auf dem CVS Reposi tory abgelegt werden sollen Nachdem man das Passwort eingegeben hat erh lt man noch de M glichkeit eine Message einzugeben es wird der UNIX Editor vi ge ffnet Wenn man nichts mitgeben m chte tippt man q Um den Editor wieder zu verlassen Wer eine Message eingeben m chte sollte sich doch zuerst mit dem vi Editor befassen Arbeitskopie aus dem Repository auschecken Checkout Ein grosser Vorteil von CVS ist dass man von berall auf der Welt an seinem Projekt weiter arbeiten kann Man muss lediglich ein Checkout machen und schon hat man seine aktuelle Arbeitskopie des Projekts Als eingetragener Entwickler cvs d ext Loginname cvs Projektname sourceforge net cvsroot Projektname co Verzeichnisname Wobei hier auch wieder der Loginname und der Projektname entsprechend ersetzt werden m ssen Mit dem Verzeichnisnamen ist das Verzeichnis gemeint welches man vom Repos tory herunterladen m chte phpeppe
39. Es ist ziemlich detailliert erhebt jedoch keinen Anspruch auf Vollst n digkeit und soll vor allem den Ablauf des Projekts dokumentieren Mo 10 September 01 e User pafei auf Webserver erstellt Drucker installiert e PGP installiert e Analyse Feedbacks und E Mails Erstellung ToDo List mit Festlegung der Priorit ten und grober Aufwandabsch tzung Di 11 September 01 e phpMyAdmin installiert htaccess f r phpMyAdmin eingerichtet Account bei SourceForge eingerichtet und aktiviert Jose Fontanil Apache 1 3 20 installiert erfolglose Installation von PHP 4 0 6 Mi 12 September 01 Namen f r Shop gesucht und gefunden PhPepperShop Apache 1 3 20 konfiguriert httpd conf Projekt PhPepperShop auf SourceForge eingereicht geht ca 72 Stunden bis Aktivierung e Von Hand installiert und konfiguriert PHP 4 0 6 e OpenSSL 0 9 6b ModSSL 2 8 4 Zlib Library Version 1 1 3 s IJG JPEG Software Version 6b e Freetype Vers 1 3 1 GD Library 1 8 4 Domain phpeppershop com registriert www domainbank net e Webserver f r phpeppershop eingerichtet und aufgeschaltet die Kosten werden momentan von Glarotech Informatikdienstleistungen getragen Do 13 September 01 e Projektsitzung e Projekt auf SourceForge er ffnet e User glanzret auf SourceForge erstellt Einarbeitung in CVS e PHP mit PDF Unterst tzung nochmals kompiliert Fr 14 September 01 Internet von der ZHW die meiste Zeit nicht
40. Formulars textarea Mehrzeiliges Texteingabefeld select Pull Down Menu passwort Verdecktes Eingabefeld button Schaltfl che hidden Unsichtbares Feld Aufbau eines Formluarfeldes lt input type Formularfeldtyp name Variablenname value Variablen wert gt Beispiel eines Formulars mit einem text und einem hidden Feld lt form method post action index php gt lt input type hidden name darstellen value 1 gt lt br gt lt B gt Geben Sie ihre Land ein lt B gt lt input type text name Land size 30 value Schweiz gt lt input type submit name weiter value weiter gt lt form gt Mit dem Attribut value kann den meisten dieser Eingabefelder ein Initialwert zugewiesen werden Dieser wird dem Surfer dann angezeigt und kann editiert werden Der editierte Wert wird dann beim Dr cken des Sendeknopfs als Variable bermittelt Um eine Variable unver ndert weiterzugeben zum Beispiel ber mehrere HTML Seiten kann sie in ein hidden Feld geschrieben werden Dieses kann vom Surfer nicht ver ndert werden und ist nur im Quellcode ersichtlich Das hidden Feld eignet sich auch sehr gut zur Weitergabe der Darstellungsweiche Entscheidung welche HTML Seite als n chstes ausge geben wird Was unbedingt beachtet werde muss ist dass Formularfelder nach der bermittlung bei gewissen Sonderzeichen z B einen Backslash vorgestellt haben Diese Backslashes m ssen mit der PHP Funktion stripslashes ent
41. Geben sie n E r nein ein ensaneten ein J jlal Ip Net Adain Loginhans Cheinshop_adein gt HUL Adein Passrort caino Hy Ll Shopusser Ioginnane asinehop umerD Meet Shopaser Fasawort Zu Tt Alle Eingaben eriasst Skopi a A a am m apitskvo edsin simin JAuzahl ODE User IB Adnin Loain IB Adris Deg ped Shopuser teirig user Shepuser Pwd Kaz Deet Sotcmatienbh erstellen 1 Um jortzufahbren bitte Enter oder heturn druecken phpeppershop dokumentation sdw Seite 132 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 nun auch jeder Shopbenutzer Artikel oder Kategorien l schen Mit der Frage ob die angegebenen User automatisch erzeugt respektive wieder gel scht werden sollen wird dem Fakt nachgekommen dass viele Benutzer von ihrem Provider el nen vordefinierten MySQL User zugesprochen bekommen und diesen nicht weiter ver n dern k nnen PhPepperShop richtet dann optional einfach seine Datenbank ein verzich tet aber darauf den die Datenbank User in MySQL anzumelden resp bei einer Dein stallation diese zu entfernen Hat man sich f r zwei Datenbank Benutzer entschieden kann man diese nun angeben Mit dem Admin Loginname ist der Datenbank User gemeint mit welchem der Shop je weils f r Administrator Aufgaben eine Verbindung zu MySQL aufbaut Der Shopbenutzer ist der Datenbank User welcher von den Kunden des Shops benutzt wird um mit der Da tenbank zu kommunizi
42. IBM DB2 oder einer Oracle Ou konkurrieren Ihr grosser Vorteil ist aber die grosse Unterst tzung in der Web Open Source Gemeinde Es gibt unz hlige Projekte welche MySQL als Datenbank nut zen Dies liegt nicht zuletzt auch daran dass MySQL sehr einfach zu handhaben ist Hier sei in diesem Zusammenhang noch das Projekt phpMyAdmin http www phpwizard net phpMyAdmin erw hnt welches auf PHP basierend eine sehr komfortable Oberfl che zur Datenbankadministration bietet PHP ist eine leistungsf hige Skriptsprache pr m r dazu ausgelegt im Web Umfeld verwen det zu werden PHP geniesst n seiner vierten Inkarnation eine breite Unterst tzung einer seits durch Webserver Einbindungen andererseits aber auch durch zahlreiche Funktionen die inzwischen in PHP implementiert wurden PHP ist einfach zu erlernen benutzt die viel fach verwendete ANSI C Syntax und unterst tzt von Haus aus viele Datenbanken Die f r das Webscripting unumg nglichen String Operationen hat es zum gr ssten Teil von Perl bernommen Die Einbindung des PHP Codes in HTML erfolgt analog zu Microsofts ASP Auf diese Weise wird von allen bekannten Sprachen und Techniken das Beste verwendet und in PHP vereint Wenn man mit Geld hantieren will kommt es auf Sicherheit an und die Anforderungen an s e sollte man nicht untersch tzen Die Daten bertragung von Kreditkartennummern und Benutzerdaten und ihren Eink ufen d rfen f r Dritte nicht einsehbar sein Das heisst d
43. MySQL Konfiguration sehr zu empfehlen Dieses Buch half uns vor allem bei schwieri gen Queries aber auch bei Fragen wie man gewisse Datenbank Aktionen berhaupt erst angehen soll Sehr zu empfehlen Der Stoff half uns beim Entity Relationship Design aber auch bei den Create Insert und Del SQL Scripts phpeppershop dokumentation sdw Seite 150 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 4 1 5 HTML JavaScript und Cascading Style Sheets HTML 4 Die Sprache des Web dpunkt Verlag Heidelberg Robert Tolksdorf 3 Auflage 1997 308 Seiten ISBN 3 920993 77 2 Jetzt lerne ich HTML Markt Technik Verlag M nchen Harald Tagl nger 1997 290 Seiten ISBN 3 8272 5305 5 Das grosse Buch JavaScript DATA BECKER GmbH amp Co KG D sseldorf Rainer Kolbeck 1 Auflage 1997 422 Seiten ISBN 3 8158 1321 2 JavaScript verlag moderne industrie 53227 Bonn Michael Seeboerger Weichselbaum 1 Auflage 2001 767 Seiten ISBN 3 8266 8106 1 Einf hrung in JavaScript http atlas ee fhm edu mm cd skript javas cr pt HTML Referenz http www teamone de selfhtml 4 1 6 Perl Einf hrung in die Perl Programmierung http userpage fu berlin de corff perl perl kurs html Perl Ein 25 Minuten Crashkurs http www opensecure de PerlanB perl_crash kurs htm Bietet einen tiefgehenden Einblick ins HTML leider schon etwas n die Jahre ge kommen Gutes Nachschlagewerk Farbtabe
44. Sybase Unterst tzung ist so gut wie abgeschlossen phpeppershop dokumentation sdw Seite 12 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 f r alle weiteren Datenbanken muss man nur noch zwei Klassen neu schreiben MySQL war f r uns erste Wahl weil diese Datenbank f r jedermann gratis zur Verf gung steht und bei den Internet Service Providern vielfach schon vorinstalliert ist Ihr Leistungs umfang kommt zwar nicht an den grosser Datenbanken heran wir haben uns aber mit dem DB Wrapper diese T re offen gehalten Abschliessend sei hier noch visuell dargestellt mit welcher Technologie de Teile des PhPepperShops realisiert wurden Die Datenbank wird ber PHP via SQL Statements ange sprochen PHP generiert danach dynamisch HTML Code Die HTML Seiten werden ber das Internet an den Browser bertragen Clientseitig kann ein HTML Dokument per JavaScript dynamisch gestaltet werden Was im folgenden Bild nicht erw hnt wird ist das in Perl und Shell Script geschriebene Installations und Deinstallations Script Server Client JavaScript Datenbank Webserver Browser phpeppershop dokumentation sdw Seite 13 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 6 Zeitplanung Nach der Auswertung der Feedbacks und Anregungen die wir zwischen der ersten Projekt arbeit und der Diplomarbeit erhalten hatten stellten w r eine Liste m t T tigkeiten und zu implementierenden Fun
45. amp J Fontanil ZW 15 November 2001 Datei index html index php Das index html leitet direkt auf index php weiter Dort wird dem Beschreibung er l SE Surfer bereits eine Session und somit eine leere Bestellung zugeordnet Nun kann er den Shop vollumf nglich benutzen DA Die Datei index php baut noch das Frameset top php content html Bilden des Framesets FRAME left wird von einer Aufruf Funktion Beschreib mit Inhalt gef llt eschreibung Das File content html h lt einen Willkommens Bildschirm bereit top php zeigt den Shop Namen an und bietet dem Kunden Navigations DA elemente wie Warenkorb Kasse und Hilfe Ausserdem versteckt sich dort hinter dem kleinen Stern der Passwort gesch tzte Eingang zur Shop Administration 2 2 3 Fehlerbehandlung in den Modulen Allgemeine Sicherheitsvorkehrungen Funktionen geben immer einen R ckgabewert welcher entweder definiert ist oder aber true ist Wenn eine Funktion mit der Datenbank kommuniziert wird nach jeder Verbindung ber pr ft ob die Kommunikation erfolgreich durchgef hrt werden konnte Fehlercode Entsteht in einer Funktion ein Fehler so bricht diese mit dem PHP Befehl die Meldung ab Die Meldung ist speziell formatiert Zuerst wird der Modul Code ausgegeben Er setzt sich aus den ersten Buchstaben der Modulnamen zusammen Die Meldung enth lt eine ge nauere Beschreibung des Fehlers des Ortes oder des Zustandes von lokalen Va
46. an Analyseaufwand ben tigten um richtig implementiert zu werden Der PhPepperShop bietet dem Kunden jetzt an seine Adressdaten automatisch ausf llen zu lassen und das sogar noch SSL gesch tzt wenn der Shopbetreiber SSL einschaltet phpeppershop dokumentation sdw Seite 131 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 3 Manuals 3 1 Installation Deinstallation 3 1 1 Automatisierte Installation Nach unseren Erfahrungen mit dem Webshop Framework in PHP mussten wir eingeste hen dass die Installation f r viele Benutzer eine grosse H rde darstellte Weiter musste die Auflage erf llt werden dass mehrere PhPepperShops auf ein und demselben MySQL DBMS gleichzeitig laufen k nnen Wir haben uns deshalb f r eine automatisierte Installation des PhPepperShops entschieden 3 1 2 Ablauf Wenn man einen PhPepperShop installieren will muss man wie folgt vorgehen 1 Entpacken des Archives in einen Ordner innerhalb des Webverzeichnisses z B htdocs tar xvfz PhPepperShop_xyz tar gz 2 Ins erzeugte Verzeichnis wechseln und das Installations Script config pl starten perl Zeontig pl Nun werden im Wesentlichen f nf Schritte abgearbeitet Eingabedaten erfassen siehe Punkt 3 Angepasste Shop Verzeichnisstruktur und Dateien erzeugen Angepasste Konfigurationsdateien erzeugen und ablegen e shopname_del sql Shop Datenbank und allf llige User entfernen Shop Datenbank und User erstellen
47. bei Erfolg sonst Abbruch per die Funktion Funktionsname USER_ARTIKEL_HANDLING php getWaehrung Beschreibung Liefert die W hrung in einem String zur ck z B SFr CHF DM ATS Argumente keine R ckgabewert W hrung String max 4 Zeichen USER_ARTIKEL_HANDLING php getGewichts_Masseinheit Beschreibung Liefert die Gewichts Masseinheit in einem String zur ck z B kg ml g t Argumente keine R ckgabewert Gewichts Masseinheit String USER_ARTIKEL_HANDLING php getThumbnail_Breite Beschreibung Da in bild_up php ein Thumbnail eines Artikel Bildes erzeugt wird kann ber dieses shop_settings Attribut die Breite des Thumbnails festgelegt werden Diese Funktion liefert nun den Integer Wert in Pixel Argumente keine R ckgabewert Thumbnail Breite INT USER_ARTIKEL_HANDLING php getshopname Beschreibung Liefert den in den Shop Settings gespeicherten Namen des Shops in einem String Argumente keine R ckgabewert Shopname String USER_ARTIKEL_HANDLING php getmax_session_time Beschreibung In den Shop Settings l sst sich ein fixer Wert in Sekunden einstellen der als die maximal g ltige Dauer einer Session z hlt So ist man etwas freier bei der Wahl der Session Dauer Nach oben gibt es die Limite in der php ini Diese Funktion liefert nun diesen Wert als Integer zur ck Argumente keine R ckgabewert Maximale Dauer einer
48. bei wel chem wir mit unserer Sicherheits Policy brechen mussten Ein USER Script ruft ein AD MIN Script auf Schliesslich ist das Anlegen eines Datenbank Backups Administrator Sa che Dies ist also ein Kompromiss zwischen Usability und Security Wir empfehlen hier dringend dass man wenn immer m glich einen CRON Job einrichten sollte welcher dieses Backup periodisch aufruft Aufruf php ADMIN_backup php Der Aufruf des Backups in der index php Datei ist atomar Es handelt sich um einen ein zigen Aufruf welcher entweder komplett ausgef hrt wird oder nicht aufgerufen wird 2 Backup wurde als CRON Job eingerichtet Dies ist wohl die eleganteste Methode des au tomatisierten Backups und zugleich auch die sicherste Man muss jetzt per Telnet oder besser SSH einen CRON Job einrichten Dieser muss lediglich im Backup Intervall die Datei ADMIN_backup php aufrufen im Admin Unterverzeichnis Das Backup Set wird automatisch gepflegt 3 Kein automatisches Backup Es wird kein automatisiertes Backup vorgenommen Jedes Backup muss von Hand angelest werden Wer keine Kompromisse betreffend der Security eingehen will aber auch keine CRON Jobs einrichten darf manche Provider verbieten dies dem raten wir zu dieser Einstellung Dateinamen Der Datenbank Backup legt das aktuelle Backup in der Datei 0 sql gz ab Gibt es ein Backup Set gr sser als eins so wird der Dateiname der schon existierenden Backups um eins dekrementiert Das neueste Backup
49. ben tigt mehr nicht Es entstehen keine weiteren Kosten f r Payment Institute wie z B yellowpay oder Saferpay Auf diese Weise k nnen es sich auch kleinere Shops leisten Kreditkarten zu unterst tzen Einschr nkungen Wir wissen bis jetzt nur von Eurocard Mastercard und VISA dass sie einen Mailorder Ver trag mit einem Shopbesitzer abschliessen sobald dieser beweisen kann dass die Kreditkar tendaten nur verschl sselt bertragen werden Dies bedingt dass die Kreditkartendaten bei der Eingabe vom Kunden per SSL verschl sselt bertragen werden Weiter muss das E Mail an den Shopadministrator verschl sselt werden z B per GNU PG PhPepperShop bietet die optionale SSL Verschl sselung Auch wurde der Bestellablauf so weit fertig gestellt dass man nur noch den E Mail String verschl sseln muss Modul USER_BESTELLUNG_1 php Teil darstellen 4 Leider konnten wir die Schwierigkeiten die uns PHP s SAFE MODE bereitete nicht mehr rechtzeitig auf Diplomarbeitsende l sen so dass dieses Proof of Concept noch nicht integriert wurde Wir reichen diese Erweiterung aber baldm glichst nach Shop extern abgewickelte Kreditkartenzahlung Damit jemand auch die Vorteile eines professionellen Payment Instituts benutzen kann ha phpeppershop dokumentation sdw Seite 125 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 ben w r eine Zahlungsschnittstelle eingebaut Hier kann eine Bestellung an ein externes Zahlung
50. bertragen werden Sicherheit Preisinformationen jeglicher Art kom men immer direkt von der Datenbank in die Ziel Page Argumente Artikel_ID INT R ckgabewert Ein Artikel Objekt das Optionen und Variationen ent h lt Funktionsname USER_BESTELLUNG php getBestellung phpeppershop dokumentation sdw Seite 72 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul PHP Funktionen Userseitiges Bestellungswesen Beschreibung DA Gibt aufgrund einer Session ID falls existierend eine Bestellung als Bestel lungs Objekt zur ck inkl allen zugeordneten Artikeln Argumente Session_ID String R ckgabewert Bestellungs Objekt USER_BESTELLUNG php test_create_Bestellung Beschreibung DA Diese Funktion geh rt einerseits zum Bestellungswesen andererseits aber auch zum Session Management Sie berpr ft zuerst ob in der Datenbank eine zur aktuellen Session ID pas sende Bestellung existiert Wenn ja ist alles gut wenn nein so wird eine Neue erstellt Auf diese Weise ist sichergestellt dass jeder Benutzer jederzeit ohne Fehlermeldung in den Bestellvorgang einsteigen kann Argumente Session_ID String R ckgabewert true bei Erfolg USER_BESTELLUNG php addArtikel Beschreibung Diese Funktion wird ben tigt wenn der Kunde auf den In den Warenkorb Button klickt Sie f gt der Bestellung des Kunden den Artikel hinzu Zuord nung Argu
51. das durch die Praxis ffent licher Lizenzen verwirklicht wird Viele Leute haben gro z gige Beitr ge zu dem gro en Angebot der mit diesem System ver breiteten Software im Vertrauen auf de konsistente Anwendung dieses Systems geleistet es liegt am Autor Geber zu ent scheiden ob er die Software mittels irgendeines anderen Systems verbreiten will ein Lizenznehmer hat auf diese Entscheidung keinen Einfluss Dieser Paragraph ist dazu gedacht deutlich klarzustellen was als Konsequenz aus dem Rest dieser Lizenz be trachtet wird 8 Wenn die Verbreitung oder die Benutzung des Programms in bestimmten Staaten entweder durch Patente oder durch urhe phpeppershop dokumentation sdw Seite 159 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 berrechtlich gesch tzte Schnittstellen eingeschr nkt ist kann der Urheberrechtsinhaber der das Programm unter diese Lizenz gestellt hat eine explizite geographische Begrenzung der Verbreitung angeben in der diese Staaten ausgeschlossen werden so dass die Verbreitung nur innerhalb und zwischen den Staaten erlaubt ist die nicht ausgeschlossen sind In einem solchen Fall beinhaltet diese Lizenz die Beschr nkung als w re sie in diesem Text niedergeschrieben 9 Die Free Software Foundation kann von Zeit zu Zeit berarbeitete und oder neue Versionen der General Public License ver f fentlichen Solche neuen Versionen werden vom Grundprinzip her der gegenw rtigen entsprechen k nn
52. der Tabelle css_file updaten Argumente CSS ID INT CSS String String R ckgabewert true sonst Funktionsabbruch per die SHOP_ADMINISTRATION php setvaroptinc Beschreibung DA Die Inkremente f r weitere leere Felder n der darstellen_Artikel Funk tion setzen Tabelle shop_settings Attribute Opt_inc Var mc Argumente Optionsinkrement INT Variationsinkrement INT R ckgabewert Entweder true 1 oder Abbruch per die Funktion SHOP_ADMINISTRATION php setversandkostensettings Beschreibung DA Speichert alle Versandkosten Einstellungen in der Datenbank ab Argumente Man gibt alle Versandkostensettings einzeln an Dies ist praktisch da diese Funktion nur nach einem Formular aufgerufen wird Abrechnung_nach_Preis Abrechnung_nach_Gewicht Abrechnung_nach _Pauschale Pauschale_text keineVersandkostenmehr keineVersand kostenmehr_ab Mindermengenzuschlag Mindermengenzuschlag_bis_Pr eis Mindermengenzuschlag_Aufpreis Nachnamebetrag Setting_Nr Ve rsandkostenpreise R ckgabewert Die Funktion liefert true bei Erfolg SHOP_ADMINISTRATION php getBestellung_Ref Beschreibung DA Diese Funktion liefert eine Bestellung aufgrund einer Referenz Nr zur ck Eine Referenz_Nr ist die Summe aus dem Offset 154870 und der aktuellen Bestellungs_ID Die Referenznummer wird dem Kunden auf seinem E Mail angegeben und soll z B bei Anfragen das Suchen nach Besetellungen vereinfachen Argume
53. hier breit an einem Beispiel erkl rt wurde ist genau genommen eine einfache Grund berlegung Erstelle Klassen f r alles was du transportieren willst Eine weitere elegante M glichkeit besteht darin mit Objekten zu arbeiten welche andere Objekte enthalten um auf diese Weise die logische Struktur von Daten abzubilden Ein Bei spiel hierf r w re unser Bestellungsobjekt Wir haben die get und set Funktionen so aus programmiert dass die bergeordneten Objekte die untergeordneten beinhalten und somit die logische Struktur der Daten wiederspiegeln Eine Bestellung enth lt immer auch min destens einen Artikel Wir haben die getBestellung Funktion so programmiert dass man ein Bestellungsobjekt erh lt welches in seinem Artikelarray alle Artikel beinhaltet Unser Merksatz hier lautet Bilde die Datenbankrelationen und logischen Assozia tionen in den Objekten nach und erstelle die Transport Funktionen daf r Die ganze objektorientierte Entwicklung hat eben schon seine Vorteile R ckblickend gese hen h tten wir unseren Shop vollst ndig objektorientiert entwickeln sollen Wenn man am Designen von neuen Funktionen ist welche mit Objekten interagieren und diese auch weitergeben so sollte man ach bei der berlegung was ich der n chsten Funktion bergeben soll immer folgende Fragen stellen Frage Design Sind die bertragenen Daten sicherheits Nur die ID des Objekts bergeben Bsp Ar kritisch tikel Preise Ein S
54. ii 1000 SFr In SFr v 8 8 v V Keine Versandkosten mehr berechnen ab Betrag soo SFr V Mindermengenzuschlag Mindermengenzuschlag berechnen bis Bestellungstotal von 50 EEN Mindermengenzuschlag Aufpreis 5 Set Nachnamegeb hr 12 SFT Speichern Abbrechen Hilfe Ei l Fertig Internet Kundenattribute bearbeiten Sie k nnen bestimmen welche Adressinformationen Sie von Ihren Kunden erhalten m chten und welche davon unbedingt ausgef llt werden m ssen damit die Bestellung abgesendet werden kann Sie haben 14 vordefinierte Felder zur Verf gung die sie nach Belieben anzeigen Check box verwenden und berpr fen Checkbox pr fen lassen k nnen Zus tzlich k nnen bis zu vier Zusatzfelder aktiviert werden deren Beschreibungstext Sie selbst bestimmen k nnen Diese Felder besitzen eine zus tzliche Checkbox speichern Ist diese aktiviert wird das Feld in den Kundendatensatz aufgenommen Die in diesem Feld eingegebenen Daten werden demzufolge mit den anderen Adressdaten des Kunden gespeichert Meldet sich der Kunde beim n chsten Besuch Ihres Shops mit seinem Benutzernamen und Passwort an wird dieses Feld automatisch ausgef llt Dies ist f r Angaben w nschenswert die s ch nie oder selten ndern z B Kundennummer Geburtsdatum Falls Sie das Feld f r Informationen ver wenden die sich bei jeder Bestellung ndern z B gew nschter Liefertermin w hlen Sie die Checkbox speicher
55. lancieren zu k nnen muss man sich zuerst un ter http ww sourceforge net anmelden Dies macht man am einfachsten mit einem Maus klick links oben auf Neuer Benutzer SSL Die folgenden einzugebenden Felder sind selbst erkl rend Wenn man dann sein Login hat und sich einloggst findet man auf der linken obe ren Ecke eine Option Neues Projekt Auf diese Weise kann man sein neues Projekt einrich ten Ein neues Projekt lancieren Nun muss man dem SourceForge Terms of Service Agreement zustimmen Vor allem Punkt 6 und 7 sind interessant Unter anderem wird dort beschrieben dass SourceForge keinerlei Haftung f r Datenverlust bernimmt Es ist also trotz allem ratsam immer ein aktuelles Ba ckup zuhause zu haben Der Punkt 7 der TOS widmet sich der Account respektive Project Termination Hierbei sei nur erw hnt dass man grunds tzlich nicht von SourceForge ver bannt wird wenn man sich halbwegs ordnungsgem ss verh lt Wir wollen hier nicht alle Pa ragraphen besprechen aber Punkt 5 finden wir erw hnenswert Man stimmt mit dem Ak zeptieren dieses Vertrags zu dass man mit den Ressourcen von SourceForge keinerlei kom merzielle Ziele verfolgt Nun muss man seinem Projekt zuerst einmal einen Namen geben und es auf Englisch be schreiben Diese Beschreibung ist Grundlage f r die Zulassung des Projekts durch ein Beur teilungsteam von SourceForge Wenn es unter einer Open Source Lizenz steht und frei ver f gbar ist sollte das aber
56. mehrere Shops gleichzeitig in einem DBMS koexistieren k nnen m ssen die Daten banken der einzelnen Shops personalisiert sein Der alte Shop der Praktischen Arbeit arbei tete immer mit der Datenbank namens shopdb M hsam musste be jeder Installation der Shopname und der Datenbankuser angepasst werden Dank dem Installationsscript con fig pl wird einem diese Arbeit jetzt abgenommen Das Perl Script config pl erstellt folgende personalisierten Datenbank Dateien SQL e lt shopname gt _create sql Datenbank und User erstellen lt shopname gt _inser sql Default Shopdaten in die Datenbank laden lt shopname gt _del sql Datenbank und User l schen Personal siert wird hierbei gespeichert ob User angelegt werden sollen oder nicht und wie der Name der Datenbank lautet phpeppershop dokumentation sdw Seite 102 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 4 3 Relationen in der Datenbank bersicht artikel_optionen artikel_variationen gt gt artikel O enina bestellun O nal artikel_bestellung H bestellung_kunde versandkostenpreise gt shop_settings 2 4 4 Entity Relationship Diagramm der Shop Datenbank Das Entity Relationship Diagramm der PhPepperShop Datenbank wird hier inklusive allen Tabellen Attributen dargestellt Die Darstellung wurde so gew hlt dass die Datenbank in drei Teile aufgesplittet gezeigt wird Im Teil 1 sieht man den Artikel mit seinen Optionen
57. mit voran gestelltem L ndercode Backup des Shops ev auch automatisiert immerhin Anleitung Charset im Mailversand erg nzen Englische Sprache erw nscht allgemein Mehrsprachensupport phpeppershop dokumentation sdw Seite 9 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Englischer Code erw nscht v a Kommentare Provider Probleme 1 User ev 1 Datenbank detaillierte Installationsanleitung htaccess erkl ren Suchfunktionen auf der Homepage Sternchenpixel als Admin Login wegtun ersetzen durch Admin Entry Page Windows NT 2000 Version des Shops Dozent nach Erfahrung fragen Links weg tun Mehrwertsteuer und Verpackungs Frachtkosten in die Berechnung miteinbeziehen Lagerverwaltung Bestand eingeben bei Verkauf dekrementieren gt Mindestmengen Alarm Verf gbarkeit des Artikels angeben und ev Lieferterminangaben Dynamisches Page Layout gt CSS automatisch erzeugen lassen Unterkategorien erlauben CRM 1 Eigenes Login automatisch ausgef llte Adresse Login zwingend nicht zwingend H ndlermodus CRM 2 weiter pers nlicher Ansprechpartner konfigurieren k nnen Rechnung Liefer schein drucken k nnen Bestellungsfortschritt abrufbar versendet Shop muss mit root Rechten laufen m hsam wegen Bild Upload Problem l sen SourceForge CVS Server Developer Mailing Liste Gleicher Artikel mit ve
58. nicht im Apache Source Verzeichnis phpeppershop dokumentation sdw Seite 26 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 ceonfigure with apache apache_source_verzeichnis with ssl openssl_source_verzeichnis prefix usr local apache 1 3 20 datadir usr local apache htdocs enable module most enable shared max enable module ssl Im Apache Source Verzeichnis make Server Zertifikat erstellen Wir erzeugen nun ein Zertifikat zur sp teren Verwendung von SSL Sitzungen Dieses wird von einer Certificate Authority CA unterschrieben Wir legen die CA hier auch gleich mit an CA erstellen Im Apache Verzeichnis make certificate TYPE custom S gnature Algorithm R Country Name CH State or Providence ZH Local ty Name Winterthur Organisation Name PhPepperShop Organisational Unit Name CA Common Name PhPepperShop CA Email Address ca mydomain com Certificate Validity 365 Certificate Version 3 Nachdem nun der CA Schl ssel erzeugt wurde geht es ans Server Zertifikat Dabei ist zu beachten dass der Common Name den Rechnernamen darstellt unter welchem der Server sp ter per SSL erreicht werden kann z B https myshop mydomain com Country Name CH State or Providence ZH Local ty Name Winterthur Organisation Name PhPepperShop Organisational Unit Name Webmaster Common Name myshop mydomain com Email Address info mydomain com
59. php pay_ext_test php pop_up php USER_ADMIN_HILFE php USER_ARTIKEL_HANDLING php USER_ARTIKEL_HANDLING_AUFRUF php USER_BESTELLUNG php USER_BESTELLUNG_1 php USER_BESTELLUNG_AUFRUF php USER_BESTELLUNG_DARSTELLUNG php USER_SQL_BEFEHLE php versandkosten_def php Admin Level Scripts ADMIN_backup php ADMIN HILFE php ADMIN initialize php ADMIN _restore php ADMIN _SQL_BEFEHLE php bild_up php csstemplate txt demo_htaccess php phpeppershop dokumentation sdw Seite 168 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 index_admin php indextemplate txt pop_up_admin php SHOP_ADMINISTRATION php SHOP_ADMINISTRATION_ARTIKEL php SHOP_ADMINISTRATION_AUFRUF php SHOP_BACKUP php SHOP_BESTELLUNG php Shop_Einstellungen_Menu_1 php Shop_Einstellungen_Menu_Kategorien php SHOP_KUNDE php SHOP_LAYOUT php SHOP_SETTINGS php SHOP_VERSANDKOSTEN php Top Frame und Welcome Page content php top php Template Dateien template_initialize php template_ADMIN_initialize php template_create sql template_del sql template_insert sql template_remove pl phpeppershop dokumentation sdw Seite 169 von 169 2001 R Glanzmann amp J Fontanil
60. remove old cvs add new cvs commit m old zu new umbenannt old new CVS Id Tag Wenn man ein Programm mit Hilfe von CVS verwaltet sollte man im Header jeder Pro sramm Datei folgenden Eintrag als Kommentar einf gen Sid CVS wird dann nach jedem Commit an dieser Stelle die aktuelle Versionsnummer Filena men Datum Zeit und Usernamen einf gen Bei uns sieht das zum Beispiel so aus e artikel der php Vv l7 20017 19728 Doto 7328 Font 2708 EB gt phpeppershop dokumentation sdw Seite 40 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Weitere Services von SourceForge Aufgaben Task Management Wir sind hier nicht genauer auf das Task Management eingegangen weil wir es f r die Zeit w hrend unserer Diplomarbeit nicht benutzt haben Dieser Service ist aber ab einer gewissen Projektgr sse unverzichtbar Mit ihm kann ein Projekt Administrator noch zu erledigende Aufgaben publizieren und den Entwicklern zuweisen Auf diese Weise ist immer ersichtlich wer an welchem Problem arbeitet und was noch zu tun ist Surveys Man kann im Rahmen seines Projekts auch Umfragen starten Edit Public Info Compile Farm SourceForge bietet seinen Benutzern diesen wirklich aussergew hnlichen Service an Sour ceForge bietet seinen Benutzern Zugriff auf verschiedene Netzwerke und damit auf ver schiedene Host Systeme mit unterschiedlichsten Betriebssystemen Auf diese Weise kann man sein Produkt auch auf anderen Betri
61. soll 2 In dem Verzeichnis welches gesch tzt werden soll muss die Datei htaccess mit fol sendem Inhalt erstellt werden AuthUserFile home fontajos htpasswd AuthName Administrationsbereich AuthType Basic sk mte GEL POSE gt require valid user lt Limit gt AuthUserFile definiert wo sich das Passwortfile befindet welches die Benutzernamen und Passw rter der f r den Zugriff berechtigten Benutzer enth lt AuthName enth lt den Text der im Login Fenster ausgegeben wird Mit AuthType setzt man den gew nschten Authentifikationstyp fest wobei entweder Basic oder Digest angegeben werden kann Prinzipiell sollte man die Digest Variante be vorzugen da hier im Gegensatz zur Basic Authentifikation das Passwort niemals im Klartext ber die Verbindung geschickt wird und somit von einem potentiellen Angreifer nicht in Erfahrung gebracht werden kann Obwohl die Digest Authentifikation sicherer ist wird sie bisher noch nicht von allen Browsern unterst tzt 3 Mit dem Programm htpasswd kann eine Passwortdatei erstellt werden Um eine Pass wortdatei anzulegen muss zuerst ermittelt werden wo sich htpasswd befindet which htpasswd oder locate htpasswd Danach kann mit folgendem Befehlsaufruf eine Passwortdate d e einen Benutzer enth lt erstellt werden verzeichnis_von_htpasswd htpasswd c htpasswd Benutzername htpasswd ist der Dateiname wie die Passwortdatei heissen soll Als Benutzername kann ein beliebiger Name ei
62. und definieren Shop Administrationsmodus fertig stellen Formular Buttons durch grafische Buttons ersetzen Benutzerinfo dass ohne E Mail Adresse keine Bestellbest tigung ausgestellt wird Admin soll entscheiden k nnen ob der Warenkorb direkt angezeigt werden soll Aktionspreis implementieren Artikel in mehreren Kategorien eintragen k nnen Anleitung f r GIF PNG Bilder Benutzung f r Artikel Bilder Warenkorb ist leer Meldung implementieren Button hinzuf gen der mehr leere Options Variationsfelder generiert Kreditkartenunterst tzung ev noch Wrapperklasse f r mehrere Payment Institute Schnittstelle Importm glichkeit von anderen Quellen Artikeldaten importieren k nnen Kategorienmanagement Offline Administrationstool Suchresultate optional mit Bilder Anzahl Artikel pro Suchresultat Seite festlegen z B 25 Artikel pro Seite Kunde kann w hlen 10 50 alle Suchanfrage mit mehreren Begriffen la Google AND verkn pft Eigene Buttons Buttonsets ev mit JavaScript onmouseover onclick Felderkonfiguration bei Kundenadresseingabe dynamisch w hlbar gestalten Admin Reihenfolge w hlbar SSL GNU PG E Mail Kreditkarten Nr Mailorder Vertrag allgemein SSL an schauen Kostenlose Artikel z B Prospekte bestellen Zahlungsm glichkeiten weglassen k n nen PLZ kann auch alphanummerisch sein USA oder
63. use mit allen Unterkategorien l schen Ja nein neue Unterkategorie erstellen 5 Unterkategoriename Wo soll die Unterkategorie innerhalb der Kategorie Geh use einf gt wer den hier einf gen Catan hier einf gen Evercase phpeppershop dokumentation sdw Seite 122 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 hier einf gen abbrechen Unterkategorie innterhalb Kategorie verschieben 6 wohin soll die Unterkategorie AMD verschoben werden Mierherverschreben Ente hecher werschueben Motorola Mercer verscheeben abbrechen Unterkategorie in eine andere Kategorie verschieben 7 Wohin soll die Unterkategorie AMD verschoben werden Prozessoren hierher verschieben Intel mies cher versehtceben AMD hierher verschieten Motorola Mierches verschreben Geh use h iercheu verschreben Catan Hierher werschrec ben Evercase hrerher verschieben Monitore hierher zverschtteben Drucker Mierkerzyverschnteben abbrechen Unterkategorie umbenennen 3 Neuer Unterkategoriename f r die Unterkategorie Catan OK abbrechen Unterkategorie l schen 9 Wenn Sie die Unterkategorie l schen werden alle Artikel die sich noch in der Unterkategorie befinden der Kategorie nicht zugeordnete Artikel zugewiesen Wollen Sie die Unterkategorie Catan l schen Ja nein phpeppershop dokumentation sdw Seite 123 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 200
64. vier Komponenten die n tig sind um einen dynamischen Webshop realisieren zu k nnen e Clientseitige Scriptsprache um statische HTML Seiten dynamisch zu ver ndern e Serverseitige Scriptsprache zur Erstellung dynamischer Websites e Webserver e Datenbank Um statischen HTML Seiten Dynamik zu verleihen f llt die Wahl fast automatisch auf Ja vaScript Diese umfassende Scriptsprache erlaubt es eine bereits komplett herunter geladene Webpage dynamisch zu ver ndern Man kann mit JavaScript auch einen Teil der Funktiona lit t welche man serverseitig ausf hren m sste auf den Client verlegen um so de Rechen last auf dem Server zu minimieren Es war uns bewusst dass JavaScript viele Probleme mit sich bringen w rde Wir wollten aber auf die Dynamik die damit gewonnen wird nicht ver zichten Da wir uns f r eine Ver ffentlichung des Webshops unter der GPL siehe Anhang entschie den haben war es uns auch wichtig Technologien zu verwenden die selbst Open Source sind Deshalb w hlten wir PHP4 Personal Home Page Tools Version 4 Unter anderem weil PHP f rs Web erstellt wurde und nicht wie z B ASP das mit VBScript daher kommt welches nur schwer an die Bed rfnisse eines Webservers angepasst werden kann und ausschliesslich f r die Microsoft Plattform verf gbar ist Perl hingegen bietet sehr m chtige Zeichenketten Funktionen hat aber den Nachteil einen eher unleserlichen Code zu eigen zu haben PHP nimmt ach der Nachteile der obe
65. von Unterkategorien und der M glichkeit Artikel mehreren Kategorien zuordnen zu k nnen waren wir gezwungen auch das Artikelmanagement gr ndlich zu berarbeiten Wir nutzten diesen Umstand um gleich auch noch die Eingabe berpr fung mittels PHP durch JavaScript Funktionen zu ersetzen Da unser urspr ngliches Men zur Auswahl eines Artikels f r die Bearbeitung nicht Un terkategorien tauglich war mussten wir uns eine andere L sung zur Auswahl der Kategorie Unterkategorie des Artikels ausdenken Das im Left Frame des Shops verwendete Kategorien Men konnte nach einigen Modifikationen sehr gut f r diesen Zweck eingesetzt werden Zur Auswahl des Artikels innerhalb der Kategorie blieben wir bei der bereits in der ersten Version des Shops verwendeten Pull Down Liste Alte Version zur Kategorieauswahl Neue Version zur Kategorieauswahl E Shop Micro Datei Bearbeiten Ansicht Favoriten Extras 2 E Datei Bearbeiten Ansicht Favoriten Extras zur ck gt A A suchen Gravorten hvera HD zur ck O A A ASuchen GFavorten Aveo HD Adresse Je http 160 85 138 78 fontajos shop Admin SHOP_ADMINISTRATION_AUFRUF php darstellen 2 amp up_loe 1 x Wechseln zu j Links Adresse Je http 160 85 138 78 glanzret glashop2 shop Admin SHOP_ADMINISTRATION_AUFRUF php darstellen 2 amp up_loe 1 amp open 58selected 6 Wechseln zu Links gt SHOP ADMINISTRATION SHOP ADMINISTRATION Einen bestehenden Artikel b
66. werden Falls gen gend Zeit vorhanden ist sind weitere Erg nzungen denkbar Automatische Katalogerzeugung m PDF Format Offline Administration e Erweiterung der Funktionalit t phpeppershop dokumentation sdw Seite 6 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Termine Donnerstag 6 September 2001 Ausgabe der Diplomarbeit Montag 29 Oktober 2001 Abgabe der Arbeit Montag 12 November 2001 Pr sentation der Diplomarbeit Donnerstag 22 November 2001 Industriepr sentation Samstag 24 November 2001 Umzug Ausstellung Kontaktm glichkeiten Ihr Betreuer ist per Telefon und E Mail erreichbar Die Details werden in der ersten Be sprechung angegeben Abgabe Alle Daten Dokumente Programmcode etc sind vollst ndig elektronisch abzugeben Be n tigte Zusatzsoftware falls lizenzrechtlich erlaubt ist ebenfalls elektronisch abzugeben Die Berichte sind zus tzlich in gedruckter Form abzugeben Bewertung Die Bewertung der Arbeit erfolgt mit folgendem Bewertungsschema Kriterium Gewicht Fleiss Einsatz Interesse 1 Methodik Vorgehen be der Probleml sung 3 Eigeninitiative Kreativit t Originalit t 4 Gr ndlichkeit theoretische Betrachtungen 3 Erarbeitetes Wissen Literatur Vollst ndigkeit 3 Implementation Techn Korrektheit Bedienbarkeit der Programme 2 Dokumentation Verst ndlichkeit Programmcode 2 Vortrag Eingehen auf das Wesentliche Einsatz der
67. wir dann jeweils vorgegangen sind PHP Code ge ndert Reload Fehler des Quellcode der Page ansehen oft wird die Browsers leere Seite HTML Seite nicht angezeigt Man sieht aber m Quellcode wo das Programm ins Stocken geriet SQL Fehler 0 HTML Code ge ndert Reload Fehler des Quellcode der Page ansehen berpr fen ob Browsers leere Seite allf llige Tabellen der Body und das HTML Dokument selbst geschlossen wurden Neue Datei hinzugef gt erster Zugriff Feb Sand die Dateiattribute richtig gesetzt D r ler des Browsers Zugriff nicht erlaubt fen alle User auf die Datei zugreifen ideal chmod 755 Bild in der Datenbank ge ndert Browser Meist ist der Cache des Browsers schuld Vor zeigt aber immer noch altes an allem beim Netscap 4 7x muss oft manuell der Cache gel scht werden bevor er das gleichnamige neue Bild richtig anzeigt phpeppershop dokumentation sdw Seite 47 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Fehler Vorgehen Formular gemacht Submit Button funktio Ist das Formular komplett niert aber nicht kein Ereignis nach Klick lt form action gt lt input gt lt form gt Wenn eines dieser Elemente fehlt funktioniert das Formular nicht Diese Situation kann vor kommen wenn das Formular dynamisch von verschiedenen Funktionen zusammen gebaut wird Internet Explorer zeigt eine Seite mit Ta Meistens ist die Tabelle oder d
68. z Schriftgewicht fett z Schriftgr sse 30p2 2 Schriftgr sse 25px Text Dekoration keine Text Dekoration keine Shop_ Settings z Schriftstil normal z Schriftstil mme berschrift 3 berschrift 4 Schriftfarbe WEHRT co Bo Schriftfarbe B Ro co Bo Schriftgewicht fett z Schriftgewicht fett r Schriftgr sse 20px Schriftgr sse 16px Text Dekoration keine Text Dekoration keine z Schriftstil normal z Schriftstil normal X berschrift 5 kleinste Schriftfarbe EHRT sh En Schriftgewicht fett r Schriftgr sse 12px Text Dekoration keine z Schriftstil normal r Speichern Abbrechen l Fertig 1 a Internet phpeppershop dokumentation sdw Seite 114 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Screenshot Bilder hochladen eist Datei Bearbeiten Ansicht Favoriten Extras zur ck gt 2 A A suchen Ggravoriten Evera B g 2 A wechseln zu ut ZS Adresse el http 160 85 138 78 glanzret phpeppershop shop Admin SHOP L AvOUTT php darstellen 20 SHOP ADMINISTRATION W hlen sie den Verwendungszweck f r das Bild welches Sie hochladen wollen Shoplogo wird immer oben links angezeigt Hintergrundbild f r Main Frame Hauptframe wo die Artikel angezeigt werden Hintergrundbild f r Left Frame linkes Frame f r die Anzeige der Kategorien Hintergrundbild f r Top Frame oberes Frame
69. 0 51 PET gespeichert ige Falls Sie im Rahmen rechts kein Bild sehen wurde f r diesen Artikel noch kein Artikelbild hochgeladen i Wenn sie ein anderes Bild hinzuf gen wollen k nnen sie das nun tun Ein anderes Produktbild hochladen Wenn Sie f r diesen Artikel ein anderes Artikelbild hochladen wollen dr cken Sie auf den Durchsuchen bzw Browse Knopf und w hlen dann ein JPG Bild auf Ihrer Festplatte aus Danach klicken Sie auf den Knopf Bild SE In de Datenbank gespot soll hochladen damit das Produktbild in die Datenbank gespeichert wird urchsuchen Durchsuchen ee z hand Bild hochladen Bidbehaiten_ Bild l schen X Das Produktbild l schen Wenn Sie das zu diesem Artikel geh rende Bild falls vorhanden l schen wollen dr cken Sie auf den Knopf vorhandenes Bild l schen Weiter ohne nderungen am Produktbild vorzunehmen Falls Sie weder ein neues Bild f r diesen Artikel hochladen noch das aktuelle Bild l schen Weiter wollen dr cken Sie den Weiter Knopf Fertig 1 2 Internet E Fertig e Internet Eine weitere Neuerung ist die Kategorie Nichtzugeordnet Dieser Kategorie enth lt alle Artikel die keiner Kategorie zugeordnet sind Sie wird im Shop nirgends angezeigt und dient lediglich als Containment f r Artikel die momentan im Shop nicht verwendet werden oder deren Kategorie bzw Unterkategorie gel scht wurde Erstellt der Shopadministrato
70. 1 2 7 2 Hauptmen Zu Beginn war geplant das Hauptmen des Kategorienmanagements folgendermassen aus zugeben Kategorienliste aufgeklappt mit allen Unterkategorien rechts davon jeweils die zu geh rigen Buttons Wie im folgenden Bild zu erkennen ist wurde durch die gegebene But tonh he die Kategorienliste auseinandergezogen Ausserdem war das Men durch die grosse Anzahl der Buttons kaum mehr bedienbar e e schlecht bedienbares gut bedienbares K j K j ategor enmanagement ategor enmanagement lelx shop F la x Datei Bearbeiten Ansicht Favoriten Extras EI Datei Bearbeiten Ansicht Favoriten Extras e ng gt O A A wen Favoriten veras A 22 A Ee zur ck gt O A A Qsuchen Favoriten veras A 2 A Adresse 5 http 160 85 138 78 glanzret phpeppershop shop dmin Shop_Einstellungen_Menu_Kategorien php E Wechseln zu ts 2 Adresse 5 http 160 85 138 78 glanzret phpeppershop shop dmin Shop_Einstellungen_Menu_Kategorien php E Wechseln zu Links SHOP ADMINISTRATION Kategorien Management SHOP ADMINISTRATION Kategorien Management Klicken Sie eine Kategorie zum Bearbeiten an oder dr cken Sie den Knopf neue Kategorie erstellen Klicken Sie eine Kategorie zum Bearbeiten an oder dr cken Sie den Knopf neue Kategorie erstellen Neue Kategorie Neue Kategorie erstellen erstellen neue Unter
71. 2001 EE EES A with apxs usr local apache current bin apxs with mysql usr local mysql current with zlib with ftp with gd ul th Jpeg dir 7 usr eer Ech N with pdflib enable versioning enable track vars yes enable url inclueds enable sysvshm yes enable sysvsem yes with config file path etc make make install Nachdem nun PHP installiert wurde m ssen wir nun noch eine Datei ins etc Verzeichnis kopieren ep ei EE Sere pBhp in Es empfiehlt sich nun in der php ini den SafeMode einzuschalten Dies macht man indem man einen Editor z B pico nimmt und die Zeile sucht in welcher SafeMode Off steht und diesen dann auf SafeMode On stellt Konfiguration Wir m ssen im Verzeichnis usr local apache current conf die zentrale Konfigurationsdatei des Apache httpd conf editieren Zuerst sollten alle aktuellen Versionsnummern die im Skript vorkommen bei uns z B 1 3 20 durch current ersetzt werden Nun m ssen wir noch die Mime Types f r PHP hinzuf gen beziehungsweise auskommentieren Dies macht man am besten indem man folgende Zeile sucht auskommentiert und phtml noch hinzuf gt AddType application x httpd php php phenmd Zus tzlich konfigurieren wir Apache nun so dass er auch PHP Dateien als Default Index Dateien akzeptiert Dazu suchen wir den Eintrag DirectoryIndex und f gen noch die PHP Date Endungen hinzu DirectoryIndex index html index php i
72. A Eine Unterkategorie auf eine andere Position innerhalb der gleichen Kategorie verschieben 2 2 Speichern der neuen Position phpeppershop dokumentation sdw Seite 91 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 SHOP_ADMINISTRATION_ AUFRUF php 30 Beschreibung DA Eine Unterkategorie auf eine beliebige Stelle verschieben 1 2 Auswahl der neuen Position SHOP_ADMINISTRATION_ AUFRUF php SN Beschreibung DA Eine Unterkategorie auf eine beliebige Stelle verschieben 2 2 Speichern der neuen Position SHOP_ADMINISTRATION_ AUFRUF php 35 Beschreibung DA Eine Kategorie umbenennen 1 2 Eingabe des neuen Kategorienamens SHOP_ADMINISTRATION_ AUFRUF php 36 Beschreibung DA Eine Kategorie umbenennen 2 2 Speichern der neuen Position SHOP_ADMINISTRATION_ AUFRUF php 40 Beschreibung DA Eine Unterkategorie umbenennen 1 2 Eingabe des neuen Namens SHOP_ADMINISTRATION_ AUFRUF php 41 Beschreibung DA Eine Unterkategorie umbenennen 2 2 Speichern der neuen Position SHOP_ADMINISTRATION_ AUFRUF php Beschreibung DA Eine Kategorie Unterkategorie l schen 1 2 Best tigungsanfrage SHOP_ADMINISTRATION_ AUFRUF php 46 Beschreibung DA Datei Eine Kategorie Unterkategorie l schen 2 2 L schvorgang ausf hren Variablenwerte bild_up php Variable Speichern true ph
73. ABC opti Aufpreis SFr 939999373959 00 7 Ba Ale 82 1 fahre A pa 12 ABC opt Aufpreis SFr ge DO I amp Sick In dan Wamnksrh bgaa e BE 1 F phpeppershop dokumentation sdw Seite 20 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Dies war der Beweis dass alle Strings korrekt erfasst verarbeitet und angezeigt wurden Wir verwendeten den gleichen Test String dann auch noch zum Sonderzeichentest des CRM und Bestellungs Teils Auch diese Tests fielen positiv aus 1 7 3 Funktionstest Bei den Funktionstests konzentrierten wir uns haupts chlich auf die neu hinzugekommenen Funktionen des Shops das Kundenmanagement die Eingabe berpr fung per JavaScript Unterkategorien Zahlungsablauf und das Layout Management Da die komplette Auflistung aller Tests den Rahmen dieses Dokuments sprengen w rde werden hier exemplarisch die wichtigsten Testf lle des CRM s und des Zahlungsablaufs abgedruckt Da es sich in den letz ten beiden Projektarbeiten bew hrt hatte die Testf lle zur besseren bersichtlichkeit zu vi sualisieren verfolgten wir dieses Konzept auch hier weiter Der Shoptest wurde mit dem Internet Explorer 5 5 durchgef hrt Windows 2000 Vor Aufruf des Shops leerten wir den Browsercache F r die Richtigkeit der Testergebnisse R Glanzmann Winterthur 26 10 2001 Testlegende korrekte Ausgabe an Browser oder E Mail erfolgreich getesteter Funktionsablauf gt erfolgreich
74. Argumente Artikel_ID INT R ckgabewert Ein Artikel als Artikel Objekt siehe art kel_def php USER_ARTIKEL_HANDLING php getArtikeleinerKategorie Beschreibung DA Alle Artikel einer Kategorie holen Die Funktion getArtikeleinerKategorie liefert in einem Array alle Artikel die einer Kategorie untergeordnet sind Argumente Kategoriename String Name der Parent Kategorie falls es eine Unterkategorie ist String R ckgabewert Array Key Artikel_ID Wert Artikel Objekt USER_ARTIKEL_HANDLING php IDgetArtikeleinerKategorie Beschreibung DA Alle Artikel einer Kategorie holen als Argument wird eine Kategorie_ID erwartet Die Funktion IDgetArtikeleinerKategorie liefert in einem Array alle Artikel die einer Kategorie untergeordnet sind Argumente Kategorie_ID INT R ckgabewert Array Key Artikel_ID Wert Artikel Objekt USER_ARTIKEL_HANDLING php getgesuchterArtikel phpeppershop dokumentation sdw Seite 71 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Beschreibung DA Liefert aufgrund eines Such Strings der entweder im Namen oder in der Beschreibung des Artikels vorkommen kann alle zutreffenden Artikel zu r ck Es k nnen jetzt auch mehrere Begriffe eingegeben werden Diese werden dann konjunktiv verkn pft AND Auch Bilder werden optional angezeigt Die beiden Argumente low und highlimit definieren das An zeigefenster lo
75. CHAR 128 NOT NULL Login VARCHAR 32 NOT NULL Passwort VARCHAR 32 NOT NULL gesperrt enum N Y NOT NULL DEFAULT temp enum N Y NOT NULL DEFAULT Y Bezahlungsart VARCHAR 32 NOT NULL AnmeldeDatum Date LetzteBestellung Date Einkaufsvolumen DOUBLE NOT NULL DEFAULT 0 0 Attribute sind selbstkonfigurierbare Ein traege Attributl VARCHAR 128 Attribut2 VARCHAR 128 Attribut3 VARCHAR 128 Attribut4 VARCHAR 128 Attributwertl VARCHAR Attributwert2 VARCHAR Attributwert3 VARCHAR Attributwert4 VARCHAR PRIMARY KEY k_ID UNIQUE UC_k_ID ik_ID UNIOUE UC_Kunden_ID Kunden_ID UNIQUE UC_Login Login INDEX IDX_Kunden_ID_1 Kunden_ID Nr NOT NOT NOT NOT 128 128 128 128 NULL NULL NULL NULL NOT NULL NOT NULL NOT NULL NOT NULL phpeppershop dokumentation sdw Seite 107 von 169 2001 R Glanzmann amp J Fontanil Z W 15 November 2001 Attribut ID INT NOT NULL DEFAULT O AUTO_INCREMENT Name VARCHAR 128 NOT NULL Wert VARCHAR 128 NOT NULL anzeigen enum N Y NOT NULL DEFAULT in_DB enum N Y NOT NULL DEFAULT Eingabe_testen enum N Y NOT NULL DEFAULT Positions_Nr INT NOT NULL DEFAULT 0 PRIMARY KEY Attribut_ID UNIQUE UC_Attribut_ID Attribut_ID UNIOUE UC_Positions_Nr Positions_Nr KY Ta KYT KP Optionen_Nr INT NOT NULL DEFAULT 1 Optionstext CHAR 64 Preisdifferenz DOUBLE NOT NULL DEFAULT 0 0 FK_Artikel_ID INT NOT NULL FOREIG
76. Diplomarbeit vom 6 September bis 29 Oktober 2001 Studenten Jose Fontanil und Reto Glanzmann Dozent Patrick Feisthammel PhPepperShop Jose Fontanil Reto Glanzmann November 2001 ZW 15 November 2001 Inhaltsverzeichnis 1 Bericht 1 1 Kurzbeschrieb in Deutsch und bnglhsch 3 Eeer 5 Leederen 6 1 4 Analyse des erhaltenen beedbhacke 8 1 5 Wahl der verwendeten Technoloeen 12 RE e E EE 14 re KEE 18 LSE ANUN E EE 24 1 9 Zukunft des Dh Deppert bonsg A 60 kt SCAU SE NOT EE 62 2 Architektur PA o EE A E A EIE E E E E EEE ETE E EE E E EE 63 2 2 PHP Mod le und FRunktionen sen NEE 66 2 3 Dess1on Management sanieren 100 AND ELEND AD een een nalen 102 2 5 phop bayout Mana pement een enge 111 2 6 Art kelmanasement EEN 117 2 1 EENHEETEN ee 121 2o Aa MUN SoS CAKE EE 125 2 Beste llunssmanagement area uns 128 2 10 Kundenattribute Management 129 2 11 CRM Customer Relationship Management 130 3 Manuals 3 1 1n8tallat on Deinst llablon sr Aa ar a En essen ei 132 3 2 Backup und Restore mit MySQL a 135 929 BL NUNG EE 139 4 Anhang A dt 149 4 2 Soll Ware Versionen eek 152 2 9 PRO eK E DICH ass ss 153 4 4 GPL GNU General Public Lucence 158 4 5 Detailliertes Inbhaltoverzeichnsg 161 2 6 Inhalt der CD ee are et 166 E E en EE EE 167 ERR EE 168 phpeppershop dokumentation sdw Seite 2 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 Bericht 1 1 Kurzbeschrieb in Deu
77. E 41 LSA Browser Ee EE ele EE 42 185 PHP und Ee TEE 43 CH RE E EE 44 1 8 7 Strukturen beim Webporogrammmng 46 Var ablentransport zwischen Funktopen 46 Andere Fehlermeldungen nennen erh 47 phpeppershop dokumentation sdw Seite 162 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Interakt vit t einer HT ME Seite essen 48 Entwurf von neuen Komponenten f r den PhPepperShop Entwicklungszyklus 49 1 8 8 Variablen zwischen den Webpages Dransportieren 51 bermittlung direkt im Link Ok 51 bermittlung als Feld in einem Formular POST oder GETT 51 Welche Daten sollen wie bergeben werden 52 PHP Funktionen addslashes und etrmpslashes 53 PHP Funktionen urlencode und urldecode 54 PHr Funktion htmlspecialc eet 54 EE Ee e EE 55 Gleichzeitige Aktualisierung von Frames mittels Javab cermpt 55 berpr fung eines Formularfeldes auf Kingabe 56 Unsere epuer lee eine 57 1 38 10 Datenbankacsien ee 58 Ban NEE EE 58 SNOP eNO Se en ee 58 19 Zukunft des PhPeppershops etc en seele 60 1 9 1 Ver ffentlichung des bal bReleage 60 1 9 2 Leute die den Shop weiterentwickeln wollen 60 HITO SCHLUSS Worb Bean Essen 62 2 Architektur eelere 63 YA ER ER EE 63 21 2 htaccess aa ee 63 N SO ee E 63 DASS een ee een ns 64 ZEN VE P ee ea ee ee 64 SR ef A Daseins 65 22 PHF Moaule and F nktionen seelische 66 I RT TEE EE EE 66 2 2 2 PHP Module und Ihre Punktionen eaaunseea ae a ed ET 68 Klassendein1 onen
78. ID indermengenzuschlag Bezahlungsart Anmerkung Nachnamebetrag Kreditkarten_Hersteller d bestellung b f Versandkosten Kreditk N reditkarten_Ablaufdatum Attributwert4 Attributwert3 Kreditkarten_Vorname mun gt on gt wi Attributwert2 Attributwert1 Kreditkarten _Nachname phpeppershop dokumentation sdw Seite 105 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 ER Diagramm Teil 3 Kreditkarte Gewichts _Masseinheit SR RE ShopVersion eeng Thumbnail Breite Kreditkarte_Postcard q zZ C name gt emm steen C ome S Nachnamebetrag L ze E si T L name Cren e W Sa la Rechnung shop_settings lt Admin_pwd l au keineVersandkostenmeh Abrechnung nach Pauschale SES peN SSL oam gt Vindermengenzuschlag_Aufpreis Abrechnung nach Preis indermengenzuschlag Mindermengenzuschlag_bis_Preis Abrechnung nach Gewicht Pauschale t ext kreditkarte Backup ID wen gt Kreditkarten ID anzeigen Eingabe_testen css_file hilfe attribut mp phpeppershop dokumentation sdw Seite 106 von 169 2001 R Glanzmann amp J Fontanil Z W 15 November 2001 2 4 5 Tabellen und ihre Attribute im Detail Es folgen nun die Tabellen im Detail Hier sieht man auch welche Datentypen f r die jewei ligen Attribute verwendet wurden Artikel_ID INT NOT
79. INISTRATION _ARTIKEL php darstellenArtikel Diese Funktion stellt den im Argument gelieferten Artikel dar und leitet die Daten dann zur bertragung in die Datenbank weiter an die Kate gorien und die Bild Eintragung Beschreibung Am Ende des Eingabeformulars werden noch Buttons Reset Submit Abbrechen Hilfe zur Navigation dargestellt DA Argumente Ein Artikel als Artikel Objekt Definition siehe artikel_def php R ckgabewert HTML Teil einer Page Formular ohne Head und ohne Body Tags phpeppershop dokumentation sdw Seite 95 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Datei Funktionsname bild_view php bild_view Beschreibung DA Datei Diese Datei wird nur innerhalb des HTML Tags lt IMG sre bild_view php gt verwendet Es liest aus der Datenbank das entsprechende Bild aus und stellt es dann bereit Die Datei ruft ihre einzige Funktion selbst auf Argumente Artikel_ID INT Bildformat String Bildgr sse enum gross klein R ckgabewert Bild Funktionsname USER ADMIN HILFE php ADMIN HILFE pb get_Hilfe Beschreibung Datei Diese Funktion liefert einen String inkl HTML Formatierung der den ent sprechenden Hilfetext der angeforderten Seite beinhaltet Die zu bergebende Hilfe_ID besteht aus dem Namen der anfordernden Datei und hat angeh ngt einen Suffix von _1 _2 Argumente Hil
80. Kriterien sortieren und man hat einen sehr sch nen berblick ber das Projekt eigene CVS Repository Es gibt nat rlich f r all diese Funktionen auch entsprechende Kommando zeilen Befehle siehe Anhang Eine Datei oder ein Verzeichnis entfernen Datei Dies ist ein heikler Punkt von CVS Schliesslich will man auch wenn man eine Datei l scht nicht deren Entwicklungsbaum verlieren CVS bietet deshalb einen remove Befehl an der die Datei zwar faktisch als gel scht markiert sie aber nicht physikalisch vom Repository entfernt Folgende Schritte muss man abarbeiten um eine Datei zu l schen 1 Sicher stellen dass es keine noch nicht commiteten nderungen f r das File gibt 2 Die Datei lokal l schen rm Dateiname 3 cvs remove Dateiname 4 cvs commit Dateiname Verzeichnis Eigentlich gibt es keinen Weg f r SourceForge Benutzer Verzeichnisse zu l schen es gibt aber auch hier einen Weg Man l scht zuerst wie oben beschrieben alle Dateien im Verzeichnis dabei k nnen auch Wildcards wie z B benutzt werden Nun kann man wenn man entweder einen Checkout oder ein Update macht die Option P mit angeben was f r CVS heisst dass es leere Verzeichnisse von der Arbeitskopie entfernen soll Es wird emp fohlen immer mit der Option P zu arbeiten Eine Datei verschieben Um eine Datei zu verschieben muss man lediglich die alte Datei l schen siehe oben und die Neue am neuen Ort erstellen Hier ein Beispiel mv old new cvs
81. Management ist ein beliebig dehnbarer Begriff und momentan ein Modewort Wir haben in unserem Shop ein einfaches Customer Relationship Management Von der Feedback Analyse Kapitel 1 4 her teilten wir die Customer Relationship Manage ment Vorschl ge und unsere eigenen Ideen in zwei Kategorien ein CRM 1 Eigenes Login Automatisch ausgef llte Adresse Login zwingend nicht zwingend gt H ndlermodus CRM 2 Pers nlichen Ansprechpartner konfigurieren k nnen Rechnung Lieferschein drucken k nnen Bestellungsfortschritt abrufbar versendet Das CRM2 mussten wir nach einer ersten Aufwandsch tzung aufgrund seiner Komplexit t und den ben tigten weiteren Funktionen weglassen Wir schauten uns also das CRM 1 Paket genauer an Nach ersten Designentscheiden haben wir herausgefunden dass wir den H nd lermodus nur implementieren k nnten wenn wir eine PHP Authentifizierung an die Session binden w rden PHP Auth der PHPLib w re ein Weg um dies zu implementieren Wir haben also auch hier gesehen dass der Aufwand nicht zu untersch tzen ist und haben uns darauf hin daf r entschieden vorerst nur die Grundelemente des CRM 1 Pakets zu implementieren 2 11 1 Welche Funktionen bietet das CRM Wir wollten dem Kunden die M glichkeit geben seinen Kundendatensatz persistent zu spel chern Diese Grundfunktionalit t erforderte viele weitere Funktionen und Anpassungen e Kunde kann sich einloggen oder auch nicht freie Wahl e Kunde kann s
82. Medien 2 Verst ndlichkeit Einhalten der Zeit 2 Bericht Gliederung Darstellung 3 Technische Korrektheit Referenzen 3 Umfang Vollst ndigkeit Sprache 2 N heres zum Projekt findet man auf http www phpeppershop com http www zhwin ch fei lda phpeppershop dokumentation sdw Seite 7 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 4 Analyse des erhaltenen Feedbacks Unsere Diplomarbeit setzt auf der Projektarbeit Framework f r einen Webshop in PHP PA Fei01 2 auf Wir ver ffentlichten die Arbeit am 19 Juni 2001 und haben seither ber 15 000 Hits auf dieser Homepage aus den verschiedensten L ndern verzeichnet Da ist es klar dass uns auch einige Leute E Mails geschrieben haben Weiter haben w r Feedbacks von mehreren freiwilligen Shop Testern erhalten Zudem gaben uns auch Shopbetreiber Tipps 1 4 1 E Mail Auswertung rar Vorschlag Englische Sprache erw nscht allgemein Mehrsprachensupport Englischer Code erw nscht vor allem Kommentare Provider Probleme 1 User ev auch nur eine Datenbank detaillierte Instal lationsanleitung htaccess erkl ren SSL allgemein und vor allem bei Formular bertragung zur Bank yellowpay GC Bav com Suchfunktionen auf der Homepage Stern Zeichen als Admin Login wegtun ersetzen durch Admin Entry Page Windows Version des Shops nur NT 2000 Mehrwertsteuer und Verpackungs Frachtkosten n die Berechnung
83. N KEY FK_Artikel_ID REFERENCES artikel Artikel_ID a_b_ID INT NOT NULL DEFAULT 0 AUTO_INCREMENT FK_Artikel_ID INT NOT NULL FK_Bestellungs_ID INT NOT NULL Anzahl INT NOT NULL DEFAULT 1 Variation TEXT NOT NULL Aufbau einer Variation Aufpreis Variationstext P Optionen TEXT NOT NULL Aufbau einer Variation Preisdirirferenz zu S FOREIGN KEY FK_Artikel_ID REFERENCES artikel Artikel_ID FOREIGN KEY FK_Bestellungs_ID REFERENCES bestellung Bestellungs_ID PRIMARY KEY a_b_ID FK_Artikel_ID FK_Bestel lungs_ID Anm Das Trennzeichen ist ALT 0254 Optionstext p Hilfe_ID VARCHAR 128 Hilfetext TEXT PRIMARY KEY Hilfe_ID UNIOUE UC_Hilfe_ID Hilfe_ID Nor NOLL Von_Bis_ID INT DEFAULT 0 NOT NULL AUTO_INCREMENT Von DOUBLE DEFAULT 0 0 Bis DOUBLE DEFAULT 100 0 Betrag DOUBLE DEFAULT 0 0 Vorauskasse enum N Y NOT NULL DEFAULT Y Rechnung enum N Y NOT NULL DEFAULT Y Nachname enum N Y NOT NULL DEFAULT Y Kreditkarte enum N Y NOT NULL DEFAULT N FK_Setting_Nr INT NOT NULL DEFAULT 1 FOREIGN KEY FK_Setting_Nr REFERENCES shop_settings PRIMARY KEY Von_Bis_ID UNIOUE UC_Von_Bis_ID Von_Bis_ID Setting_Nr a_k_ID INT NOT NULL DEFAULT O AUTO_INCREMENT FK_Artikel_ID INT NOT NULL FK_Kategorie_ID INT NOT NULL FOREIGN KEY FK_Artikel_ID REFERENCES artikel FOREIGN KEY FK_Kategorie_ID REFERENCES kategorien PRIMARY KEY a_k_ID
84. NULL DEFAULT 0 AUTO_IN CREMENT Artikel_Nr VARCHAR 128 NOT NULL Name VARCHAR 128 NOT NULL Beschreibung TEXT NOT NULL Preis DOUBLE NOT NULL DEFAULT 0 0 Aktionspreis DOUBLE NOT NULL DEFAULT 0 0 Aktionspreis_verwenden enum N Y NOT NULL DEFAULT N Gewicht DOUBLE NOT NULL DEFAULT 0 0 Link VARCHAR 255 Bild_gross MEDIUMBLOB Achtung Bei anderer DB Typ ev BLOB Bild_klein BLOB Bildtyp VARCHAR 15 Bild_last_modified TIMESTAMP 14 Lagerbestand INT NOT NULL DEFAULT 0 letzteAenderung DATE PRIMARY KEY Artikel_ID UNIQUE UC_Artikel_ID Artikel_ID Bestellungs_ID INT NOT NULL DEFAULT 0 AUTO_IN CREMENT Session_ID CHAR 32 NOT NULL DEFAULT 0 Unsere getesteten Session_IDs waren immer CHAR 32 aber man weiss ja nie expired BIGINT NOT NULL DEFAULT 0 In andernen DBs ev anderer Typ 10 Stel len Datum Date Anmerkung TEXT Bezahlungsart CHAR 32 NOT NULL Kreditkarten_Hersteller CHAR 32 NOT NULL Kreditkarten_Nummer CHAR 16 NOT NULL Kreditkarten_Ablaufdatum VARCHAR 10 NOT NULL Kreditkarten_Vorname VARCHAR 128 NOT NULL Kreditkarten_Nachname VARCHAR 128 NOT NULL Attributl VARCHAR 128 NOT NULL Attribut2 VARCHAR 128 NOT NULL Attribut3 VARCHAR 128 NOT NULL Attribut4 VARCHAR 128 NOT NULL Attributwertl VARCHAR 128 NOT NULL Attributwert2 VARCHAR 128 NOT NULL Attributwert3 VARCHAR 128 NOT NULL Attributwert4 VARCHAR 128 NOT NULL Versandkost
85. Provi der Kunde keinen schreibenden Zugriff auf die php ini Wenn ein Kunde den Shop betritt erh lt er nicht nur eine Session ID sondern auch gleich eine leere Bestellung Dort drin gibt es ein Feld namens expired Darin wird die Summe aus der aktuellen Zeit und der in den Shop Settings definierten maximalen Session Dauer abge speichert Bei jeder neuen Seite die den Session Management Header siehe weiter unten beinhaltet wird gepr ft ob diese Zeit nicht schon abgelaufen ist Ist dies der Fall so wird die Bestellung n der Datenbank gel scht und der Kunde erh lt eine neue leere Bestellung Rekapitulierend kann man also sagen Der Kunde erh lt zwar keine neue Session ID er er h lt aber eine neue Bestellung was f r ihn zum gleichen Resultat f hrt Er wird vom Shop system als neuer Kunde gesehen 2 3 2 Session Management Header Am Ende dieses Kapitels findet man den Code den wir Session Management Header nennen Er ist berall dort n die Files integriert worden wo der Kunde vom Shop einen HTML Hea der also eine neue Seite zugeschickt bekommt Dieser Header schaut ob die Session ID bei uns mySession_ID genannt schon vorhanden ist Dann soll die Session ID Ausgabefunktion diese Variable auslesen Falls die Variable noch nicht existiert soll unsere Session_ID mySession_ID heissen diese Variable an die ak tuelle Session gebunden werden und eine Session er ffnet werden Als einzige nderung am Session Manageme
86. Restore der Bilder und Buttons Im Backupverzeichnis ep Bilder lt Pfad zu Shopverzeichnis gt 7 shcsp Bilder cp Buttons lt Pfad zu Shopverzeichnis gt shop Buttons mysql u lt Username gt p lt Datenbank lt shopname gt _del sql mysql u lt Username gt p lt Datenbank lt shopname gt _create sql Jetzt kopiert man die Shop Buttons und Hintergrundbilder in den neuen Shop zur ck und l scht die Default Shop Datenbank Danach kreiert man eine neue leere Daten bank 3 Restore der Daten aus dem Backup der Shop Datenbank Nun muss man die Shop Datenbank zur ck lesen mysql u lt Username gt p lt shopname gt lt lt shopname gt backup lt datum gt sql 4 Pers nliche CSS Einstellungen aktivieren Jetzt ist die Shopdatenbank zwar wieder zu r ck gelesen die CSS Einstellungen werden aber erst nach einem Speichern der Einstel lungen im Layout Management neu bernommen shopstyles css wird neu generiert Deshalb muss man zuerst im Administrationstool ins Layout Management gehen und auf Speichern klicken phpeppershop dokumentation sdw Seite 138 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 3 3 Bedienung 3 3 1 Bedienung des Shops Maximale Usability war eines unserer Hauptziele Da jede Person die ber einen Zugriff zum Internet verf gt zum Benutzer unserer Software werden kann musste der Shop selbst er kl rend aufgebaut werden Wir h tten un
87. SERT UPDATE Funk tionen Exec SQL Query Query SQL Query welche ein Resultat liefert Datei initialize php Beschreibung Wird von User Modulen included und stellt ein Objekt Database zur Verf gung Dieses Objekt er ffnet eine Verbindung als Shopuser Die Verbindung ist nicht persistent und wird bei Script Ende automatisch wie DA der geschlossen Da das Login f r jeden Shop wieder anders aussieht erstellt das Installationsscript personalisierte Versionen dieser Datei aus einem Tem plate phpeppershop dokumentation sdw Seite 70 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 ADMIN _initialize php Beschreibung Datei Diese Datei wird von Administrator Modulen eingebunden included und bietet eine nicht persistente Datenbank Connection als Shopadmin an Auch diese Datei wird aus einem Template erzeugt USER_SQL_BEFEHLE php Beschreibung DA Hier werden Variablen User SQL Queries zugewiesen siehe Kapitel 2 4 7 ADMIN_SQL_BEFEHLE php Beschreibung DA Datei Hier werden wie bei USER_SQL_BEFEHLE php die Query Teile verschiedenen Variablen zugeordnet Bloss handelt es sich hier um Queries von den Adminis trator Funktionen Diese Datei wird deshalb von USER Modulen nicht included Funktionsname USER_ARTIKEL_HANDLING php get_Artikel Beschreibung DA Gibt auf Grund einer Artikel_ID ein Artikel Objekt zur ck
88. Seite 23 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 8 Erfahrungen 1 8 1 Installation der Systemumgebung LAMPS Inhalt dieses Kapitels Da wir mit der aktuellen Version von PHP v 4 0 6 arbeiten wollten haben wir uns ent schieden den Apache Server PHP und SSL Unterst tzung neu zu installieren Damit unsere Erfahrungen die wir hier machten auch an andere Leute weitergegeben werden k nnen haben wir diesen Erfahrungsbericht im Stil einer umfassenden Anleitung geschrieben Wieso diese Kombination Alle f nf Teile eines LAMPS Systems Linux Apache MySQL PHP open mod_ SSL sind Projekte welche gemeinsam haben dass sie Open Source sind Sie kosten nichts sind erprobt und sehr leistungsf hig Alle Projekte werden aktiv weiterentwickelt Mit Linux als kosten losem Betriebssystem erh lt man heute ber eine Distribution SuSE Redhat ein zu kommerziellen Serverbetriebssystemen konkurrenzf higes Produkt Apache ist ohnehin der am weitesten verbreitete Webserver der Welt Er l sst hinsichtlich Stabilit t und Erweiterbarkeit keinerlei W nsche offen Insbesondere die Kombination von Apache mit PHP ist heutzutage sehr popul r und auch schon recht h ufig anzutreffen Ausserdem ist er nicht anf llig auf Code Red und Nimbda MySQL ist eine kleine aber im Web Umfeld weit verbreitete Datenbank Sie bietet zwar keine referentielle Integrit t und auch sonst kann sie nicht unbedingt mit einer
89. Servers http evs sourceforge net cgi bin cvsweb cgi cvsroot Projektname Projektspezifische Daten z B ein Howto f r CVS oder hnlich Wer direkt Projektdaten auf der Homepage darstellen will kann dies auch tun Genaueres findet man hier https sourceforge net docman display_doc php docid 1502 amp group_ id 1 Mailinglisten anlegen Mailinglisten und Foren sind die Kommunikationsmittel der verteilten Entwickler Es wird empfohlen mindestens folgende drei Standard Listen f r sein Projekt anzulegen e announce Hier werden neue Versionen angek ndigt e devel Eine Mailingliste f r Entwickler users Dasselbe f r die Benutzer Mailinglisten anlegen und verwalten kann man ber das Mailinglisten Men m der Pro jekt bersicht Wenn man auf Admin klickt kann man neue Mailinglisten anlegen oder be phpeppershop dokumentation sdw Seite 35 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 stehende administrieren ist sie ffentlich Beschreibung des Zwecks Man hat noch die Wahl seine Mailinglisten im GNU Mailman zu administrieren Dort kann man sich mit dem per E Mail erhaltenen Passwort einloggen und seine Mailingliste ganz de tailliert und komfortabel konfigurieren News Foren News Foren zum Projekt lassen sich per Klick auf Forums in der Projekt bersicht adminis trieren In den Admin Teil kommt man ber Admin Dort kann man die Foren konfigurieren Drei News Foren waren f r un
90. TION ph delArtikel Beschreibung DA Einen Artikel aus der Shop Datenbank entfernen Betrifft mehrere Tabel len Argumente Artikel_ID INT R ckgabewert 1 entspricht true bei Erfolg SHOP_ADMINISTRATION php updArtikel Beschreibung Einen schon bestehenden Artikel in der Datenbank ver ndern updaten Diese Funktion ist etwas verzettelt Sie wurde seit der Version 1 05 kom plett berarbeitet und zum grossen Teil neu programmiert Auf die Schnelle erkl rt wird ein Artikel wie folgt upgedated 1 Daten des zu updatenden Artikels einlesen 2 Per darstellenArtikel Funktion SHOP_ADMINISTRATION_ARTI KEL php diesen im Eingabeformular darstellen 3 Optionaler Bild Einf ge Dialog bild_up php hier drin geht es auch weiter mit dem Update 4 ber die updArtikel 2 Funktion den Artikel updaten siehe gleich unter dieser Funktion Argumente Artikel_ID INT R ckgabewert Artikel_ID bei Erfolg false bei erfolgreichem Artikel Update der Artikel wurde in die Kategorie Nichtzugeordnet abgelegt Abbruch der Funktion per die Funktion und ent sprechender Fehlermeldung SHOP_ADMINISTRATION php updArtikel_2 phpeppershop dokumentation sdw Seite 81 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul PHP Funktionen Administrationsfunktionen Beschreibung DA Diese Funktion wird von der Datei bild_up php aufgerufen sobald ein Ar tikel upg
91. User Session INT phpeppershop dokumentation sdw Seite 78 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul PHP Funktionen Einzelne Shop Settings auslesen USER_ARTIKEL_HANDLING php getBezahlungsart Beschreibung Liefert einen Array in dem steht welche Zahlungsarten gew hlt werden k nnen Der jeweilige Name ist Y wenn er in den Shop Settings aktiviert wurde sonst N Argumente keine R ckgabewert Array Key Zahlungsart Wert Y oder N USER_ARTIKEL_HANDLING php getAGB Beschreibung Liefert die Allgemeinen Gesch ftsbedingungen AGB aus der Daten bank als String Tabelle shop_settings Argumente keine R ckgabewert Allgemeine Gesch ftsbedingungen String USER_ARTIKEL_HANDLING php getEmail Beschreibung Liefert die E Mail Adresse als String passend zur Bestellung welche von der im Argument angegebenen Session_ID referenziert wird Kunden E Mail Adresse Argumente Session_ID String R ckgabewert E Mail Adresse als String Eingaben ungepr gft USER_ARTIKEL_HANDLING php getSuchInkrement Beschreibung DA Liefert das Such Inkrement als Integer gt Wieviele gefundene Resultate auf einmal anzeigen siehe Artikelsuche Argumente keine R ckgabewert Such Inkrement INT USER_ARTIKEL_HANDLING php getBestellungsmanagement Beschreibung DA Liefert Y oder N
92. abestring string lt zum gt amp bertragen amp urlencode EQUOL Stringsquot Lt zum amp gt gamp bertragen amp amp HTML Ausgaben m ssen unbedingt mit urlencode codiert werden wenn man verhindern will dass Zeichenfolgen die sich in eckigen Klammern lt gt befinden als Tag interpretiert werden Wir nutzten diese Funktion vor allem um Forumularfeldwerte mittels value Attri but auszugeben lt php Svariable enth lt HTML Sonderzeichen und lt Tags gt gt lt form method post action index php gt lt br gt lt b gt Editieren Sie den Texti lt p gt lt input type text name form_data value lt htmlspecialchars variable size 40 gt lt input type submit name weiter value weiter gt Tor gt 1 8 9 JavaScript Urspr nglich war die Verwendung von JavaScript im Shop nicht geplant Durch der Einf h rung von Unterkategorien standen wir pl tzlich vor dem Problem dass wegen des dynam schen Men s m linken Frame mit einem Mausklick zwei Frames aktualisiert werden muss ten Da dies mit reinem HTML nicht m glich ist standen wir vor der Wahl entweder den ganzen Shop so umzuschreiben dass auf Frames verzichtet werden kann oder eine JavaS cript Funktion aufzurufen die beide Frames gleichzeitig aktualisiert Wir entschieden uns f r letztere L sung da sie wesentlich weniger Zeitaufwand zur Implementation ben tigte Gleichzeitige Aktualisierung von Frames mittels JavaScript Fo
93. ailliertes Inhaltsverzeichnis 1 Bericht 1 1 Kurzbeschrieb m Deutsch und bknghsch nieee NEE E 3 1 1 1 Kurzbeschrieb Deutsch en a een 3 LEAD ac E EE 3 BS ee eier keines 5 EE Apene E EE 6 RR e wunder 6 Aula beie N eene 6 ERR TE eCa EE 6 EEN T KoRntaktmoslienkeiten er aan aaa ern T Eege T EIERE T 1 4 Analyse des erhaltenen Feedbacks nesikeis 8 ALE Mail Auswerluns see ren 8 Weitere Tippo aus d n E Mails zensiert 8 1 4 2 Auflistung aller erhaltenen beedbacke 9 1 43 eh E EE E BEE 10 1 5 Wahl der verwendeten Technoloeen 12 Jk eebe E 14 1 6 1 Aufgabenauflistung nach Wichtigkeit UrO0 2001 14 1 6 2 Zeitplanung erstellt zu Droiektbeenn 16 163 ElHektiver Ablauf des TE EE 16 a KEE 18 ar EN WR e e GE 18 1 22 Exremwerte lest nee esse sure 20 Leo E te E EE 21 Test des CRM s Customer Relationship Management 22 Test d s Bestellunssablaufs asia sine a TEE 23 ESED UN EE 24 1 8 1 Installation der Systemumgebung LAM 24 Inhaltdieses Kapitels iin 24 Waieso diese Kombination een Reese 24 INSEIl On seele sel seele 25 Quellen beschaffensss ass Reina 25 En EE 25 IN I eeh 25 ET RE 25 PHP eere eher 25 e EE 25 BRWEILETUNPEN Seesen 25 EE TEEN E EE te inne 25 Entp cken der ENEE 25 OK E TEE 26 Sol Fl D te EE 26 Apache und mod oo binten rar sie are ee 26 SHEET EE 27 Apache Installation vervollet ndueen 28 phpeppershop dokumentation sdw Seite 161 von 169 2001 R Glanzmann amp J Fontanil ZW
94. allen abgeschlossenen noch nicht gel schten Be stellungen phpeppershop dokumentation sdw Seite 128 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 10 Kundenattribute Management Dank dem Kundenattribute Management ist es dem Administrator m glich zu bestimmen welche Adressinformationen ein Shopkunde eingeben kann und welche von diesen er einge ben muss Die Kundenattribut Bezeichnungen sind in der Tabelle attribut gespeichert Alle Attri but Bezeichnungen sind in der Datenbank gespeichert und k nnten theoretisch dynamisch ver ndert werden Wir haben ein Front End erstellt welches 14 fest definierte und vier frei konfigurierbare Attribute enth lt Die fest definierten Attribute sind die Kundenstammdaten Die vier Zusatzattribute k nnen vom Shopadministrator frei benannt werden F r diese kann er w hlen ob sie zum Kunden z B Kundennummer Geburtsdatum oder zur Bestellung z B gew nschter Liefertermin gespeichert werden Alle Attribute k nnen im Shop bei Bedarf darauf getestet werden ob der Shopkunde das Feld auch ordnungsgem ss ausgef llt hat Diese berpr fung besteht darin zu testen ob im ent sprechendem Feld etwas ausgef llt wurde kein Leerstring Die berpr fung der E Mail Adresse ist wesentlich umfangreicher und schliesst Fehleingaben nahezu aus Da f r jedes Attr but gew hlt werden kann ob es verwendet und berpr ft werden soll sind eine riesige Anzahl Kom
95. alliert hat Und so weiter bis zur 5 Priorit t Einstellungen Top Frame Hintergrundfarbe EER ch Bms Hintergrundbild H he Top Frame 65 Pixel Was soll oben links angezeigt werden Shopname Shoplogo nichts Administrationsstern einblenden ja Administrationsstern anzeigen neben den Knopf Warenkorb nein Administrationsmodus nur ber shopname shop Admin aufrufbarl Einstellungen Left Frame Einstellungen Main Frame Hintergrundfarbe Oooo Ro Gj BJ135 Hintergrundfarbe IRR1 GJ212 BJ212 H Hintergrundbild D Hintergrundbild Breite Lett Frame 165 Pixel Fontset Einstellungen 1 Priorit t Arial el 2 Priorit t Helvetica i 3 Priorit t Geneva 4 Priorit t Swiss C 5 Priorit t SunSans Regular Top Frame oberer Fensterteil Schrifteinstellungen Shoptitel Admin Stern Schriftfarbe IRTss Ges B2ss Schriftfarbe J255 BJ255 Schriftgewicht fett z Schriftgewicht normal x Schriftgr sse 30px Schriftgr sse 15px zl Text Dekoration keine Text Dekoration keine z Schriftstil italic kursiv Schriftstil normal z Left Frame linker Fensterteil Schrifteinstellungen Kategorien und Unterkategorien Mausover gt Kategorien und Unterkategorien _ Schriftfarbe IRIzss GJ255 BJ255 Schriftfarbe E Reo co Ein Schriftgewicht fett z Schriftgewicht fett p
96. als das einfache Konvertieren von SQLs zwischen Datenbanken Syntax und kosten zusammen nur US 180 00 phpeppershop dokumentation sdw Seite 109 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 4 7 DB Wrapper database php Von unserem Dozenten und Diplomarbeitsbetreuer Herr Feisthammel erhielten w r schon zu Beginn der Projektarbeit einen Datenbank Wrapper f r Sybase Dieser Wrapper stellt ei nerseits eine PHP Datenbank Connection zur Verf gung bietet die zum Datenbank Handling n tigen Funktionen an Query ausf hren Resultset auswerten Resultzeilen z hlen u s w und hat andererseits f r jede Datenbank auf die zugegriffen werden soll verschiedene Klas sen Wie schon erw hnt war dieser Wrapper f r Sybase schon fertig programmiert und ge testet W hrend der Projektarbeit portierten wir ihn noch auf die MySQL Datenbank Wir ben tigen die Artikel ID eines neu eingef gten Artikels Funktion newArtikel zum Einf gen des Artikels und seiner Optionen und Variationen Dies l sst sich per MySQL sehr leicht und effizient erledigen Sobald bei einem INSERT ein neuer Autowert generiert wird kann dieser mit dem Kommando mysql_insert_id ausgelesen werden Die Exec Funk tion der TMySQ QLDatabase Klasse in database php liefert also nicht mehr nur true oder false zur ck sondern e false wenn Exec nicht korrekt ausgef hrt werden konnte true wenn kein Insert mit Auto Increment Funktion ausgef hrt wurd
97. amm unter diesen Bedingungen weiter verbreiten d rfen Auch muss der Benutzer darauf hingewiesen werden wie er eine Kopie dieser Lizenz ansehen kann Ausnahme Wenn das Programm selbst interaktiv arbeitet aber normalerweise keine derartige Meldung ausgibt muss Ihr auf dem Programm basie rendes Werk auch keine solche Meldung ausgeben Diese Anforderungen betreffen das ver nderte Werk als Ganzes Wenn dentifizierbare Abschnitte des Werkes nicht von dem Programm abgeleitet sind und vern nftigerweise selbst als unabh ngige und eigenst ndige Werke betrachtet werden k nnen dann erstrecken sich diese Lizenz und ihre Bedingungen nicht auf diese Abschnitte wenn sie als eigenst ndige Werke verbreitet werden Wenn Sie jedoch dieselben Abschnitte als Teil eines Ganzen phpeppershop dokumentation sdw Seite 158 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 verbreiten das ein auf dem Programm basierendes Werk darstellt dann muss die Verbreitung des Ganzen nach den Bedingun gen dieser Lizenz erfolgen deren Bedingungen f r weitere Lizenznehmer somit auf die Gesamtheit aus gedehnt werden und damit auf jeden einzelnen Teil unabh ngig vom jeweiligen Autor Somit ist es nicht de Absicht dieses Abschnittes Rechte f r Werke in Anspruch zu nehmen oder zu beschneiden die komplett von Ihnen geschrieben wurden vielmehr ist es die Absicht die Rechte zur Kontrolle der Verbreitung von Werken die auf dem Programm basieren oder
98. and und Installationsfehler ersparen konnten Durch den Einsatz s mtlicher uns zur Verf gung stehender Kr fte kamen wir dann bei den meisten Punkten schneller voran als w r dies eigentlich urspr nglich eingeplant hatten Wobei hier erw hnt werden muss dass wir bei der urspr nglichen Planung von einer durch schnittlichen Arbeitsstundenanzahl von 8 Stunden pro Tag und Person ausgingen welche wir schlussendlich jedoch meistens um mehrere Stunden berschritten Ein m hsamer Knackpunkt war das Layoutmanagement da wir mass v mit der unterschiedlichen Interpre tation von HTML der von uns zu Testzwecken eingesetzten Browser zu k mpfen hatten Gerne h tten wir mehr Zeit in die Zahlungsabwicklung mit Online Payment Instituten in vestiert Nach einem Besuch dieser Firmen an der Orbit Comdex mussten wir jedoch fest stellen dass sich die Zielgruppe dieser Payment Anbieter nicht mit der unseres Shops deckt Wir planten dann ein wenig um und entschlossen uns selbst eine sichere Zahlungsabwick lung zu implementieren Erschwerend zur ohnehin schon knapp kalkulierten Zeitplanung kam dazu dass vor allem in der Start und Endphase der Diplomarbeit das ZHW LAN und die Verbindung zum Internet oft und ber l ngere Zeit nicht verf gbar waren was bei einem Webprojekt nicht gerade f r derlich ist 1 6 1 Aufgabenauflistung nach Wichtigkeit 17 09 2001 Legende Priorit t P 1 h chste Zeitaufwand Z 1 bis halber Tag Farben
99. ann f r das Entgegennehmen der Kreditkartendaten eine SSL Unterst tzung aktiviert werden Versandkosten werden nach Gewicht Preis oder Pauschale verrechnet Ein Mindermengenzuschlag und Nachnahmege b hren k nnen dynamisch zum Rechnungstotal addiert werden Der Shop wurde in den Scriptsprachen PHP und JavaScript entwickelt Die HTML Seiten werden dynamisch per PHP erzeugt und Benutzereingaben mittels JavaScript auf hre Kor rektheit berpr ft Alle Daten werden in einer MySQL Datenbank gespeichert Die Installa tion erfolgt bequem mittels eines Perl Scripts Wie schon im Titel erw hnt wurde der Shop als Open Source Projekt auf SourceForge ent wickelt Das heisst dass der Quellcode frei verf gbar ist und der Shop uneingeschr nkt ver wendet und weiterentwickelt werden kann Aktuelle Informationen und einen Beispielshop finden sich auf der Seite http www phpeppershop com 1 1 2 Abstract English Our aim was to develop a web shop that could be configured flexibly distributed freely and is open source under the GNU General Public Licence What has arisen is a shopping system that offers articles with infinite options and variations A picture of a desired size can be assigned to each article Due to an automatically generated thumbnail of the before mentioned picture the customer is given a consistent view of the ar ticles The customer can optionally save his address He can then access his record by simply logging phpep
100. archar 127 NOT NULL DEFAULT Versand und Verpackungskosten Mindermengenzuschlag enum N Y NOT NULL DEFAULT N Mindermengenzuschlag_bis_Preis DOUBLE NOT NULL DEFAULT 0 0 Mindermengenzuschlag_Aufpreis DOUBLE NOT NULL DEFAULT 0 0 CREATE TABLE backup Backup_ID CHAR 32 Wert CHAR 255 PRIMARY KEY Backup_ID UNIQUE UC_Backup_ID Backup_ID NOT NULL 2 4 6 SQL Query Handling Dieses Kapitel h ngt eigentlich stark mit der Security Kapitel 2 1 zusammen Das Konzept anstatt die Query selbst in die Funktion einzubinden dort nur Variablen zu benutzen ent stand urspr nglich n der Praktischen Arbeit dieses Fr hjahrs Dieser Ansatz hat verschie dene Vorteile Erstens werden so die SQL Queries von den Funktionen entkoppelt was ent scheidend ist sobald man gedenkt eine andere Datenbank einzusetzen und sich somit die SQL Syntax leicht ndert Weiter hat man so alle Queries zentral abgelegt Bei uns in zwei Dateien und das f r den ganzen Shop Zu guter Letzt l sst sich so unsere Security gut im plementieren Wir haben dieses Konzept auch in der Diplomarbeit strikte eingehalten Als Anmerkung sei hier noch erw hnt dass sich die Konvertierung der Queries am einfachs ten und schnellsten mit einem Tool erledigen l sst Wir haben hier Erstaunliches gesehen bei der Programmkombination DATANAMICs DeZign for databases und DATANAMICs Impor tER Scripts f r Windows www datanamic com Diese Tools verm gen weit mehr
101. arten M Institut aktiv Handling CT E intern zl Eurocard Mastercard kW extern zl American Express E extern zl Diners Club kW extern zl D intern zl E D intern I O O D intern zl E intern Ir E intern z Ir O intern Masseinheiten W hrung SFr Gewichtsmasskg Shop Konfiguration Breite der Mini Bilder in Pixel 100 ACHTUNG Erst aktiv f r Bilder die nach dem ndern eingef gt werden maximale Session Zeit 140 Sek ACHTUNG Einen striktion nach oben in der PHP INT SSL r ACHTUNG Nur einschalten wenn ihr Webserver auch SSL Unterst tzung bietet Kundendateneingabe und Login werden dann mit einer SSL Verbindung gesch tzt Bestellungsmanagement v an Wenn das Bestellungsmanagement ausgeschaltet wird so werden ie Bestellungen nicht mehr gespeichert Anzahl Suchresultate E00 Beschr nkt die Anzahl gleichzeitig angezeigfer Artikel bei einer Suche Artikel bearbeiten Anzahl Optionsfelder 5 Sie k nnen hier einstellen wie viele Options und Varlalionsfelder mindestens angezeigt werden wenn Sie Anzahl Varistionsfelder 5 einen neuen Artikel erstellen oder einen schon Vorhandenen bearbeiten Ausserdem kann gew hlt werden i wie viele leere Felder eingeblendet werden wenn ein Artikel schon mehr als die Mindestanzahl leere Optionsfelde 3 variationen Optionen hat leere Variationsfelder 3 Allgemeine Gesch ftsbedingungen Sie k nnen hier ihre Allgemeinen Gesch ftsbedingungen einf gen HTML Tags w
102. as Formular belle und oder Formular an Netscape 4 7x nicht richtig geschlossen Netscape 4 7x zeigt aber n cht eine Tabelle erst an wenn sie komplett eln gelesen wurde mm Da es in den meisten Programmen keinen richtigen Debugger gibt ist man auf echo und die Test Ausgabe der interessanten Variablen angewiesen Interaktivit t einer HTML Seite Der erste grosse Unterschied zwischen lokaler Programmentwicklung und Webprogrammi ng besteht im Funktions Handl ng Wenn ich lokal ein Programm entwickle schreibe ich eine Eingabemaske und rufe danach mit den eingegebenen Variablen eine Funktion auf Wenn man dieses Beispiel auf eine Webanwendung mit HTML und einer serverseitigen Scriptspra che wie z B PHP bertr gt merkt man dass es ein gravierendes Problem gibt Ich kann zwar eine Maske darstellen HTML Formular aber ich kann danach nicht einfach eine PHP Funktion aufrufen Weiter geht es nur ber einen HTML Link Entweder ist die URL im action Attribut des Formular Tags lt form gt definiert oder sie ist in Form eines gew hnli chen Links im Anchor Tag vorhanden Man merke sich Von einer Webpage zur anderen geht s nur ber eine URL weiter Diese Erkenntnis ist ziemlich wichtig Um dieser Problematik Herr zu werden haben wir im PhPepperShop die sogenannte Aufruf Schicht eingef hrt siehe Kapitel 2 2 1 bersicht ber die PHP Funktionen und Module Wir erstellten HTML Seiten welche PHP if und elseif Verz
103. ass man prim r die Daten bertragung ber das unsichere Internet sch tzen sprich verschl s seln muss Eine heute anerkannte Technologie um dies zu realisiern ist SSL Secure Socket Layer OpenSSL ist eine Open Source Implementation der Verschl sselungsfunktionalit t welche vom mod_SSL Apache DSO Modul benutzt wird phpeppershop dokumentation sdw Seite 24 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Installation Quellen beschaffen Die beschriebenen Quellen beziehen sich auf Pakete welche im September 2001 aktuell wa ren Nat rlich werden die Pakete zu einem sp teren Zeitpunkt andere Versionsnummern tragen Linux Linux beschafft man sich am besten als Komplettpaket m Form einer Distribution Wir ar beiteten mit SuSE Linux Professional 7 1 F r welche man sich entscheidet ist grunds tzlich Geschmackssache und im speziellen f r diese Anwendung eigentlich nicht von Bedeutung Wir benutzen hier weder das X System noch distributionsspezifische Eigenheiten Voraus gesetzt wird lediglich ein lauff higes Linux System nat rlich mit gcc flex yacc u s w Wir empfehlen die folgenden Pakete gleich ins Verzeichnis usr local src zu speichern dann k nnen wir vom gleichen Pfad ausgehen Ausserdem ist so durch die Verzeichnisstruktur festgelegt dass es sich um Sourcepakete handelt Apache http httpd apache org dist httpd MySQL http www mysgl com Downloads MySQL 3 23 mysql 3 23 42
104. ategorie umbenennen Lal tage beet ger ier ee eeeel 122 ee ere EE EE 122 neue Unterkategorie erstellen I i 122 Unterkategorie innterhalb Kategorie verschieben 6 123 Unterkategorie in eine andere Kategorie verschieben 7 123 Unterkategorie umbenennen 18 123 Unterkalesorie l schen IO 2 2 reihen 123 2 1 2 EE e E EE 124 2 8 2anlUnssmoslienkeiten EE 125 2 8 1 Vorauskasse Rechnung Nachnahme und kostenlosg 125 2 82 Kreditkarten EE 125 Shop intern abgewickelte bkredtkartenzablung 125 Einschr nkungen leisen 125 Shop extern abgewickelte kredtkartenzablung 125 E EE 126 Usability TE EE E EE 126 Das Testmodul pa est test ohni 127 2 9 B estell unss manas emeni era ae use 128 Se Ree bite Management EE 129 2 11 CRM Customer Relationship Management 130 2 11 1 Welche Funktionen bietet das CHM 130 3 Manuals SN Meta llatonmn REH E EE 132 3 1 1 Automatisierte Installations ee han 132 3 1 2AD I EE 132 SN EEN KE RE ee RE EE 133 SALA Erste Ee REENEN ONE EE 134 KN ER Et EH ee Ee 134 3 2 Backup und Restore M MS DL a es 135 3 2 1 Automatisiertes Datenbank Backun 135 phpeppershop dokumentation sdw Seite 164 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 BEER EE EE 136 DODN Back EE 136 3 2 2 Restore eines Datenbank Backup 137 3 2 3 Backup der Shopdateien und Shopbilder von Hand 137 3 2 4 Backup der Shop D
105. atenbank von leng ege eege eeh 137 9 2 3 hestore von Hand user 138 2o Bedenin EE 139 SE We E Ee TEE 139 3 3 2 Bedienung des Admnistratonstoole 139 Allgemeine Dhopeinstellung una in 139 Versandkosten Binstell nsen sun eu 143 Ku ndenattrib te bearbeiten a T E TE 144 kavout Minde emei enra a a a a a EE 145 Bilder Hintergrund amp Shoplogo bochladen 148 Shopbuttons Kn pfe hochladen anne 148 4 Anhang 4 1 Ee ET a EE 149 EELER ee are 149 421 2 ABache Webserver EE 149 4 1 3 CRM Customer Relationship Management 150 4 1 4 Datenbanken und im speziellen MvGOt 150 4 1 5 HTML JavaScript und Cascading Style Gheets 150 Ak O 21 EE 151 1 2 SOM WARE Versionen ana 152 4 2 1 Auf dem Server eingesetzte Software 152 4 2 2 Auf den Arbeitsstationen eingesetzte Goftware 152 4 3 PO RK Las e De EE 153 4A GPL GNU General Pubhe Eicenee usa a I E 158 4 A rt De tsche Fassung der GPL AUS TI N aa ein AA 158 4 5 Detailliertes Inhaltsverzeichn iss nasse 161 1 6 Inhalt der ED nee ernennen 166 EIER 167 EE 168 phpeppershop dokumentation sdw Seite 165 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 4 6 Inhalt der beiliegenden CD Dokumentation Open Source Manuals Zzusammenfassungen Notizen Webshop Button Templates Administratiosbereich PhPepperShop Source shop Admin Bilder Buttons Framesee template phpeppershop dokumentation sdw Seite 166 von 169 2001 R Glanzmann amp J Fon
106. beschriebenen Massnahmen war und ist es jedoch m glich einen Fehler sehr genau zu lokalisieren 1 7 1 Usability Test Da wir nicht von allen Anwendern das technische und logische Verst ndnis erwarten k nnen wie wir es mittlerweile haben entschlossen wir uns einen umfangreichen Usability Test durchzuf hren Da wir nat rlich nicht selbst die Usability unseres Shops testen konnten machten wir uns auf die Suche nach Testpersonen die sich bereit erkl rten den Shop auf Bedienbarkeit hin zu pr fen und fanden diese dann schliesslich auch Andrea Harder 9500 Wil Testen des kompletten Administrationsbereichs auf Bedienbarkeit Korrektheit und Ver st ndlichkeit s Einkaufen als normaler Shopuser Jolanda Jud 9500 Wil e Betreiben eines bereits installierten und konfigurierten Shops Artikel und Kategorienma nagement Erstellen eines eigenen Shoplayouts e Einkaufen als normaler Shopuser Roland Br hwiler 8560 M rstetten Installation des Shops e Verst ndlichkeit der technischen Einstellm glichkeiten s Einkaufen als normaler Shopuser Was uns erfreute war dass von unseren Testpersonen keine gr sseren Fehler gefunden wur phpeppershop dokumentation sdw Seite 18 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 den Einige kleine Fehler und Probleme konnten von uns schnell lokalisiert und behoben werden Betreffend Bedienbarkeit bem ngelten alle Testpersonen die gleichen drei P
107. bewert Die Kunden_ID String des neuen Kunden USER_BESTELLUNG php delKunde Beschreibung L scht einen Kunden in der Datenbank Argumente Kunden_ID String DA R ckgabewert true bei Erfolg USER_BESTELLUNG php setKunde_einer_Bestellung Beschreibung Gibt aufgrund einer Bestellungs_ID ein Kunden Objekt zur ck Argumente Bestellungs_ID INT DA R ckgabewert Kunden_Objekt siehe kunde_def php USER_BESTELLUNG php updKunde Beschreibung Dies ist ein Update aller Kundendaten Diese Funktion wird momentan nicht verwendet erlaubt aber das Setzen ALLER Kunden Attribute DA Argumente Kunde in Einzel Attributen von einem Formular her Kunden_Nr Session_ID Anrede Vorname Nachname Firma Abteilung Strasse Postfach PLZ Ort Land Tel Fax Email Einkaufsvolumen Lo sin Passwort gesperrt temp Attribut1 Attr but2 Attribut3 Attribut4 At tr butwert1 Attributwert2 Attr butwert3 Attr butwert4 Kunden_ID R ckgabewert true bei Erfolg USER_BESTELLUNG php updKundenfFelder Beschreibung DA Dies ist ein Update aller vom Kunden beinflussbaren ben tigten Felder seines Datensatzes Argumente Kundendaten in Einzelteilen vom Formular her Session_ID Anrede Vorname Nachname Firma Abteilung Strasse Postf ach PLZ Ort Land Tel Fax Email Attribut1 Attr but2 Attribut3 At tr but4 Attr butwert1 Attributwert2 Attributwert3 Attr butwert4 Kun den_ID R ckgabewert
108. binationen m glich Wir mussten also die Ausgabe der Felder sowie die berpr fung der gemachten Eingaben dynamisch gestalten Zur berpr fung auf korrekte Eingabe haben wir eine JavaScript Funktion erstellt die alle Uberpr fungsm glichkeiten beinhaltet keine berpr fung der Eingabe berpr fung ob ein Wert eingegeben wurde kein Leerstring bergeben berpr fung ob es sich um eine E Mail Adresse handelt Durch den gl cklichen Umstand dass man Formularfeldinhalte eines HTML Formulars mit JavaScript wie ein Array ansprechen kann wird ein Z hler laufen gelassen mit dessen Hilfe jedes Formularfeld auf seine Korrektheit berpr ft wird Damit die Funktion weiss welches Feld wie zu behandeln ist wird mit der Ausgabe der HTML Seite ein JavaScript Array per PHP erzeugt der f r jedes Feld beinhaltet wie es berpr ft werden soll Dieser String wird der JavaScript Funktion als Argument bergeben Bei der Ausgabe der Bestellung an den Browser werden die Adressdaten in einer zweispalti gen Tabelle dargestellt Damit keine L cher durch nicht verwendete Adressattribute entste hen wird auch diese Tabelle dynamisch erzeugt Ist schlussendlich nur noch ein Adressele ment auf der letzen Zeile wird diese durch eine Dummy Zelle erg nzt phpeppershop dokumentation sdw Seite 129 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 11 CRM Customer Relationship Management Customer Relationship
109. d meistens SERVER_NAME bergeben Ein Aufruf dieser Funktion sieht typischerweise so aus getSSL PHP_SELF SERVER_NAME false Eingestellt wird SSL in den allgemeinen Shop Einstellungen setshopset tings Argumente oldphpself String PHP_SELF server String SER VER_NAME noSSL boolean R ckgabewert Neuer URL mit oder ohne https String USER_ARTIKEL_HANDLING php getNachnahmebetrag Beschreibung DA Liefert den Geldwert welcher bei einer Nachnahmelieferung zu verrech nen ist Nachnahmegeb hr Argumente keine R ckgabewert Nachnahmebetrag DOUBLE 0 0 keiner vorhanden USER_ARTIKEL_HANDLING php getKontoinformation Beschreibung DA Liefert den String welchen man in den allgemeinen Shop Einstellungen neben Vorauskasse im Feld Kontoinformation eingeben kann Argumente keine R ckgabewert Kontoinformation String USER_ARTIKEL_HANDLING php getcessarg Beschreibung DA Einen CSS String aus der Tabelle css_file auslesen Argumente CSS ID R ckgabewert zugeh riger CSS String USER_ARTIKEL_HANDLING php getKreditkarten Beschreibung DA Diese Funktion liest alle Kreditkartendaten aus der kreditkarten Tabelle aus und gibt alle Kreditkarten Objekte in einem Array zur ck Argumente keine R ckgabewert Array von Kreditkarten Objekten USER_ARTIKEL_HANDLING php getShopEmail Beschreibung Datei Liefert di
110. den nicht ins PHP Schichten Modell integriert haben aber eine Security Stufe User Redirect index html Administrationtool Redirect Admin index html Datenbank und DB User erzeugen database shopname _create sql Datenbank mit Default Shop f llen database shopname _insert sql Datenbank und DB User l schen database ishopname _del sql Installation Diese Dateien existieren nur vor config pl der Installation config_part4 sh Deinstallation remove pl CSS Template Admin csstemplate txt Frameset Template Admin indextemplate txt User CSS Datei shopstyles css User CSS Datei doppelt wegen NS 4 7x Frameset shopstyles css Fixes Admin CSS Layout Admin shopstyles css Willkommenspage Frameset content html 2 2 2 PHP Module und ihre Funktionen Es folgen nun die nach Schichten sortierten PHP Module Handelt es sich um Aufruf Module so wird deren Funktion anhand der bergebenen Variable darstellen definiert Bei den funktional gegliederten Modulen werden die Funktionen erkl rt Klassendefinitionen Wir haben im PhPepperShop immer auf Klassen zur ckgegriffen wenn komplexe Datentypen bearbeitet oder bertragen von Funktion zu Funktion werden mussten Der PhPepperShop ist ganz klar nicht Objekt orientiert entwickelt Wir ben tigten die Klassen lediglich als Da ten Container phpeppershop dokumentation sdw Seite 68 von 169 2001 R Glanzmann amp J Fontanil Z W 15 November 2001
111. e e Den zuletzt erzeugten Auto Increment Wert wenn es bei einem Insert so einen ge geben hat Diese Erweiterung wurde bei der TSybaseDatabase Klasse noch nicht vorgenommen Man muss also diesen neuen Auto Increment Wert zuerst per Select Anweisung anfordern und dann zur ckgegeben Will man den Shop also unter Sybase laufen lassen muss diese Funk t on zuerst noch programmiert werden phpeppershop dokumentation sdw Seite 110 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 5 Shop Layout Management 2 5 1 Shop Layout Beschreibung Zuerst wird d e Datei index html vom Webserver geladen und an den Browser ausgegeben Diese Datei hat die Funktion den Shopuser sofort per http redirect auf index php weiter zuleiten welches sich im Shopverzeichnis befindet Unterst tzt der Browser diese Funktion nicht kann sich der Surfer durch anklicken eines Links zum Shop navigieren Ausserdem kann diese Datei noch dazu verwendet werden Informationen f r Suchrobots bereitzustellen Wird der Shop in eine bestehende Homepage eingebettet kann index html weggelassen und der Shop direkt mit einem Link auf index php aufgerufen werden index html Frames Shop Startseite E _ BET ET E mimsy Ji era rg Eet Main Content SE Frame Danach wird von index php das Frameset aufgebaut und die Shopstartseite dargestellt Der gesamte Shop Benutzersicht wird nun in diesem Dreierframeset dargestellt Das oberste Frame
112. e Attribute werden dazu verwendet um dynamisch Kundendatenfelder konfigurieren zu k nnen Man kann z B das Eingabefeld Strasse erzeugen und diesem Kunden Attribut dann mitteilen ob es angezeigt werden soll ob seine Eingabe berpr ft werden soll an welcher Position es angezeigt werden soll und ob es persistent zu jedem Kunden mit in der Datenbank gespeichert werden soll CRM In dieser Klasse wird nicht nur ein Attribut gespeichert sondern immer gleich alle existierenden Attribute Arrays bestellung_def php Bestellung Beschreibung DA Definiert eine Klasse Bestellung die der Forderung gerecht wird eine ganze Bestel lung inklusive all ihren Attributen und Artikel Zuordnungen aufnehmen zu k nnen Die Artikel werden dabei in einem Array f r den es Zugriffsfunktionen gibt verwaltet Dieser Array enth lt Artikel_info Objekte siehe weiter unten bestellung_def php Artikel_info Beschreibung Diese Klasse wird nur im Zusammenhang mit Bestellungen verwendet Sie enth lt In formationen bez glich eines Artikels n einer Bestellung also auch Anzahl u s w kategorie_def php Kategorie Beschreibung DA Die Klasse Kategorie kann alle Attribute einer Kategorie fassen In einem Array spei chert das jeweilige Objekt die Unterkategorien der Haupt Kategorie Es gibt die drei Funktionen get put und anzahl f r den Unterkategorienarray kategorie_def php Unterkategorie extends Kategorie
113. e Bestellung editiert wer den SHOP_BESTELLUNG php ungleich 10 11 12 13 Beschreibung DA Datei Suchformular anzeigen Momentan kann man hier nur nach Referenznummern suchen darstellen SHOP _KUNDE php 10 Beschreibung DA Abspeichern der Einstellungen SHOP_KUNDE php ungleich 10 Beschreibung DA Formular f r das Mutieren der Kundenattribute Datenfelder eines Kunden Datensatzes anzeigen Hier k nnen auch die selbstdefinierten Zusatzfelder konfiguriert werden darstellen phpeppershop dokumentation sdw Seite 93 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 SHOP_LAYOUT php 10 Beschreibung Speichert die ver nderten Layout Parameter in die Datenbank und ruft die Funktionen zur Erzeugung der CSS Dateien sowie von index php beinhaltet Frameset auf DA SHOP_LAYOUT php 20 Beschreibung Gibt ein Formular aus in welchem man per Browse Button eine Bild Datei auf der Festplatte ausw hlen kann Diese wird dann als eines der folgenden Bilder hochgeladen Shoplogo linkes oberes content Hintergrundbild DA SHOP_LAYOUT php 21 Beschreibung Dies ist die Folgeseite von darstellen 20 Hier wird der Dateiname der hochge ladenen Datei analysiert Handelt es sich um ein File vom Typ gif Jpg jpeg oder png so wird sie in die entsprechende Bilddatei im Verzeichnis Bilder hi DA neinkopiert Auch f r diese Bi
114. e Datenbank Backup erlaubt es ein Backup Set anzulegen welches optio nal automatisch aktualisiert wird Wir m chten hier ausdr cklich darauf hinweisen dass es sich hierbei um ein Datenbank Backup handelt Die User Buttons und Hintergrundbil der werden NICHT mit diesem Backup nicht gespeichert Diese m ssen immer noch von Hand gespeichert werden siehe weiter unten Der Shop bietet im Administrationsmodus unter dem Punkt Datenbank Backup ein Unter men an Von hier aus l sst sich das automatisierte Datenbank Backup konfiguieren ein Datenbank Backup erstellen oder ein Restore starten Wenn man im Untermen auf Backup klickt kann man das automatisierte Backup konfigu rieren Hier kann man auch direkt ein Backup machen Button JETZT EIN BACKUP ER STELLEN B Rukb p Hanztrsscg beim WA f ai j aj Eb p p o Dmu ie d A 2 a o a e O J ach Dr Hmm eph arge Fei KE Let I wf hen A ar har oppie rn ua Gerd etc H et EHI BL 77 ch DL CR a Peni i GA mte ng a i oe 23 a A Hra 3 en 23 roree 23 ger Au F oe rage e D per ven ge SHOP ADMINISTRATION Datenbank Backup nur m MyS Ll E iraba Bg brsogniEarkke bi aries Fed Itoezc igbangwdn F A SEET Ga Sije ZE Korea ui ateni Bsiup ahorn F Arbman i Da akma Backup eng An Semea n ah Erem Earp d a Adna an Bap des Se Se i 2 da siban phe Lt sias duhani cherta Eck ei orden aber d 25 Recht CRORE SE eiis ditar i Kori ag most Be bp ur TE Er Fiasko cke bfommgnoer
115. e E Mail Adresse des Shop Betreibers oder des Verantwortlichen gt in Shop Settings eingestellt Argumente keine R ckgabewert Shop Email Adresse String Funktionsname SHOP_ADMINISTRATION php newArtikel phpeppershop dokumentation sdw Seite 80 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Beschreibung DA Einen neuen Artikel in die Datenbank speichern Diese Funktion f gt einen neuen Artikel ohne Bild in die Datenbank ein Sie wird von der Datei bild_up php aufgerufen Betrifft Tabellen artikel artikel_optionen artikel_variationen artikel_kategorien Damit mehrere Kategorien pro Artikel m glich sind werden die Kategorie_IDs in einem Array bergeben Eine weitere Spezialit t ist das Flag kat_save Nur wenn dieses true 1 ist wird der neue Artikel auch in die angegebenen Kategorien eingetragen siehe auch updArtikel_2 Argumente In Einzelteile zerlegter Artikel vom Formular her Kategorie_IDarray Artikel_Nr Name Beschreibung letzteAende rung Preis Aktionspreis Gewicht Link Optionenarray Variations array kat_save R ckgabewert Artikel_ID INT des neu eingef gten Artikels Artikel_ID wurde per Auto Increment Funktion erzeugt MySQL Hier sei noch erw hnt dass der DB Wrapper database php nur f r MySQL diese Funktionalit t bietet Bei den anderen Datenbanken auch Sybase muss das noch nachprogrammiert werden SHOP ADMINISTRA
116. e Verzeichnis FeonL1g re prefix 1sr7 local make make install Zlib Im Zlib Source Verzeichnis phpeppershop dokumentation sdw Seite 28 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 configure make make nstall LG JPEG Software Im IJG JPEG Software Source Verzeichnis configure enable shared enable static prefix usr local make make test make install GD Bevor wir die GD Library kompilieren k nnen m ssen wir noch das Makefile editieren und ab ndern Die Defaulteinstellungen benutzen nicht die libjpg libpng freetype Libraries Das wollen wir aber und m ssen deshalb die vorgegebenen Zeilen kommentieren und die Alter nativen auskommentieren CFLAGS und LIBS Bei den INCLUDEDIRS und den LIBDIRS sollte man jeweils einen Zusatz in der Form I usr local include freetype2 beziehungsweise L usr local lib machen Nun sollte noch berpr ft werden ob auch folgende Pfade vorkommen INSTALL Be US E EE Re INSTALL INCLUDES usr 7 7 local inelude LNSTALL BIN us2 10oc231 brn Und nun im GD Source Verzeichnis make make nstall PHP konfigurieren und kompilieren Wichtig ist das with config file path Attribut Im angegebenen Pfad wird PHP sp ter n mlich seine php ini suchen Im PHP Source Verzeichnis phpeppershop dokumentation sdw Seite 29 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November
117. e Wahl ob er das aktuelle Produktbild l schen dem Artikel eine neues hinzuf gen oder keine nderungen am Artikel vornehmen will Das von uns in der Projektarbeit erstellte Formular war aber mehr verwirrend als hilfreich Wir wollten damit die Artikelbearbeitung weiterhin effektiv ausgef hrt werden kann keinen weiteren Zwi schenschritt einf hren Deshalb entschlossen wir uns aussagekr ftige Buttons zu erstellen Hilfetexte direkt in die HTML Seite auszugeben und die Seite mit horizontalen Querbalken optisch n drei Teile zu gliedern Alte Version des Bildmen s Neue Version des Bildmen s AA Shop Microsoft Internet Explorer i lel x ZA Shop Microsoft Internet Explorer nM lelx Datei Bearbeiten Ansicht Favoriten Extras EI Datei Bearbeiten Ansicht Favoriten Extras 2 Ae ich gt 2 A A suchen ltanten Ave G5 8 7 A zur ck A A Z auhen Gravorten hvera bw A Adresse 5 http 160 85 138 78 fontajos shopAdmin bild_up php z Wechseln zu Links Si Adresse Je http 160 85 138 78 glanzret phpeppershop shop dmin bild_up php E Wechseln zu Links SHOP ADMINISTRATION SHOP ADMINISTRATION Der Artikel Coca Cola 0 51 PET wurde erfolgreich in der Datenbank gespeichert Der Artikel Coca Cola 0 51 PET wurde erfolgreich in der Datenbank gespeichert Momentan aktuelles Produktbild Ki Folgendes Artikelbild ist momentan zum Artikel Coca Cola
118. e gt p lt shopname gt gt lt Pfad und Backupverzeich nis gt Datenbank lt shopname gt backup lt datum gt sql Beispiel mysqldump c uPizzauser p pizzashop gt pizzashopbackup_27102001 Da tenbank pizzashopbackup27102001 sql Nun ist ein Backup der gesamten Shopdatenbank inklusive allen persistenten Kunden Be stellungen falls das Bestellungsmanagement eingeschaltet ist und Artikeln mit ihren Bil phpeppershop dokumentation sdw Seite 137 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 dern erstellt worden In verschiedenen Publikationen wurde darauf hingewiesen dass gewisse Provider ihren MyS L Benutzern aus Sicherheitsgr nden das Verwenden dieses Programms verbieten Wir haben uns berlegt dass man ein Backup einer beliebigen Datenbank auch aus kumulierten SELECT Statements zusammenstellen kann Leider blieb uns zu wenig Zeit um diesen Ge danken in Form eines Backuptools noch rechtzeitig in dese Diplomarbeit einfliessen zu las sen Wir haben uns aber entschieden baldm glichst ein Backup Utility nachzureichen 3 2 5 Restore von Hand Auch hier W rter in dreieckigen Klammern stellen Bezeichner dar Man muss bei folgenden Befehlen die Bezeichner durch entsprechende Angaben ersetzen Beispiel lt shopname gt gt pizzashop Der Restore l sst sich in vier Teilschritte zerlegen 1 Man muss einen frisch installierten upgedateten Shop haben welcher betriebsbereit ist 2
119. earbeiten Einen bestehenden Artikel bearbeiten Bitte die Kategorie des Artikels auswr hlf n Intel m Abbrechen nte soft Internet Explorer l l x Bitte die Kategorie des Artikels ausw hlen a Intel AMD Bitte den zu bearbeitenden Artikel auswaehlen Prozessoren K hler P Softgetr nke AND Athlon Thunderbird 1000NHz _ Bearbeiten Pl schtiere 1 Transmeta VIA Nichtzugeordnet Abbrechen Fertig o E Internet ei 9 Internet An der Bearbeitung der Artikeldaten nderte sich eigentlich nichts Da wir die Anzahl Op tionen und Varianten Felder neu dynamisch konfigurierbar implementierten mussten wir noch einige nderungen an der Darstellung des Formulars vornehmen Die Zuordnung des Artikels zu einer Kategorie konnte nicht mehr im gleichen Formular vorgenommen werden da der Artikel mit dem neuen Datenbankmodell auch mehreren oder keiner Kategorie zuge ordnet werden kann Wir mussten also einen weiteren Zwischenschritt einf gen in dem der Artikel beliebig vielen Kategorien zugeordnet werden konnte Zu diesem Zweck geben wir die Kategorienliste mit allen Kategorien aufgeklappt aus Hinter jeder Kategorie und Unterkategorie wird eine Checkbox angezeigt Soll der Artikel einer Kategorie zugeordnet werden wird einfach die entsprechende Checkbox angew hlt Enth lt eine Kategorie Unterkategorien k nnen der Kategorie selbst keine Artikel zug
120. ebssystemen und Architekturen testen Weiter las sen sich so bequem spezielle Binaries des eigenen Projekts erstellen MySQL Datenbank Jedem Projekt wird auf Anfrage eine MySQL Datenbank gegeben Diese kann frei benutzt werden Oft wird sie dazu benutzt eine dynamische Webseite des Projekts zu unterst tzen Virtual Hosts Service Man kann SourceForge als Hoster benutzen Per Webinterface kann man eine Anfrage an SourceForge senden auf einen gewissen DNS Namen zu antworten Fragen zu SourceForge Hier findet man viele Dokumente zu SourceForge http sourceforge net docman group_id 1 phpeppershop dokumentation sdw Seite 41 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 8 4 Browser Kompatibilit t Alle Teile des Webshops wurden von uns mit den folgenden Browsern getestet Browser lterer Generation e Netscape 4 7x Aktuelle Browser Internet Explorer 5 x 6 e Mozilla 0 9 e Netscape 6 0 6 1 Bei der Wahl der zu Testzwecken verwendeten Browser beschr nkten wir uns auf kostenlos erh ltliche Produkte Den Internet Explorer 5 x 6 sowie Netscape 6 x w hlten wir weil sie momentan die popul rsten Browser darstellten Netscape 4 7 brauchten wir um eine gewisse R ckw rtskompatibilit t zu wahren und Mozilla wird unserer Ansicht nach in Zukunft kon tinulerlich an Beliebtheit gewinnen Positiv zu erw hnen ist dass alle Browser neuster Generation die von uns erzeugten HTML Seiten mit wenige
121. edated werden soll Dies ist quasi der zweite Teil eines Artikel Updates Diese Funktion updated nur die Artikeldaten OHNE das Bild Weiteres zum eigentlichen Bild siehe bild_up php Das Flag kat_save wird benutzt um den Artikel upzudaten aber nicht um die Kategorien Referenzen des Artikels zu aktualisieren MEHR OPTIO NEN VARIATIONEN Button Implementation Es bewirkt dass Teil 4 von updArtikel_2 bersprungen wird Argumente In Einzelteile zerlester Artikel vom Formular her Kate sorie_IDarray Artikel_ID Artikel_Nr Name Beschreibung letzteA enderung Preis Aktionspreis Gewicht Link Optionenarray Variati onsarray kat_save R ckgabewert Artikel_ID INT bei Erfolg SHOP_ADMINISTRATION php movengzArtikel Beschreibung DA Kopiert den angegebenen Artikel in die Kategorie Nichtzugeordnet Argumente Artikel_ID INT R ckgabewert true bei Erfolg SHOP_ADMINISTRATION php getshopsettings Beschreibung DA Liefert die in der Datenbank in der Tabelle shop_settings definierten Shop Einstellungen als einen Array of String Argumente keine R ckgabewert Array Keys Feldnamen Werte Werte der Felder SHOP_ADMINISTRATION php setshopsettings Beschreibung DA Macht ein Update auf alle Attribute der Tabelle shop_settings und aktua lisiert somit alle Shop Settings Argumente Alle Shopsettings einzeln dies ist praktisch da diese Funk tion nur nach einem Formular aufge
122. ein danach weiter im dar stellen 3 USER_ARTIKEL_ HANDLING_AUFRUF php Beschreibung DA Artikel Suchen 2 2 Verarbeitung der Eingabe und Ausgabe des formatier ten Resultats USER_ARTIKEL_ HANDLING_AUFRUF php 4 Beschreibung DA Datei Im left Frame alle Kategorien zur Auswahl anzeigen Auswahlmen Die selektierte Kategorie oder Unterkategorie wird in der Variable selected bergeben Darin steht die Kategorie_ID der entsprechenden Kategorie resp Unterkategorie Diese Funktion wird von index php aufgerufen gt siehe dortiges Frameset Variable darstellen USER_BESTELLUNG_AUFRUF php 1 Beschreibung DA Anzeige des Warenkorbs des Kunden im Content Frame USER_BESTELLUNG_AUFRUF php 2 Beschreibung Wird aufgerufen sobald der Kunde einen Artikel in seinen Warenkorb gelegt hat Weiche Zur ck zu Artikel in Warenkorb oder zur Kasse gehen USER_BESTELLUNG_AUFRUF php 3 Beschreibung Datei Wenn ein Kunde in seinem Warenkorb bei einem Artikel auf l schen klickt wird dieser Meldungsbildschirm angezeigt Variable darstellen USER_BESTELLUNG_1 php 1 phpeppershop dokumentation sdw Seite 88 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul Aufruf Module Userseitiges Bestellungswesen Teil 2 2 Anzeige des Warenkorbs des Kunden im Content Frame Bevor der Lo gin Screen ausgegeben wird pr fen ob s
123. ein Passwort vergessen und es sich per E Mail senden lassen e Kunde wird nach einmaligem Login wieder erkannt bis er seinen Browser schliesst Kunde kann seine Daten ver ndern Datenbank Update Ein detailliertes Ablaufdiagramm des CRM s findet man im Kapitel 1 7 3 Tests Ein weiteres Problem war dass es durch das Einf hren des CRM s persistente und tempor re Kunden gibt Wenn ein Kunde sich nicht beim Shop anmeldet muss sein Kundendatensatz nach der Bestellung wieder gel scht werden aber nur dann wenn das Bestellungsmanage ment ausgeschaltet ist Wenn man das Bestellungsmanagement einschaltet gibt es bei einem tempor ren Kunden eine Beziehung zu seiner Bestellung Ein tempor rer Kunde ist an eine Bestellung gebunden und kann nur maximal eine Bestellung haben Bestellung Shopbenutzer Bei persistenten Kunden hingegen ist die Bestellung an einen Kunden gebunden Wenn man phpeppershop dokumentation sdw Seite 130 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 hier eine Bestellung l scht soll nat rlich nicht auch der Kunde mit gel scht werden Aus serdem kann ein persistenter Kunde mehrere Bestellungen haben nicht nur eine Zum Schluss muss noch beachtet werden dass bei Bestellungsabschluss und ausgeschaltetem Be stellungsmanagement nur die Bestellung nicht aber der Kunde selbst gel scht werden darf Bestellung Shopbenutzer Man sieht also dass schon die grundlegenden CRM Funktionen einiges
124. eite 120 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 7 Kategorienmanagement Das Kategorienmanagement ist sehr umfangreich aufgebaut Kategorien und Unterkatego rien k nnen erstellt umbenennt gel scht oder an eine beliebige Stelle verschoben werden Entfernt man eine Kategorie kann man w hlen ob die in ihr enthaltenen Artikel mitgel scht oder der Kategorie Nichtzugeordnet zugewiesen werden sollen sofern sie nicht noch einer anderen Kategorie zugeordnet s nd Wir erstellten gleich zu Beginn der Implementierung ein detailliertes Konzept welches den Funktionsumfang und Ablauf sowie die HTML Ausgabe genau beschreibt An dieses hielten wir uns konsequent Da daraus sehr gut die Abl ufe zu erkennen sind wird es hier in un ver nderter Form abgedruckt Im Administrationstool wurden weiter einige Buttons und Texte wurden zwecks besserer Verst ndlichkeit nochmals berarbeitet siehe Screenshots weiter unten Zus tzlich kann beim L schen einer Kategorie bzw Unterkategorie noch gew hlt werden ob die in ihr ent haltenen Artikel unwiderruflich gel scht werden 2 7 1 Urspr ngliches Konzept unver ndert Es gibt Kategorien und Unterkategorien Eine Kategorie kann beliebig viele Unterkategorien enthalten Funktionen die mit Kategorien und Unterkategorien ausgef hrt werden k nnen Kategorie neue Kategorie erstellen eg Kategorie verschieben E Kategorie umbenennen Ss Kategor
125. elbst erhalten haben Diese Alternative ist nur f r nicht kommerzielle Verbreitung zul ssig und nur wenn Sie das Programm als Objectcode oder n ausf hrbarer Form mit einem entsprechenden Angebot gem Absatz b erhalten haben Unter dem Quelltext eines Werkes wird diejenige Form des Werkes verstanden die f r Bearbeitungen vorzugsweise verwendet wird F r ein ausf hrbares Programm bedeutet der komplette Quelltext Der Quelltext aller im Programm enthaltenen Module ein schlie lich aller zugeh rigen Modulschnittstellen Definitionsdateien sowie der zur Compilation und Installation verwendeten Skripte Als besondere Ausnahme jedoch braucht der verteilte Quelltext nichts von dem zu enthalten was blicherweise ent weder als Quelltext oder in bin rer Form zusammen mit den Hauptkomponenten des Betriebssystems Kernel Compiler usw geliefert wird unter dem das Programm l uft es sei denn diese Komponente selbst geh rt zum ausf hrbaren Programm Wenn die Verbreitung eines ausf hrbaren Programms oder des Objectcodes dadurch erfolgt dass der Kopierzugriff auf eine da f r vorgesehene Stelle gew hrt wird so gilt die Gew hrung eines gleichwertigen Zugriffs auf den Quelltext als Verbreitung des Quelltextes auch wenn Dritte nicht dazu gezwungen sind den Quelltext zusammen mit dem Objectcode zu kopieren 4 Sie d rfen das Programm nicht vervielf ltigen ver ndern weiter lizenzieren oder verbreiten sofern es nicht durch diese Li ze
126. elche Zahlungsarten Sie in Ihrem Shop akzeptie ren wollen Vorauskasse Aktivieren Sie diese Checkbox wenn Sie die Bezahlung per Vo rauskasse aktivieren wollen Konto Dieser Text w rd dem Kunden in der Bestellbest tigung ausgege ben falls dieser die Zahlungsart Vorauskasse w hlt Sie k nnen hier zum Beispiel Ihre Kontoinformationen eingeben damit der Kunde das Geld darauf einzahlen kann Rechnung Zahlungsart Rechnung akti viert nicht aktiviert Nachnahme Zahlungsart Nachnahme akti viert nicht aktiviert W hlt ein Kunde die Zahlungsart Nachnahme wird ihm ein Pauschalpreis f r die entstehenden Nachnahmegeb hren auf den Rechnungsbetrag ad dert Die H he des Betrags kann m Men Versandkosten Einstel lungen fest gesetzt werden Kreditkarten Aktivieren Sie diese Checkbox wenn Sie die Bezahlung mit Kre ditkarten aktivieren wollen Institut Geben Sie den Namen der Kreditkartenanbieter ein akt v Mit diesen Checkboxen k nnen Sie alle Kreditkarten getrennt von einander akt vieren deaktivieren phpeppershop dokumentation sdw Seite 141 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 Handling F r jede Kreditkarte kann eingestellt werden wie die Kreditkar tendaten erfasst werden extern Die Kreditkartendaten werden von einem externen Zah lungsinstitut erfasst intern Der Kunde gibt seine Kreditkartendaten di
127. em Formular POST oder GET Bei der bermittlung der Variablen in einem Formular hat man die Wahl zwischen GET und POST GET funktioniert wie oben detailliert beschrieben durch Anh ngen der Daten an die URL Es gilt hier dementsprechend auch die gleiche L ngenbeschr nkung 2 KByte Son derzeichen werden aber vom Browser ASCII codiert bergeben und auch wieder decodiert Da beim Formularversand mittels GET die URI wiederum vom Browser angezeigt wird und nat rlich auch manipuliert werden kann ist von dieser Methode abzuraten Die Variablenweiterleitung per POST Formular ist die von uns favorisierte Methode welche wir mit Abstand auch am h ufigsten eingesetzt haben Das ganze Formular ist in seiner Gr sse nicht beschr nkt Es k nnen somit auch gr ssere Datenbest nde w e Bilder weiter gegeben werden Ein weiterer positiver Aspekt ist dass dies f r den Surfer transparent ge schieht Er kann die Daten nicht so einfach manipulieren und sieht den bermittelten Da tensatz nur im HTML Quellcode Die Var ablen k nnen in allen m glichen Formularfeldern bermittelt werden Formularfeldtyp Beschreibung text Einzeiliges Eingabefeld checkbox Kontrollk stchen radio Optionsschaltfl che submit Sendeknopf phpeppershop dokumentation sdw Seite 51 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Formularfeldtyp Beschreibung reset Knopf zum zur cksetzen des
128. en DOUBLE NOT NULL DEFAULT 0 0 Nachnamebetrag DOUBLE NOT NULL DEFAULT 0 0 Mindermengenzuschlag DOUBLE NOT NULL temp_message_string TEXT NOT NULL Rechnungsbetrag DOUBLE NOT NULL DEFAULT 0 0 DEFAULT 0 0 Bestellung_abgeschlossen enum N Y NOT NULL DEFAULT Bestellung_ausgeloest enum N Y NOT NULL DEFAULT Bestellung_bezahlt enum N Y NOT NULL DEFAULT PRIMARY KEY Bestellungs_ID UNIQUE UC_Bestellungs_ID Bestellungs_ID N ST NE Kategorie_ID INT NOT NULL DEFAULT O AUTO_INCREMENT Positions_Nr INT NOT NULL DEFAULT 0 Name VARCHAR 128 NOT NULL Beschreibung TEXT NOT NULL Bild_gross MEDIUMBLOB Achtung Bei anderer DB Typ ev BLOB Bild_klein BLOB Bildtyp VARCHAR 15 Bild_last_modified TIMESTAMP 14 Unterkategorie_von VARCHAR 128 DEFAULT NULL PRIMARY KEY Kategorie_ID UNIQUE UC_Kategorie_ID Kategorie_ID INDEX IDX_kategorien_1l Name k_ID INT NOT NULL DEFAULT O AUTO_INCREMENT Kunden_ID VARCHAR 255 NOT NULL Kunden_Nr VARCHAR 128 NOT NULL DEFAULT 0 Session_ID CHAR 32 NOT NULL DEFAULT 0 Anrede VARCHAR 24 NOT NULL Vorname VARCHAR 128 NOT NULL Nachname VARCHAR 128 NOT NULL Firma VARCHAR 128 NOT NULL Abteilung VARCHAR 128 NOT NULL Strasse VARCHAR 128 NOT NULL Postfach VARCHAR 16 NOT NULL PLZ VARCHAR 32 NOT NULL Ort VARCHAR 128 NOT NULL Land VARCHAR 128 NOT NULL Tel VARCHAR 32 NOT NULL Fax VARCHAR 32 NOT NULL Email VAR
129. en Pay Objekt herausholen und in einem weiteren hidden Field dem exter nen Zahlungssystem mit bergeben Um zu verstehen was alles in einem Pay Objekt vorhanden ist siehe folgende Klassendefinitionen oder die Beschreibung m Kapitel 2 8 2 pay_def php kunde_def php bestellung_def php gt artikel_def php gt kategorie_def php Diese Funktion besteht im wesentlichen aus vier Teilen Definition des URLs des externen Zahlungssystems Auf diese Adresse wird gesprungen wenn der Kunde die allgemeinen Gesch ftsbedin gungen akzeptiert Auspacken der ben tigten Variablen aus dem bergebenen Pay Objekt Abf llen der zu bergebenen Werte in ihre hidden Fields R ckgabewert auf true setzen Argumente Pay Objekt R ckgabewert true bei Erfolg sonst Abbruch mit der PHP Funktion die Aufruf Shop_Einstellungen_Menu_1 php SHOP ADMINISTRATION PhPepperS hop SHOP_ADMINISTRATION_AUFRUF php darstellen 1 SHOP_ADMINISTRATION_AUFRUF php darstellen 2 amp up_loe 1 SHOP_ADMINISTRATION_AUFRUF php darstellen 2 amp up_loe 0 Shop_Einstellungen_Menu_Kategorien php SHOP BESTELLUNG php SHOP_SETTINGS php SHOP_LAYOUT php SHOP_LAYOUT php darstellen 20 SHOP_LAYOUT php darstellen 30 SHOP_VERSANDKOSTEN php SHOP_BACKUP php index html USER_ADMIN_HILFE php Hilfe_ID Shop_Einstellungen_Menu_1 phpeppershop dokumentation sdw Seite 97 von 169 2001 R Glanzmann
130. en Rahe minm aber E but A man en Au matt aiii a ech akhire Back ku urce a ZK Gemeis F bon gtt WiBac i E Zmeriem Abimacnen Hiis JETZT EIN B CHUF ERSTELLEE a Eara ea Zb ae In den Einstellungen kann man den Umfang des Backup Sets und das Backup Intervall fest legen Optional l sst sich noch die ZIP Komprimierung aktivieren Die ZIP Komprimierung phpeppershop dokumentation sdw Seite 135 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 funktioniert allerdings nur wenn die ZLib Library eingebunden ist Da ein Shop 24h offen ist und 7 Tage n der Woche erreichbar ist empfehlen wir ein Backup Set von sieben Dateien anzulegen und das Backup Intervall auf 24 Stunden einzustellen Wenn es m glich ist die ZIP Komprimierung zu aktivieren sollte dies auch gemacht werden Wenn man von PHP und Automatisierung redet gibt es grunds tzlich ein Problem Man hat das Problem dass man ein programmiertes Ereignis nicht einfach nach Ablauf einer gewissen Frist aufrufen kann Wir bieten deshalb unter dem Men punkt Automatisierung drei ver schiedene Einstellungsm glichkeiten 1 Automatisiertes Backup aktivieren Hierbei wird der Datei index php ein Backup Aufruf eingef gt include von lt shopdir gt shop Admin ADMIN_backup php Diese Datei ber pr ft ob es Zeit ist ein weiteres Backup anzulegen und tut dies falls notwendig auch gleich Bei diesem Ansatz gibt es eine Sicherheitsl cke Es ist der einzige Ort im Shop
131. en aber im Detail abwei chen um neuen Problemen und Anforderungen gerecht zu werden Jede Version dieser Lizenz hat eine eindeutige Versions nummer Wenn in einem Programm angegeben wird dass es dieser Lizenz in einer bestimmten Versionsnummer oder jeder sp teren Version unterliegt so haben S e die Wahl entweder den Bestimmungen der genannten Version zu folgen oder denen jeder beliebigen sp teren Version die von der Free Software Foundation ver ffentlicht wurde Wenn das Programm keine Ver sionsnummer angibt k nnen Sie eine beliebige Version w hlen die je von der Free Software Foundation ver ffentlicht wurde 10 Wenn Sie den Wunsch haben Teile des Programms in anderen freien Programmen zu verwenden deren Bedingungen f r die Verbreitung anders sind schreiben Sie an den Autor um ihn um die Erlaubnis zu bitten F r Software die unter dem Copy right der Free Software Foundation steht schreiben Sie an die Free Software Foundation wir machen zu diesem Zweck gele gentlich Ausnahmen Unsere Entscheidung wird von den beiden Zielen geleitet wer den zum einen den freien Status aller von unserer freien Software abgeleiteten Werke zu erhalten und zum anderen das gemeinschaftliche Nutzen und Wiederverwenden von Software im Allgemeinen zu f rdern 11 Da das Programm ohne jegliche Kosten lizenziert wird besteht keinerlei Gew hrleistung f r das Programm soweit dies ge setzlich zul ssig ist Sofern nicht anderweitig schriftlich best t
132. en soll Da sich keine weiteren Unterkategorien in dieser Kategorie befinden ist diese Frage eigentlich berfl ssig Es wird nur ein Knopf hier einf gen angezeigt Diesen m ssen Sie dr cken um die neue Unterka tegorie zu erstellen Allgemeine Shopeinstellung In diesem Formular k nnen Sie die meisten Shopeinstellungen t tigen phpeppershop dokumentation sdw Seite 139 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 RI http 160 85 138 78 glanzret phpeppershop shop Admin SHOP_SETTINGS php Microsoft Internet Explorer Datei Bearbeiten Ansicht Favoriten Extras da ich st Gi A suchen Ggravorten Avelur ip Adresse e http 160 85 138 78 glanzret phpeppershop shop Admin SHOP_SETTINGS php D Wechseln zu SHOP ADMINISTRATION Allgemeine Shopeinstellungen Adressinformationen Shopbetreiber Shopname T t epperzbon Shopversion Oktober 2001 Version v 1 05 Adresse 1 Schartenstrassse 15 E Mail Adresse des Shops shop phpeppershop com Adresse 2 Postfach 1000 Telefonnummer 071 524 15 48 PLZundOr sso wil Faxnummer 071 524 15 49 Mehrwertsteuereinstellungen MwSt pflichtig KR MwStNummer 100100 MwSt Prozentsatz 7 6 Akzeptierte Zahlungsarten Vorauskasse k Konto Einzahlungen bitte auf unser Postkonto PC 40 168 Rechnung kW Nachnahme M Die Nachname Geb hr kann in den Versandkosten Einstellungen definiert werden Kreditk
133. en wird ein Backslash voran phpeppershop dokumentation sdw Seite 53 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 gestellt damit s e nicht interpretiert werden Die Funktion stripslashes macht die durch addslashes vorgenommenen Umwandlungen wieder r ckg ngig Der Vorgang wird brigens auch oft als escapen bezeichnet Werden Formulardaten bergeben bei denen sich eines oder mehrere der oben aufgelisteten Sonderzeichen im String befinden f gt der Browser automatisch Escape Zeichen en Eingabesting Funktion Ausgabestring string zum bertragen addslashes string zum bertragen string zum bertragen stripslashes string zum bertragen PHP Funktionen urlencode und urldecode Die beiden Funktionen urlencode und urldecode sind eigentlich dazu entwickelt worden Strings die direkt an de URL angeh ngt werden so umzuwandeln dass sie den Konventio nen f r den Aufbau einer URL gen gen Dies geschieht indem Zeichen welche nicht direkt in der URI bergeben werden k nnen hexadezimal codiert werden Dabei handelt es sich um die Zeichenfolge amp HH wobei HH f r den hexadezimalen ASCII Wert des speziellen Zeichens steht Leerschl ge werden durch ein H ersetzt Da URL encodierte Strings weder Sonderzeichen die escaped werden k nnten noch Leer schl ge beinhalten eignet sich diese Codierung hervorragend zur unkomplizierten Weiter gabe von Daten
134. enennung des Tags z B ShopTitel color gt wenn 1 true wird Farbauswahl angezeigt weight gt wenn 1 true wird Schriftgewicht angezeigt size gt wenn 1 true wird Schriftgr sse angezeigt style gt wenn 1 true wird Text Style angezeigt R ckgabewert HTML Tabelle mit oben genannten Formularelementen Formular Bezeichner bestehen aus der Variablen id und folgendem Text _c gt f r RGB Wert color _w gt f r Schriftgewicht width _s gt f r Schriftgr sse size _d gt f r Text Dekoration decoration _1 gt f r Text Stil style SHOP_LAYOUT php savefont Beschreibung DA Speichert die Fonteinstellungen eines Font Tags in der DB Das Tag wird um folgende Erweiterungen erg nzt in der CSS Tabelle gespeichert _c gt f r RGB Wert color _w gt f r Schriftgewicht width _s gt f r Schriftgr sse size _d gt f r Text Dekoration decoration Argumente Font tags font_tag c_wert w_wert s_wert d_wert i_wert R ckgabewert true bei Erfolg SHOP_LAYOUT php rgbshow Beschreibung DA Holt einen RGB CSS Wert aus der DB und gibt ihn als Teil eines HTML For mulars mit Eingabefeldern f r R G B aus Argumente rgb identifier R ckgabewert HTML Formularteil mit Eingabem glichkeit f r R G B SHOP_LAYOUT php getnocomma Beschreibung DA Holt einen CSS Wert aus der DB und entfernt allf ll g vorhandene Kommas Wird f r das Fontset ben ti
135. enso wird das LetzteBestellung Attribut erneuert Argumente Session_ID String Betrag Double R ckgabewert true bei Erfolg USER_BESTELLUNG php updBestellungsFelder Beschreibung DA Hier werden die zur Bestellung geh renden Daten eines Kunden zwischenge speichert Anmerkung Datum Bezahlungsart Kreditkartendaten Zusatzattri butel bis 4 und ihre Namen Argumente Session_ID String Damit man weiss zu welcher Bestellung die Daten geh ren werden Bestellungs Objekt enth lt die User Daten Def siehe bestellung_def php R ckgabewert true bei Erfolg USER_BESTELLUNG php getEmailMessage Beschreibung DA Da bei der Kreditkartenzahlung mit externer Zahlungsabwicklung der E Mail Message String verloren gehen w rde wird dieser tempor r n der jeweiligen Bestellung zwischengespeichert Diese Funktion liest den tempor r zwischen gespeicherten E Mail Message String aus und L SCHT den E Mail Message String in der entsprechenden Bestellung Argumente Session_ID String R ckgabewert String oder Abbruch per die Funktion USER_BESTELLUNG php putEmailMessage Beschreibung DA Da bei der Kreditkartenzahlung mit externer Zahlungsabwicklung der E Mail Message String verloren gehen w rde wird dieser tempor r in der jeweiligen Bestellung zwischengespeichert Mit dieser Funktion kann man den E Mail Message String tempor r der Bestellung des Kunden zuweisen Argumente Emailstring
136. ent_interface php Wir haben dort ziemlich detailliert aufgeschrieben wie man dieses Modul benutzt Das Payment Interface definiert ein Formular welches einem externen Zahlungssystem ber hidden Fields die ben tigten Daten zur Verf gung stellt In der Variable pay_here kann man angeben wo das externe Zahlungssystem de Daten bernimmt Das Modul wurde in zwei Teile gegliedert Im ersten Teil kann man seine Angaben machen URL u s w im zweiten Teil HTML Formular muss man nur etwas ndern wenn man wei tere Attribute bergeben will Wir bertragen per Default alle Kundenattribute und alles was phpeppershop dokumentation sdw Seite 126 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 die Bestellung hat Lediglich Artikeldetails werden nicht automatisch bertragen Wir glau ben deshalb dass es nicht so schnell n tig sein wird dieses Formular zu erweitern Falls dies trotzdem gebraucht wird kann man n der Datei payment_interface php nachlesen wie man vorgehen muss Die einzige Funktion im Modul payment_extern Pay mit einem Pay Objekt als Argu ment wird vom Shop aus aufgerufen Modul USER_BESTELLUNG_1 php darstellen 6 Sie stellt einen Formularteil zusammen welcher wie in einer Darstellen Funktion siehe Schich ten des PhPepperShops Kapitel 2 2 1 direkt als HTML zur ck geschrieben wird Ist die Zahlung abgeschlossen so soll vom externen Zahlungssystem auf die Seite Referrer zur ckgespru
137. eordnet werden phpeppershop dokumentation sdw Seite 117 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 e e e e Alte Version Kategorienzuordnung Neue Version Kategorienzuordnung A Shop Microsoft Internet Explorer BE lelx ei lelx Datei Bearbeiten Ansicht Eee ee 2 e Datei Bearbeiten Ansicht Favoriten Extras el Parid ze 0B Si Ee elt e E En zur ck gt O A A Auhen GFavorten ert ri aD Adresse http 160 85 138 78 fontajos shop Admin SHOP_ADMINISTRATION_AUFRUF phe Z Wechseln zu Links Adresse http 160 85 138 78 glanzret glashop2 shop Admin 5HOP_ADMINISTRATION_AUFRUF php x wechseln zu Links gt Letzte SHOP ADMINISTRATION Saeul SHOP ADMINISTRATION Den Artikel einerimehreren Kategoriefen zuordnen SCH Intel Name AMD Athlon Thunderbird 1000MHz Prozessoren M Beschreibung K hler mi Artikel Nr 1AMDyox Mainboards M AMD Link www AMD Com Prozessoren M K hler D Preis 329 Se mi Aktionspreis 299 9 Pl schtiere T Transmeta T Optionen VIA r Text 2 Jahre Garantie Bundle mit 128MB DDR SDRAM Weiter Abbrechen m Yariationen Text Aufpreis I EEE Fi Fertig ap Internet Fertig 1 Internet Als letzter Schritt kann f r einen Artikel noch ein Bild in die Datenbank gespeichert werden Der Shopadministrator hat di
138. er berschrieben Da es bei eingeschaltetem SafeMode nicht m glich ist neue Files im Filesystem zu erzeugen werden bei der Installation des Shops einige Dummy Dateien erstellt Bereits existierende Dateien k nnen auch bei eingeschaltetem SafeMode berschrieben werden Die akzeptierten Bildtypen zum Upload sind GIF JPEG und PNG Anhand der Dateiendung wird schon vor dem hochladen mittels JavaScript berpr ft ob es sich um einen akzeptierten Bildtyp handelt Da man im Layout Management w hlen kann ob ein Hintergrundbild und Shoplogo ver wendet werden soll muss nach erfolgreichem hochladen eines Bildes die Datenbank aktua lisiert werden Eine Aktualisierung der Datenbank zieht automatisch auch eine Neuerzeu gung des USS Files nach sich Buttons hochladen Nach dem gleichen Verfahren mit dem die Hintergrundbilder hochgeladen werden k nnen auch die Shopbuttons durch eigene ersetzt werden Die Buttons m ssen vom Typ GIF sein H tten wir auch andere Bildtypen zugelassen w re das eine ernsthafte Performancegefahr f r den Shop gewesen da der Typ jedes ausgegebenen Buttons in der Datenbank h tte er mittelt werden m ssen Es w ren dadurch eine Unmenge von SQL Abfragen entstanden die wir unbedingt vermeiden wollten phpeppershop dokumentation sdw Seite 113 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Screenshot des Layout Managements GER Datei Bearbeiten Ansicht Favoriten Extras
139. erden ber cksichtigt und entsprechend ausgewertet ausgegeben phpeppershop Gesch ftsbedingungen I Speichern Abbrechen Hilfe EE EE phpeppershop dokumentation sdw Seite 140 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 Adressinformationen Shopbetreiber F llen Sie in diesem Abschnitt Ihre Adresse ein Shopname Geben Sie in dieses Feld Ihren Shopnamen ein Dieser wird an ver schiedenen Stellen des Shops verwendet und erscheint auch auf der E Mail Bestellbest tigung f r den Kunden E Mail Adresse Die E Mail Adresse m ssen Sie unbedingt angeben An diese Adresse werden Ihnen die Bestellungen Ihrer Kunden gemailt Mehrwertsteuereinstellungen Falls Sie mehrwertsteuerpflichtig sind k nnen sie hier Ihre Mehrwertsteuerdaten eingeben Mwst pflichtig Hier k nnen Sie die MwSt Funktion ein ausschalten Ist die Mehrwertsteuerfunktion eingeschaltet wird auf der Bestellung eingeblendet dass d e Preise inklusive Mehrwertsteuer s nd Ist diese Funktion ausgeschaltet haben die folgenden zwei Felder keine Bedeutung MwSt Nummer Geben Sie hier Ihre MwSt Nummer Diese wird dem Kunden in seiner Bestellbest tigung mitgegeben MwSt Prozent satz Diese Angabe wird an den gleichen Orten ausgegeben wie die MwSt Nummer Sie hat auf die Berechnung der Preise keinen Ein fluss Akzeptierte Zahlungsarten In diesem Abschnitt k nnen Sie w hlen w
140. eren Muss man sich auf einen User beschr nken so werden der Administrator und der User Account gleichgesetzt Die Namen und Passw rter werden von regul ren Ausdr cken berpr ft Sie m ssen mindestens vier Zeichen lang sein maximal 32 und es d rfen keine White Spaces Leer schlag Tabulator vorkommen Das sind auch schon alle n tigen Eingaben Jetzt zeigt einem das Installations Script le diglich noch die Status Meldungen an und erkl rt laufend was es gerade macht Man wird gegen Ende der Installation noch gefragt ob die kreierte Datenbank nun auch ins MySQL Datenbank Management System eingef gt werden soll Auf diese Weise kann man den Shop neu installieren die schon bestehende Shop Datenbank aber weiterhin be nutzen Dies ist vor allem f r Updates des PhPepperShops wichtig Diese Methode funk tioniert aber nur solange bei einem k nftigen Update von PhPepperShop kein Daten bankupdate vorgenommen wird 3 1 3 Installationsmechanismus Hier gehen wir etwas detaillierter auf die Implementation der automatischen PhPepperShop Installation ein Die automatisierte Installation besteht aus folgenden drei Dateien templateshop config pl templateshop config_part4 sh templateshop template template_remove pl Die Datei config pl ist wie die Datei Endung schon impliziert ein Perl Script Dieses Script bestreitet den Hauptteil der Installation Das Shell Script config_part4 sh k m mert sich v a um die Erstellung von be
141. erte maximale Anzahl gleichzeitig angezeigter Artikel ein Aus wahlmen eingeblendet In diesem Men kann er zwischen den Resultat Intervallen hin und her springen Beispiel 1 2 3 4 Realisiert haben wir diese Funktion mit der LIMIT Angabe Leider wussten wir nicht dass LIMIT ein MySQL Spezifischer Befehl ist und nicht zum SQL 92 Standard geh rt Diese Funktion m sste also noch umprogrammi ert werden sobald man eine andere Datenbank als MySQL einsetzen will phpeppershop dokumentation sdw Seite 119 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Screenshot Hier sieht man ein Suchresultat mit aktivierter Bildanzeige einem Artikel welcher in zwei verschiedenen Kategorien eingeteilt ist und einer maximal gleichzeitig angezeigten Anzahl Artikel von zwei Shop Microsoft Internet Explorer Datei Bearbeiten Ansicht Favoriten Extras Zuw k gt A A suchen Gravorten Ave iD Adresse ja http 160 85 138 78 fontajos cvs bshop2 index php DI wechseln zu Links PhPepperShop Aireon a acsee Intel AMD m Softgetr nke n H a Pl schtiere Suchergebnis intel proz u Transmeta EVIA Dieser Artikel ist in mehreren Kategorien vorhanden Intel gt Prozessoren AMD gt Prozessoren Pentium Ill 500MHz Intel Prozessor Artikel anzeigen Pentium Ill 600MHz Intel Prozessor Artikel anzeigen DI 2 B A C Wien GE phpeppershop dokumentation sdw S
142. ese wer den dem Kunden zur Akzeptierung angezeigt bevor die Bestellung abgeschickt werden kann HTML Tags die sich im Text befinden werden interpretiert Sie k nnen zum Beispiel einen Teil des Textes Fett formatiert ausgeben Versandkosten Einstellungen In diesem Men punkt k nnen Sie sehr flexibel einstellen welche zus tzlichen Geb hren Ih ren Kunden verrechnet werden Sie haben drei M glichkeiten die Versandkosten zu berechnen 1 nach Preis Die H he der Versandkosten wird aus der Summe des Gesamtpreises aller Artikel die der Kunde im Warenkorb hat berechnet Es k nnen vier verschiedene Preis intervalle eingegeben werden f r die jeweils ein eigenst ndiger Versandkostenbetrag de finiert werden kann 2 nach Gewicht Die H he der Versandkosten wird aus der Summe des Gewichts aller Ar tikel die der Kunde im Warenkorb hat berechnet Es k nnen vier verschiedene Gewichts intervalle eingegeben werden f r die jeweils ein eigenst ndiger Versandkostenbetrag de finiert werden kann 3 nach Pauschale Der Kunde bezahlt immer den gleichen Betrag f r Porto und Verpa ckung egal was und wie viel er einkauft Bei der Versandkostenberechnung nach Gewicht und Preis k nnen Sie f r jedes Intervall be stimmen welche Bezahlungsm glichkeiten akzeptiert werden Zum Beispiel k nnen Sie die Bezahlung per Kreditkarte erst ab SFr 50 erlauben oder Bestellungen ab SFr 300 nicht mehr mit einer Rechnung ausliefern Die
143. f r die Systemsicherheit darstellen k nnten Weiter kann man ausf hrbare Dateien nur ausf hren wenn sie sich im save_mode_exec Verzeichnis befinden Dieses kann in der Datei php ini definiert werden Wir haben den SafeMode selbstverst ndlich eingeschaltet Damit ein Benutzer nicht eine Bestellung mit manipulierten Preisen aufgeben kann werden diese immer aus der Datenbank geholt und an das jeweils anfordernde Script bergeben 2 1 2 htaccess Der Administrations Teil wird weiter per htaccess gesch tzt Alle Administrations Scripte sind im Unterverzeichnis Admin abgelegt Wer einen anderen Server z B IIS einsetzt muss daf r sorgen dass das nur vom Administrator auf das Verzeichnis Admin zugegriffen werden kann 2 1 3 MySQL Um dieses Konzept auch auf der Datenbank Ebene fortzusetzen arbeitet der Shop grunds tz lich mit zwei Datenbank Benutzern Einerseits mit dem shopuser und um die Administra tor Scripte auszuf hren als shopadmin Dem shopuser wurden nur die n tigsten Rechte gew hrt Er kann den Grossteil der Datenbank nur lesen Bestellungen darf er updaten und l schen MySQL selbst wird auch nicht als root gestartet sondern mittels der Anweisung mysql bin safe_mysqld user mysql amp phpeppershop dokumentation sdw Seite 63 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Auf diese Weise wird MySQL von einem User gestartet welcher analog zum Apache User nur ber sehr eingeschr nk
144. fahrungen gesammelt Als es darum ging Unterka tegorien zu implementieren haben wir uns nach intensivem Gedankenaustausch daf r ent schieden die Unterkategorie Tiefe auf maximal eine zu beschr nken Dies vor allem weil in einem Shop im linken Frame die Darstellung der Auswahl Kategorien mit mehreren Ver schachtelungen ungewohnt aussieht und sch nicht intuitiv bedienen l sst wenn man immer nur einen offenen Kategoriebaum darstellen will aus bersicht Weiter w rde mit tieferen Verschachtelungen die ohnehin schon beschr nkte Namensl nge weiter eingeschr nkt wer den sichtbarer Bereich Die einfachste und zeitsparendste Implementationsmethode ist die Kategorientabelle um das Attribut Unterkategorie_von zu erweitern Dieser Designentscheid ist unkonventionell und aus Sicht der Datenbank nicht unbedingt optimal Die Datenbank bildet hier die logische Verkn pfung von Kategorie und ihren Unterkategorien nicht ab Um die logische Verkn p fung nachzubilden h tte man eine Tabelle Unterkategorien einf gen m ssen und diese mit einer 1 zu n Beziehung an die Kategorien Tabelle h ngen m ssen Wir haben uns hier f r den einfacheren Weg entschieden im Bewusstsein dass die Daten bank unser Datenmodell nicht genau nachbildet Wir k nnen dies folgendermassen begr n den Zeitersparnis e Mehrere Unterkategorie Ebenen sind bei Bedarf immer noch m glich indem man im Unterkategorie _Attribut eine weitere Unterkategorie angibt Man i
145. fe_ID R ckgabewert Hilfetext zur aktuellen Seite HTML String Funktionalit t SHOP_BACKUFP php SHOP_BACKUP f1 php ADMIN_backup php ADMIN_restore php index php Backup und Restore Untermen automatisiertes Datenbank Backup Restore Download eines Datenbank Backups Beschreibung DA Die Datenbank Backupl sung des PhPepperShops verteilt sich auf vier Dateien SHOP_BACKUP und SHOP_BACKUP f1 php stellen dem Benutzer ein Backup Untermen und eine Backup Konfigurationsmaske zur Verf gung Die eigentliche Backup Funkionalit t und die Restore Maske befinden sich in den Dateien ADMIN_backup php und ADMIN_restore php Wurde das Backup als periodisch konfiguriert wird die Datei index php ange passt Der String liegt in der Datenbank in der Tabelle css_file unter der ID backup phpeppershop dokumentation sdw Seite 96 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Datei Funktionsname payment_interface php payment_extern Beschreibung Diese Funktion liefert nicht im blichen Sinne mittels Return Wert einen R ckgabewert zur ck sondern gibt direkt mittels des echo Kommandos auf das Webdokument ein Formular aus Dieses Formular beinhaltet wie oben erw hnt DA hidden Fields welche die Daten zur Zahlung beinhalten Will man weitere Da 1 2 3 4 Datei ten an das externe Zahlungssystem senden kann man diese aus dem berge ben
146. fernt werden Gibt man eine Variable zum Beispiel in einem Hidden Feld dreimal weiter ohne jeweils die stripslashes bei jedem Schritt auszuf hren so wird jedem Sonderzeichen bei jeder Weiterleitung ein Backslash vo rangestellt wobei dieser bei der n chsten Weiterleitung auch wieder als Sonderzeichen be handelt wird Folgendes Beispiel verdeutlicht was passiert wenn stripslashes vergessen wird Orginalstring sonderzeichen string Einmal weitergegeben sonderzeichen string Zweimal weitergegeben sonderzeichen string Dreimal weitergegeben sonderzeicheniiiiiii SAUNA eer Ae SS Welche Daten sollen wie bergeben werden Erst in einer sp ten Phase der Programmierung haben wir angefangen die Formulare und deren Verarbeitung auf Herz und Nieren zu pr fen Wir mussten jedoch schnell feststellen phpeppershop dokumentation sdw Seite 52 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 dass zwar unsere logischen berlegungen stimmten es jedoch trotzdem m glich war mit ex tremen Eingaben ein Chaos zu veranstalten In folgender Tabelle haben wir zusammengefasst wie die Daten in den verschiedenen F llen Codiert Decodiert werden m ssen damit sie ordnungsgem ss ankommen Legende FORM FORM sichtbar FORM hidden Formularfeld kein Unterschied zwischen sichtbar und hidden sichtbares vom Surfer ver nderbares Formularfeld f r den Surfer weder sichtbares noch ver
147. getestete JavaScript Eingabe berpr fung text Button oder Link gedr ckt phpeppershop dokumentation sdw Seite 21 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Test des CRM s Customer Relationship Management JavaScript existierenden Benutzernamen mit korrektem Passwort eingegeben weiter existierenden Benutzernamen mit falschem Passwort eingegeben weder Benutzernamen noch Passwort eingegeben oder neuen Benutzernamen mit neuem Passwort eingegeben JavaScript JavaScript Passwort vergessen weiter weiter A JavaScript i eingegebener Benutzername existiert nicht zum Zahlungsablauf eingegebener Benutzername existiert und E Mail Adresse ist zum Kunden gespeichert I I I v phpeppershop dokumentation sdw Seite 22 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Test des Bestellungsablaufs l vom CRM l Vorauskasse Rechnung Kreditkartenhandling oder Nachnahme intern Kreditkartenhandling extern JavaScript AGB nicht akzeptiert Daten falsch AGB nicht akzeptiert weiter AGB akzeptiert zur ck JavaScript AGB nicht akzeptiert Bezahlung ok zur ck Bezahlung Bestellung absenden zum CRM gescheitert y l z r ck zum CRM l v phpeppershop dokumentation sdw
148. gt Argumente CSS Identifier R ckgabewert CSS String ohne Kommas phpeppershop dokumentation sdw Seite 86 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 SHOP_LAYOUT php Beschreibung DA rgbdechex Wandelt die dezimal in einem Array bergebenen Farbkomponenten OR CG Bim den f r das CSS File notwendigen Hex String um Argumente Farbkomponenten Array 0 R 0 255 1 G 0 255 2 B 0 255 R ckgabewert RGB Hex String im Format RRGGBB SHOP_LAYOUT php rgbhexdec Beschreibung DA Wandelt einen Hex String in der Form RRGGBB in die entsprechenden Farb komponenten R G B im Dezimalformat um und gibt diese in einem Array zu r ck Argumente HTML Hex String Format RRGGBB R ckgabewert Array mit den Farbkomponenten R G B im Dezimalformat 0 R 1 G 2 B phpeppershop dokumentation sdw Seite 87 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Datei Variable darstellen USER_ARTIKEL_ HANDLING_AUFRUF php 1 Beschreibung DA Alle Artikel einer Kategorie im Content Frame darstellen Wird das Arti kel Thumbnail angeklickt geht ein Pop Up Fenster auf worin das Arti kelbild in Originalgr sse angezeigt wird USER_ARTIKEL_ HANDLING_AUFRUF php 30 Beschreibung DA Artikel Suchen 1 2 Eingabefenster einblenden Eingabe von einem oder mehreren Suchstrings Bilder anzeigen Ja N
149. hop PhPepperShop J Fontani l R Glanzmann Umfeld Ziel dieser Diplomarbeit ist die Erweiterung des um einer Projektarbeit erstellten Framework f r einen Webshop in PHP Der Shop soll funktionell soweit fertiggestellt werden dass der praktische Einsatz m glich ist Dazu soll der Shop als Open Source Projekt publiziert werden und wenn m glich eine echte praktisch eingesetzte Installation erfolgen Die daraus gewonnenen Erfahrungen sol len umgesetzt werden Aufgaben Im Umfang der Diplomarbeit sind folgende Punkte zu erf llen Erstellen des WebShops gem ss Aufgabendetails e Erstellen der Dokumentation Design Entscheidungen s nd zu dokumentieren und zu begr nden Die Dokumentation hat zudem mindestens zu umfassen Architektur Komponenten und deren Funktionalit t sowie Workflow Projekttagebuch Zeitplanung Probleme Entscheidungen Erfahrungen e Ausblick Verbesserungsm sglichkeiten Lehren Die im Rahmen der Publizierung ver ffentlichten Dokumente sind Bestandteil der Doku mentation Aufgabendetails Es geht in dieser Arbeit darum den WebShop zu erg nzen mit e Custom Relationship Management CRM Layout Management mit CSS e Online Payment Implementation der wichtigsten Zusatzfunktionen gem ss Besprechung zu Beginn der Diplomarbeit e Fertigstellung des Administrationstools Zudem sollen Erfahrungen mit der Publikation eines Open Source Projekts auf SourceForge gesammelt und dokumentiert
150. hop Kunde k nnte den Preis nach seinem Gusto ver ndert bertra gen phpeppershop dokumentation sdw Seite 46 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Ist die Funktion das Modul Performance Wenn ein Datenbank Zugriff vermieden kritisch werden kann Nicht einfach ein ganzes Ob jekt ertragen sondern nur die wirklich be n tigten Attribute eines Objekts weiterrei chen Wenn sowieso auf die Datenbank zugegrif fen werden muss SQL Query optimieren Joins anstatt mehreren SELECTs SQL Zugriffe minimieren Datenmengen mini mieren nur die ben tigten Attribute aus der Datenbank auslesen Wenn ich kann sollte ich Mit nummerischen IDs arbeiten Sobald Buchstaben Benutzereingaben oder sogar Sonderzeichen bertragen werden m ssen wird die bertragung m hsam und fehler anf ll g siehe Kapitel 1 8 8 Andere Fehlermeldungen Wenn man Webprosramming mit PHP JavaScript und HTML betreibt so muss man sich dar ber im Klaren sein dass man nicht den Komfort einer integrierten Entwicklungsumge bung wie z B Microsoft Visual C erwarten darf Dies betrifft vor allem die Fehler R ck meldungen vom Programm zum Programmierer Wir hatten zu Beginn der Entwicklung zum Teil enorm M he die Programmier Fehler auf zusp ren einfach weil wir nicht wussten wo wir berhaupt R ckmeldungen erhalten Wir haben ein paar dieser Fehlerf lle zusammengestellt und dokumentiert wie
151. iber kann sie mit seinem privaten Schl ssel wieder entschl sseln Aufgrund der in den Erfahrungen erw hnten Problemen ist die E Mail Verschl sselung mittels GNU PG leider noch nicht implementiert worden phpeppershop dokumentation sdw Seite 64 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 1 6 Kunden ID Damit die Kunden identifiziert werden k nnen erh lt jeder eine Kunden_ID Diese wird ber gewisse Formulare hinweg als hidden Field bertragen Damit hier nicht ein Sicher heitsloch entsteht haben wir die Kunden ID nicht einfach als fortlaufende Integer Zahl im plementiert Sie besteht aus einer Ganzzahl welche folgendermassen zusammengesetzt ist 1 Mit dem PHP Zufallszahlengenerator rand erzeugen wir drei unabh ngige Zu fallszahlen aus dem Bereich von 1 bis RAND_MAX bei uns 2 147 483 647 2 Diese drei Zahlen werden als String aneinander gereiht und auf ihre Einmaligkeit unter den schon bestehenden Kunden_IDs hin berpr ft Es entsteht ein Zahlen raum von 111 bis 214 748 364 721 474 836 472 147 483 647 Die Kunden_ID in der Tabelle kunde hat einen eigenen Index und wird als varchar 255 gespeichert 3 Ist die Zahl einmalig so erh lt der Kunde diese Kunden ID Mit dieser Kunden ID wird es b swilligen Personen praktisch verunm glicht durch Raten von Kunden IDs an Kunden Informationen zu gelangen respektive unter deren Namen zu bestellen phpeppershop dokumentation sdw Seite
152. ich der Kunde schon eingeloggt Beschreibung hat ja gt direkt darstellen 11 aufrufen DA nein gt Login Screen ausgeben darstellen 1 Login Screen f r Kunde falls nicht zu darstellen 11 gesprungen wurde USER_BESTELLUNG_1 php Beschreibung weit Eingabeformular falls jemand sein Passwort vergessen hat USER_BESTELLUNG_1 php 10 Beschreibung Passwort einem User zuschicken DA USER_BESTELLUNG_1 php 11 Beschreibung Wee Eingabeformular f r Lieferadresse und Zahlungsart USER_BESTELLUNG_1 php 2 Update der Kunden und Bestellungsdaten Beschreibung Ausgabe der Bestellung zur Kontrolle f r den Kunden an den Browser Weiche f r Bezahlungsarten Je nachdem ob man entweder per Vo DA rauskasse Rechnung Nachnahme oder per Kreditkarte bezahlt und weiter noch je nachdem ob die Kreditkartenzahlung intern oder ex tern abgewickelt wird USER_BESTELLUNG_1 php 3 Beschreibung AGB Weiche bei Vorauskasse Rechnung und Nachnahme Zahlungen Allgemeine Gesch ftsbedingungen aus Datenbank auslesen und Dar stellen Die Bestellung wird erst abgesendet wenn der Shopbenutzer die DA AGB s akzeptiert hat danach geht es bei darstellen 4 weiter USER_BESTELLUNG_1 php 5 Beschreibung Kreditkarten Handling INTERN Kreditkartendaten Eingabemaske und Weiterleitung an darstellen 7 f r AGB Abfrage DA USER_BESTELLUNG_1 php 6 Kreditkartenhandling EXTERN Beschreibung Hier
153. ichen Seite Hierzu mehrere Problemstellungen und wie man sie l sen kann GUI Elemente Wie weiter Ich habe mehrere Kn pfe der Shopbenutzer Jeden Knopf IMG Tag in einen lt a wird je nachdem auf welchen Knopf er href gt Tag setzen Somit hat man mit dr ckt auf eine andere Seite gef hrt jedem Knopf einen eigenen Link erstellt welcher gegebenenfalls Variablen per GET weiterreichen kann 2kB Grenze bei GET nicht vergessen Textfelder und oder Radio Buttons und HTML Formular erstellen Man kann den oder Checkboxen und oder Pull Down Me Submit Knopf auch als Grafik darstellen mit n s Mit einem Knopf geht es weiter dem Tag lt input type image src gt Entwurf von neuen Komponenten f r den PhPepperShop Entwicklungszyklus W hrend der Diplomarbeit erweiterten wir das von der Praktischen Arbeite begonnene Fra mework f r einen Webshop in PHP kontinuierlich zum PhPepperShop Wir erg nzten den Shop komponentenweise um neue Funktionen Dabei ist uns bewusst geworden welche Elemente des PhPepperShops betroffen werden wenn man ihm eine neue Funktionalit t hinzuf gen will Wir haben heraus gefunden dass folgende berlegungen und Implementie rungsschritte nacheinander abgearbeitet werden m ssen damit man eine neue Funktion oder sogar Komponente effizient und fehlerlos einbauen kann 1 Sich fragen 1 Was brauche ich Use Cases helfen hier Datencontainer Klassen e Datenbankzugriffsfunkti
154. ie l schen 4 Unterkategorien neue Unterkategorie erstellen al Unterkategorie innerhalb Kategorie verschieben 6 Unterkategorie in eine andere Kategorie verschieben 7 Unterkategorie umbenennen 8 Unterkategorie l schen ES Kategorienmanagement Bildschirmansicht LEI Prozessoren EES REI ER ICH Intel Re Im Me SEN AMD Reg ea es ISCH Motorola Reg aa en EH Geh use Fr E we TT Catan ro mal Ma SEH Evercase Fo ea Een IE Monitore Ben EEE m eg Drucker ran a Ve In phpeppershop dokumentation sdw Seite 121 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 neue Kategorie erstellen 1 Kategoriename Wo soll die Kategorie einf gt werden hier einf gen Prozessoren hier einf gen Geh use hier einf gen Monitore hier einf gen Drucker hier einf gen abbrechen Kategorie verschieben 2 wohin soll die Kategorie Geh use verschoben werden Rrecher verschteben Prozessoren Arechereverschuceben Monitore hierher verschieben Drucker hrescher yversehveben abbrechen Kategorie umbenennen 3 Neuer Kategoriename f r die Kategorie Geh use ok abbrechen Kategorie l schen 4 Wenn S e die Kategorie l schen werden alle Unterkategorien die sich darin befinden gel scht Artikel die sich allenfalls noch in dieser Ka tegorie oder einer ihrer Unterkategorien befinden werden der Katego rie nicht zugeordnete Artikel zugewiesen wollen Sie die Kategorie Geh
155. igt stellen die Copyright Inhaber und oder Dritte das Programm so zur Verf gung wie es ist ohne irgendeine Gew hrleistung weder ausdr cklich noch implizit einschlie lich aber nicht be grenzt auf Marktreife oder Verwendbarkeit f r einen bestimmten Zweck Das volle Risiko bez glich Qualit t und Leistungsf higkeit des Programms liegt bei Ihnen Sollte sich das Programm als fehlerhaft herausstellen liegen die Kosten f r notwendigen Service Reparatur oder Korrektur bei Ihnen 12 In keinem Fall au er wenn durch geltendes Recht gefordert oder schriftlich zugesichert ist irgendein Copyright Inhaber oder irgendein Dritter der das Programm wie oben erlaubt modifiziert oder verbreitet hat Ihnen gegen ber f r irgendwelche Sch den haftbar einschlie lich jeglicher allgemeiner oder spezieller Sch den Sch den durch Seiteneffekte Nebenwirkungen oder Folgesch den die aus der Benutzung des Programms oder der Unbenutzbarkeit des Programms folgen einschlie lich aber nicht beschr nkt auf Datenverluste fehlerhafte Verarbeitung von Daten Verluste die von Ihnen oder anderen getragen werden m ssen oder dem Unverm gen des Programms mit irgendeinem anderen Programm zusammenzuarbeiten selbst wenn ein Copyright Inhaber oder Dritter ber die M glichkeit solcher Sch den unterrichtet worden war phpeppershop dokumentation sdw Seite 160 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 4 5 Det
156. ine Mes sage Policy eingef hrt haben Eine neue Datei ins Repository einf gen Add Commit Um eine neue Datei ins CVS Repository aufzunehmen muss man zuerst einen Checkout des Repositories lokal vorhanden haben Darin plaziert man zuerst lokal die neue Datei am rich tigen Ort im Verzeichnisbaum programmiert vielleicht schon die Funktionalit t hinein und gibt dann folgende Kommandos ein cvs add kb Dateiname cvs commit m Message Mit der Message kann man wiederum analog zum Update eine beschreibende Nachricht mit geben Die Option kb gibt CVS an dass es sich um eine bin re Datei handelt Man muss bin re Dateien z B Word Dateien als solche kennzeichnen weil CVS nicht bin re Da teien liest und gegebenenfalls gewisse Tags ersetzt Webzugriff auf das Repository Diff Um Unterschiede zwischen Versionen von Dateien begutachten zu k nnen haben wir uns entschieden das von SourceForge bereitgestellte ViewCVS einzusetzen Dieser Service er laubt es neben weiteren Funktionen das CVS Repository ber das Web anzusehen ber http cvs sourceforge net cgi bin viewevs cgi Projektname oder auch ber die Projekt ber sichtspage kommt man darauf Hier kann man bequem zwischen den Versionen der einzel phpeppershop dokumentation sdw Seite 39 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 nen Dateien hin und her wechseln sie miteinander vergleichen ihre Anzeige nach bestimm ten
157. inen m glichst dynamischen Shop also einen Shop mit vielen Freiheiten und grossem Einsatzgebiet erhalten haben wir uns schon in der Praktischen Arbeit f r ein etwas komplexeres Design entschieden Weiter war es eine Grundidee dass man den Shop komplett in der Datenbank hat Dies ist vom Backup her ein Vorteil einfach Backup der Datenbank anfertigen fertig und vom Zu griff her dachten wir auch Leider haben wir uns vor dem Design wenig mit BLOBs in Da tenbanken besch ftigt Es erwies sich sp ter als hinderlich wenn man BinaryLargeObjects in der gleichen Tabelle hat wie weitere Daten Es ist uns bewusst dass man saubererweise die Bilder der Artikel in einer gesonderten Tabelle h tte ablegen m ssen Wir trugen dieser Er kenntnis Rechnung und haben alle weiteren Bilder Layout Management im Dateisystem abgelegt Das urspr ngliche Datenbankdesign wurde um einige Tabellen und viele Attribute erg nzt Zum Beispiel haben wir aufgrund des CRMs die Kundendaten aus der Bestellung ausgeglie dert und ihnen eine eigene Tabelle kunde gegeben Bei dieser Gelegenheit haben wir auch den Kundendatensatz berarbeitet und ihm weitere Attribute gegeben Postfach Wir ha ben versucht alle m glichen Adressdaten zu ber cksichtigen Dank der neuen dynamischen Kundenattribut Verwaltung kann man jetzt auch flexibel ausw hlen mit welchen Kunden attributen man arbeiten will 2 4 2 Personalisierung durch das Installationstool config pl Damit
158. ingesetzte Software SuSE Linux 7 1 Kernel 2 4 0 4GB i686 Apache Version 1 3 20 Unix LAMPS Installation MySQL Version 3 23 35 DH DA Version 4 0 6 phpMyAdmin Version 2 2 0 Einzige Linux Distribution die zu Projektbe ginn schon den Kernel 2 4 0 beinhaltete In SuSE Linux Distribution enthalten gen send aktuell Die zu Projektbeginn aktuellste MySQL Da tenbank Version aus dem Internet Diese damals aktuellste Version von PHP4 war gl cklicherweise schon in der SuSE Dis tr bution enthalten Datenbank Administrationstool mit Webin terface Dieses Programm brauchten wir um SQL Queries auszutesten und nderungen in der Datenbank manuell vorzunehmen 4 2 2 Auf den Arbeitsstationen eingesetzte Software Windows 2000 Professionell SP1 Apache f r Windows Version 1 3 19 DH DA Version 4 04pl1 PHPed Version 2 96 1 2 CUTE FTP Version 4 2 3 Build 2 14 1 Putty Version 0 5 1 Komfortable Entwicklungsoberfl che Zu Testzwecken eingerichtet Zu Testzwecken eingerichtet Sehr n tzlicher PHP Editor mit integriertem FTP Tool welches direktes Arbeiten auf dem Server erm glicht Leider noch etwas Beta FTP Client Telnet SSH Client phpeppershop dokumentation sdw Seite 152 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 4 3 Projekttagebuch Das Projekttagebuch wurde direkt w hrend der Diplomarbeit jeweils am Ende jedes Arbeits tages weitergef hrt
159. ings Die Shop Settings Tabelle beinhaltet die allgemeinen Shopeinstellungen Dies sind inzwi schen ganze 40 Attribute welche auf einer Zeile gespeichert werden Wir haben uns in der Praktischen Arbeit gedacht dass man pro Shop eine Zeile in dieser Tabelle hat und auf diese phpeppershop dokumentation sdw Seite 58 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Weise bequem mehrere Shops in dieser Tabelle verwalten kann Heute wissen wir dass das so nicht funktioniert Die parallel laufenden Shops haben alle eine eigene Datenbank Die Shop Settings Tabelle wird zunehmend zu einem Problem weil die eine Zeile viel zu lang ist Unser Dozent hat uns darauf hingewiesen dass z B die Datenbank Sybase und auch andere Datenbanken eher restriktiv sind was ihre maximale Zeilenl nge anbelangt In n chster Zukunft m sste man also diese Tabelle umstrukturieren zum Beispiel so e Attr butname varchar 256 e Attr butwert varchar 256 Dies bedingt aber auch ein Anpassen vieler Funktionen und wurde deshalb auf die Zeit nach der Diplomarbeit verschoben Es handelt s ch hier um reine Fleissarbeit ohne weiteren Lern effekt phpeppershop dokumentation sdw Seite 59 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 9 Zukunft des PhPepperShops Da wir nicht wussten wie lange wir den Testserver der Schule noch zur Verf gung haben registrierten wir die Domain phpeppershop com Diese Domain i
160. ist also immer 0 Das lteste Backup be einem Backup Set von 5 w re also A sql gz Es wird immer zuerst umbenannt und danach das neue Backup 0 sql gz erzeugt phpMyBackup Die Grundlage unserer automatisierten Backupl sung stammt aus dem Programm phpMy Backup von Holger Mauermann mauermann nm service de Er hat dieses v elverspre chende PHP Script f r den Backup und Restore einer MySQL Datenbank geschrieben Wir haben als Grundlage phpMyBackup in der Version 0 4 Beta benutzt Das Script kann unter http www nm service de phpmybackup gefunden werden Wir m chten Holger an dieser Stelle nochmals recht herzlich f r die Erlaubnis sein Programm benutzen zu d rfen danken phpeppershop dokumentation sdw Seite 136 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 3 2 2 Restore eines Datenbank Backups Wenn man im Backup Men auf Restore klickt kann ein Datenbank Backup angesehen oder zur ck gelesen werden Mit view download kann man die SQL Datei ansehen Achtung Wenn viele Bilder in der Datenbank sind so werden diese mit bertragen 3 2 3 Backup der Shopdateien und Shopbilder von Hand Hinweis W rter in dreieckigen Klammern stellen Bezeichner dar Man muss bei folgenden Befehlen die Bezeichner durch entsprechende Angaben ersetzen Beispiel lt shopname gt Bilder gt pizzashop Bilder Als Teil des Layout Managements kann man alle f r den Shopbenutzer sichtbaren Buttons und die Hintergr
161. jedes Frame Fensterteil ein eigenes Hintergrundbild hochladen Wenn Sie auf den Durchsuchen bzw Browse Button klicken ffnet sich ein Fenster mit dem Sie eine Grafikdatei im Format GIF JPG oder PNG auf Ihrer Festplatte ausw hlen k nnen Danach m ssen Sie den Verwendungszweck f r das ausgew hlte Bild bestimmen Es kann entweder als Hintergrundbild f r eines der drei Frames verwendet oder als Shoplogo hoch geladen werden Sobald Sie ein Hintergrundbild oder ein Shoplogo hochgeladen haben ist es aktiviert Sollten Sie den Shop danach immer noch im alten Erscheinungsbild sehen liegt das nur daran dass die alte Version noch in ihrem Browsercache gespeichert ist Shopbuttons Kn pfe hochladen Sie k nnen jeden im Shop verwendeten Button durch einen eigenen Ihrer Wahl ersetzen Die einzige Bedingung ist dass der Button im GIF Format erkennbar an der Dateiendung ef abgespeichert wurde W hlen Sie wie in Bilder Hintergrund amp Shoplogo hochladen beschrieben eine Datei auf Ihrerer Festplatte aus W hlen Sie dann welcher Button damit ersetzt werden soll Durch einen Klick auf Bild hochladen wird der neue Button in den Shop hochgeladen 3 Layoutmanagement Microsoft Internet Explorer EI x Datei Bearbeiten Ansicht Favoriten Extras s Zw ck gt Q A A suchen GaFavorten Ave G 3 A zl A Adresse amp http 160 85 138 78 glanzret phpeppershop shop dmin SHOP_LAYOUT php darstellen 30 SHOP
162. jeweils aktivierte Berechnungsmethode ist durch einen vorangestellten Pfeil zu erkennen V llig unabh ngig von den Versandkosteneinstellungen k nnen Sie zus tzlich einen Rech nungsbtrag festlegen bei dessen berschreitung keine Versandkosten mehr berechnet wer den Bei Unterschreiten eines gewissen Totalbetrags besteht die M glichkeit d esem einen Min dermengenzuschlag hinzuzuf gen H he und Betrag sind frei w hlbar Letzer Einstellungspunkt in diesem Men ist die H he einer eventuell anfallenden Nach nahmegeb hr Diese kann nur eingegeben werden wenn Sie die Bezahlungsart Nachnahme aktiviert haben phpeppershop dokumentation sdw Seite 143 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 e versandkostenmanagement Microsoft Internet Explorer ljelx Datei Bearbeiten Ansicht Favoriten Extras s Zu ck gt Q A A suchen Ggravorten Ave Zb 3 2 zl A Adresse http 160 85 138 78 glanzretiphpeppershopf shopfAdmin SHOP_VERS ANDKOSTEN php ei Wechseln zu Links SHOP ADMINISTRATION Versandkosten Einstellungen PhPepperShop Ma T Hummer 100700 MwSt Satz 7 6 Angezeigter Rechnungsposten im Warenkorb Versand und Verpackungskosten Aktive Berechnung Ab Betrag Vorauskasse Rechnung Nachname Kreditkarten qmm ER 5 5 SFr EN EN EN E Nach Preis so SFr Dn SFr v M v M Nach Gewicht 100 Fr M 8 M v Nach Pauschale SE L
163. kategorie it ii Intel Ss astelen ni S Prozessoren innerhalb Kategorie in andere Kategorie erkategorie Prozessoren verschieben hiebi umbenennen K hler innerhal egorie in andere Kategorie K hler Mainboards verschieben eh Mainboards innerhalb Kategorie in andere Kategorie erkategorie orie AMD verschieben verschieben ki KS Prozessoren AMD neue ee K hler P innerhalb Kategorie in andere Kategorie erkategorie orie Sorgenanke Prozessoren erst hieben verschieben p l sche Pl schtiere K hler Transmeta VIA a neue Unterkategorie Kategorie Kategorie Kategorie Softgetr nke erstellen hieb umbenennen l schen Pl Fl neue Unterkategorie Kategorie Kategorie Kategorie Pl schtiere erstelen _ versch hieben umbenennen l schen Zur ck Hilfe neue Unterkategorie Kategorie Kategorie Kategorie Transmeta erstellen verschieben umbenennen l schen VIA neue Unterkategorie Kategorie Kategorie Kategorie erstellen __ versch hieben umbenennen l schen ei Internet ei je Internet JavaScript bietet gl cklicherweise die M glichkeit Bilder auf einer ausgegebenen HTML Seite dynamisch zu ersetzen Wir entschieden uns dann zuerst f r eine sehr dynamische L sung Sobald man mit er Maus auf eine Kategorie f hrt sollen gleich neben der Kategorie die Auswahlm glichkeiten eingeblendet werden Diese Idee scheiterte leider an der langsamen JavaScript Engine der Netscape und Mozilla Browser Durch eine
164. kleine Ab nderung des JavaScripts von onMouseOver Aktion ausf hren wenn die Maus ber ein Objekt f hrt auf onMouseClick Aktion ausf hren wenn man mit der Maus auf ein Objekt klickt entstand dann das schlussendlich verwendete mit allen Browsern bedienbare Men Wird ein Kategorie bzw Unterkategoriename angeklickt wer den rechts davon die f r diese Kategorie verf gbaren Auswahlm glichkeiten eingeblendet Diese bleiben solange stehen bis eine andere Kategorie angeklickt wird Leider kann mit Netscape 4 7x die Gr sse eines einmal ausgegebenen Bildes nicht mehr dy namisch ver ndert werden Aus diesem Grund ist eine Browserweiche implementiert die f r Netscape Browser jeden Button schon bei der Ausgabe des HTML Dokuments in der vollen Gr sse transparent ausgibt Da sich dadurch der Abstand der Kategorienamen erh ht wird Netscape 4 7 Benutzern folgender H nweis ausgegeben Dieser Shopadministrationsmodus ist nicht f r Browser der Generation Netscape A optimiert Es sind alle Funktionen verf gbar Die Darstellung ist jedoch nicht optimal phpeppershop dokumentation sdw Seite 124 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 8 Zahlungsm glichkeiten 2 8 1 Vorauskasse Rechnung Nachnahme und kostenlos Bei vielen kleineren Shops kommen teure Mailorder Vertr ge nicht in Frage F r sie sind die blichen Zahlungsmethoden w e Vorauskasse Rechnung und Nachnahme die erste Wahl Mehrere Le
165. konnten wir leider bis jetzt n cht l sen Da die Ausf hrung von GNU PG per Shell funktioniert w re es vielleicht ein L sungsansatz den GNU PG Aufruf in ein Shell Script zu kopieren und dieses dann per PHP auszuf hren Wir werden uns sicher nach Abgabe der Diplomarbeit an Werner Koch den Programmierer von GNU PG wenden und versuchen abzukl ren ob das Problem an GNU PG oder beim Gate Mode liegt Das letzte Problem welches wir mit dem Safe Mode hatten war dass ein Shell Aufruf von PHP aus keine Pipe enthalten durfte Aufrufe im Stil von echo hallo welt irgend_ein_programm wurden nur bis zum Pipezeichen interpretiert was beim obigen Beispiel eine Ausgabe von hallo welt an den Browser zur Folge hatte PHP bietet jedoch auch f r dieses Problem Abhilfe mit den Funktionen popen erstellt eine Pipe pclose schliesst eine Pipe fputs schreibt auf eine Pipe und fgets liest von einer Pipe Abschliessend kann zu PHP gesagt werden dass es sicher die Richtige Scriptsprache f r Webanwendungen ist Wie allgemein bekannt ist hat jedoch auch hier Sicherheit ihren Preis 1 8 6 GNU PG Da f r einen kleineren Webshop die Kreditkartenabrechnung per Mailorder Vertrag unserer Meinung nach die lukrativste ist und diese Zahlungsart neu mit Visa und Eurocard Master card Karten abgewickelt werden kann entschlossen wir uns einen Versuch mit GNU PG zur Verschl sselung der Bestellungs E Mails mit dem PGP Verfahren zu starten Wie berei
166. ktionalit ten auf Wir teilten sie in Gruppen unterschiedlicher Dringlichkeit und Wichtigkeit ein Ausserdem ordneten wir die T tigkeiten verschiedenen T tigkeitsgruppen zu Des weiteren nahmen wir f r jeden zu erledigenden Punkt eine grobe Aufwandabsch tzung vor Aufgrund dieser ermittelten Daten wollten wir eine erste detail lierte Zeitplanung erstellen Die Zeitaufwandsumme der dringend zu erledigenden Arbeiten berstieg jedoch schon fast den gesamten Zeitraum den wir zur Programmierung zur Verf gung hatten Da es unser allerh chstes Ziel war den Shop nach Ende der Diplomarbeit funktionsf hig der ffentlichkeit zu bergeben und wir keine Abstriche in der Funktionalit t machen konnten erstellten wir eine beraus ehrgeizige Zeitplanung Wir entschieden uns absolut strikt und ohne Ausnahme nach der Priorit tenliste vorzugehen und Versuche sowie Exkurse weitge hendst zu unterlassen Da wir unseren Shop auf dem CVS Server von SourceForge entwi ckelten hatten wir fast t glich wieder Commits hochladen von aktualisierten oder neu er stellten Softwareteilen auf den CVS Server und Checkouts herunterladen der aktuellen Version des Programms Schnell merkten wir jedoch dass die nahezu t gliche Neuinstalla tion des Shops viel Zeit auffrass So entschlossen wir uns kurzfristig ein Installations und Deinstallationstool zu erstellen was r ckblickend gesehen eine sehr lohnende Entscheidung war da wir uns dadurch viel Installationsaufw
167. ld Funktion werden keine root Rechte mehr ben tigt SHOP_LAYOUT php 30 Beschreibung Gibt ein Formular aus in welchem man per Browse Button eine Bild Datei auf der Festplatte ausw hlen kann mit welcher man einen Shopbutton ersetzen kann DA SHOP_LAYOUT php 31 Beschreibung Dies ist die Folgeseite von darstellen 30 Analysiert wird der Dateiname des hochgeladenen Files Handelt es sich um eine Datei vom Typ gif so wird der gew hlte Button ersetzt gespeichert Die Analyse erfolgt in JavaScript DA SHOP_LAYOUT php ungleich 10 20 21 30 31 Beschreibung Gibt die Eingabemaske f r die Layout Settings als Formular aus mit den mo DA mentan eingestellten Werten aus der Datenbank eingef llt Datei darstellen SHOP_SETTINGS php 10 Beschreibung DA Weiche um zu unterscheiden ob das Formular abgeschickt wurde Speichern Button Shop Settings aufbereiten und abspeichern SHOP_SETTINGS php ungleich 10 Beschreibung DA Formular zum Editieren der Shop Settings Datei darstellen SHOP_VERSANDKOSTEN php 10 Beschreibung Hier werden die Versandkostensettings gespeichert Funktion setver DA sandkostensettings und es wird eine Erfolgsmeldung ausgegeben phpeppershop dokumentation sdw Seite 94 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 SHOP_VERSANDKOSTEN php ungleich 10 Beschreibung DA
168. lgende kleine JavaScript Funktion wird dazu ben tigt lt script language JavaScript gt f net1on zweitframes u r71ll 121 url22 T2 4 parent frames fl location href urll parent frames f2 locat on href url2 lt scriptr gt Funktionsargumente RSC url URL des Dokuments welches aufgerufen werden soll el Nummer des zu aktual sierenden Frames phpeppershop dokumentation sdw Seite 55 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Topframe 0 Left melt Ma n Framel2 Die Funktion zweiframes wird direkt im Link folgendermassen aufgerufen lt a href javascript zweiframes url11 1 url2 2 gt Link bexe lt a gt berpr fung eines Formularfeldes auf Eingabe Um im Shop einkaufen zu k nnen muss nun fortw hrend im Browser JavaScript einge schaltet sein Diesen Umstand nutzten wir gleich dazu auch noch die Eingabe berpr fung der Formulardaten per JavaScript zu t tigen JavaScript hat im Gegensatz zu PHP den Vor teil dass die berpr fungsfunktion gleich mit dem Formular selbst zum Browser gesendet werden kann Die berpr fung ob alle Felder ordnungsgem ss ausgef llt wurden geschieht demzufolge beim Surfer Client seitig und erfordert weder zus tzlichen Datenverkehr noch Rechenpower vom Server Gibt ein Surfer zum Beispiel die Daten f nfmal nicht ordnungs gem ss ein wird dadurch kein einziges Byte zum Server gesendet Macht ma
169. lle immer wieder praktisch f r wie ging das jetzt schon wieder Momente Leider auch schon etwas in die Jahre gekommen Dieses Buch ist unbrauchbar zumindest wenn man HTML schon kennt und den Netscape Javascript Debugger nicht erkl rt braucht Wir konnten dieses Buch sehr gut als Nach schlagewerk gebrauchen da es eine umfas sende und logisch aufgebaute JavaScript Be fehlsreferenz beinhaltet Wir k nnen es nur weiter empfehlen das Preis Leistungsverh ltnis stimmt Eine wirklich gelungene Einf hrung in Ja vaScript Vermittelt die Grundlagen von Ja vaScript in nur 20 Minuten Selfhtml ist und bleibt das beste Nachschla gewerk in Sachen HTML Sogar f r Java Script konnten wir einige Informationen von dieser Adresse gebrauchen Sehr zu empfeh len Dies ist ein guter Einstieg und trotzdem eine sehr umfangreiche Page Wir haben vor allem das Kapitel 2 Grundlegende Elemente der Sprache verwendet Eine nette Einf hrung Auf nur 20 Seiten hat man so ziemlich alle Sprachelemente die man zu Beginn braucht aufgelistet phpeppershop dokumentation sdw Seite 151 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 Regul re Ausdr cke in Perl http www oreilly de catalog regexger chap ter kap 2d html http www heise de ix artikel 1998 11 178 01 shtml 4 2 Software Versionen Details zur Muster Erkennung mit Regul ren Ausdr cken mit Perl 4 2 1 Auf dem Server e
170. mber 2001 Wir h tten uns viele Probleme ersparen k nnen wenn wir auf die Kompatibilit t zum Nets cape 4 7x Browser verzichtet h tten Da jedoch ein nicht vernachl ssigbarer Teil der Surfer noch Browser dieser Generation einsetzt entschlossen wir uns den Shop auch f r diese Browsergeneration brauchbar zu machen Die Probleme begannen damit dass Netscape 4 7 eine Stylesheet Datei die sich nicht im gleichen Verzeichnis wie das Webdokument befand schlichtweg nicht interpretierte Diesem Problem entgegneten wir indem wir die Stylesheet Datei in jedes Verzeichnis kopierten in dem sich Webdokumente befanden Die n chste Schwachstelle von Netscape 4 7x ist dass Stylesheets nicht ordnungsgem ss vererbt werden Wenn wir also f r eine Tabelle eine Schriftart definierten mussten wir diese Stylesheet An gabe f r das Spalten und Zeilen Tag zus tzlich nochmals definieren berladen Ausserdem musste beim Verwenden von USS Klassen z B body class body main body left im HTML Dokument bei jedem Tag noch explizit de Klasse angegeben werden m sste auch vom Body Tag geerbt werden Das gr sste Problem bestand jedoch bei der Interpretation der Stylesheet Angaben f r Links lt a gt Tag Diese wertet der Browser berhaupt nicht aus Die einzige L sung die wir hierf r fanden war die Stylesheet Angaben im HTML Dokument mittels style direkt n das Link Tag zu schreiben Da CSS Stylesheets ausserordentlich n tzlich sind um
171. mente Session_ID String damit man weiss welcher Bestellung der Artikel zuzuordnen ist Artikel_info Objekt enth lt alle f r die Bestellung relevanten Felder eines Artikels inkl Anzahl u s w R ckgabewert true bei Erfolg USER_BESTELLUNG php del_B_Artikel Beschreibung DA L scht einen Artikel Eintrag f r eine Bestellung Komische Namensgebung weil es delArtikel schon gibt Argumente Artikel_ID INT und Bestellungs_ID INT um die betroffenen Artikel eindeutig zu bestimmen R ckgabewert true bei Erfolg USER_BESTELLUNG php delSession Beschreibung DA L scht eine Session und damit auch die Bestellung Es werden drei Schritte ab gearbeitet 1 Bestellung l schen 2 Artikelliste der Bestellung l schen 3 Kunde Bestellung Referenz l schen Tabelle bestellung_kunde Argumente Session_ID String wird ben tigt um die Bestellung in der Ta belle bestellung zu referenzieren Bestellungs_ID INT wird ben tigt damit man OHNE eine weitere Query zu starten auch alle zur gel schten Bestellung geh renden Artikel in der artikel_bestellung Tabelle l schen kann R ckgabewert true bei Erfolg sonst Abbruch per die Funktion USER_BESTELLUNG php delallexpiredSessions phpeppershop dokumentation sdw Seite 73 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul PHP Funktionen Userseitiges Bestellungswesen Beschreibung
172. miteinbe ziehen Lagerverwaltung Bestand eingeben bei Verkauf dekrementieren gt Minder mengen Alarm Verf gbarkeit des Artikels angeben und ev Lieferterminangaben Dynamisches Page Layout auch Header und Footer Unterkategorien z B 300 Kategorien und mehr Produkte CRM personalisierte Artikelliste eigenes Login autom ausgef llte Adresse weiter pers nlicher Ansprechspartner konfigurieren k nnen Rechnung Liefer schein drucken k nnen Bestellungsfortschritt abrufbar versendet Shop muss mit root Rechten laufen m hsam wegen Bild Upload Developer Mailing Liste CVS Server Gleicher Artikel mit verschiedenen Variationen Optionen k nnen nicht kumu liert werden Optionen Variationen als Pop Up Men implementieren ev nur optional Weitere Tipps aus den E Mails Wir sollten Webmastern den Shop empfehlen Marketing Artikel in der c t oder hnlichen Magazinen anstreben phpeppershop dokumentation sdw Seite 8 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 e Wir sollten das Problem der Secure Online Transactions genau anschauen P Fitzpatrick 1 4 2 Auflistung aller erhaltenen Feedbacks Wir haben folgende Liste mit m glichen Arbeiten aus allem erhaltenen Feedback zusam mengestellt und im Rahmen der Zeitplanung Kapitel 1 6 einer Priorisierung und Zeitauf wandsch tzung unterzogen Arbeitsvorschl ge Shopname suchen
173. mmer m glich daf r in die jeweilige Teilarbeit auch mehrere berlegungen einfliessen zu lassen Wir mussten zum Bei spiel das Problem l sen dass mehrere PhPepperShops gleichzeitig in einem DBMS laufen k nnen Weiter sollte d e Installation besser dokumentiert werden den 1 Datenbank User Betrieb implementiert und die M glichkeit geschaffen werden mit schon bestehenden Da tenbank User arbeiten zu k nnen Wir haben alle diese Einzelprobleme zusammen gefasst und eine automatisierte Installation erstellt Auf diese Weise sind alle Probleme elegant ge l st und dem Shopadministrator wird viel m hsame fehlertr chtige Arbeit abgenommen Welche Arbeiten schliesslich ausgew hlt wurden sieht man im Kapitel 1 6 Zeitplanung Dort ist auch ersichtlich wie wir den Aufwand der einzelnen Arbeiten eingesch tzt haben phpeppershop dokumentation sdw Seite 11 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 5 Wahl der verwendeten Technologien Ein Framework f r einen Webshop l sst sich grunds tzlich auf viele Arten realisieren In den folgenden Abs tzen wollen wir begr nden wieso wir uns f r die Kombination PHP4 als Apa che Modul und MySQL als Datenbank entschieden haben Ein vielf ltiger Webshop sollte ein hohes Mass an Dynamik bieten sowohl vom Workflow her als auch innerhalb der HTML Seite Weiter sollte er seine Daten wenn m glich aus einer zentralen Datenbank beziehen k nnen Damit hat man auch alle
174. n 7 Sollten Ihnen infolge eines Gerichtsurteils des Vorwurfs einer Patentverlet zung oder aus einem anderen Grunde nicht auf Patentfragen begrenzt Be Copyright und Lizenzhinweise 9 Bedingungen durch Gerichtsbeschluss Vergleich oder anderweitig auferlegt werden die den Bedingungen dieser Lizenz widersprechen so befreien Sie diese Umst nde nicht von den Bestimmun gen dieser Lizenz Wenn es Ihnen nicht m glich ist das Programm unter gleichzeitiger Beachtung der Bedingungen in dieser Li zenz und Ihrer anderweitigen Verpflichtungen zu verbreiten dann d rfen Sie als Folge das Programm berhaupt nicht verbrei ten Wenn zum Beispiel ein Patent nicht die geb hrenfreie Weiterverbreitung des Programms durch diejenigen erlaubt die das Programm direkt oder indirekt von Ihnen erhalten haben dann besteht der einzige Weg sowohl das Patentrecht als auch diese Lizenz zu befolgen darin ganz auf die Verbreitung des Programms zu verzichten Sollte sich ein Teil dieses Paragraphen als un g ltig oder unter bestimmten Umst nden nicht durchsetzbar erweisen so soll dieser Paragraph seinem Sin ne ach angewandt werden im brigen soll dieser Paragraph als Ganzes gelten Zweck dieses Paragraphen ist nicht Sie dazu zu bringen irgend welche Patente oder andere Eigentumsanspr che zu verletzen oder die G ltigkeit solcher Anspr che zu bestreiten dieser Para graph hat einzig den Zweck die Integrit t des Verbreitungssystems der freien Software zu sch tzen
175. n nicht an Die Daten des entsprechenden Feldes werden in diesem Fall zur Bestellung anstatt zum Kunden gespeichert phpeppershop dokumentation sdw Seite 144 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 eis Datei Bearbeiten Ansicht Favoriten Extras EI seZu ck gt 2 A A suchen GaFavorten Heu G 3 A a A Adresse e http 160 85 138 78 glanzret phpeppershop shop Admin SHOP_KUNDE php DI Wechseln zu Links SHOP ADMINISTRATION Kundenattribute bearbeiten Sie k nnen hier konfigurieren welche Felder Ihren Kunden bei der Bestellung zum Ausf llen angezeigt werden und welche davon eine Eingabe erfordern Weiter haben Sie die M glichkeit bis zu vier selbst definierte Felder zu verwenden z B f r gew nschtes Lieferdatum Kundennummer Ausserdem k nnen Sie w hlen welche Adressinformationen Ihrer Kunden dauerhaft in der Datenbank gespeichert werden Diese werden dann automatisch ins Adressformular eingef gt wenn ein Kunde sich mit seinem Benutzernamen und Passwort anmeldet Feldbezeichnung verwenden pr fen speichern Anrede Iw Vorname IV IV Nachname IV V Firma Iw Abteilung Iw M Strasse v W Postfach IW SE v W Ort v v Land Iw E Tel IV IT Fax IW E E Mail EN VW Bemerkungen Iw E Geburtsdatum VW VW VW Lieferdatum v Zusatzteld 3 8 8 Zusatzfeld 4 8 Speichern Abbrechen E JM Internet Lay
176. n tigten Softlinks Zur Deinstallation des jeweiligen PhPepperShops ben tigt man ein an den jeweiligen Shop angepasstes Perl Script welches aus dem template_remove pl erstellt wird Dieses Script wird nach der Personalisierung m erstellten Shop unter remove pl abgelegt Damit mehrere Shops auf einem DBMS installiert werden k nnen wird jeder PhPepperShop aus einem Template Shop erzeugt und in einem Verzeichnis gleich dem Shop Namen abge speichert Nat rlich erh lt jeder Shop seine eigene Datenbank Auf diese Weise kann man mehrere Shops bersichtlich verwalten Wir haben bei der Implementierung des Installationstools auch gleich noch folgende Probleme gel st Ein User Betrieb schon bestehende r User und schon bestehende Datenbank W h phpeppershop dokumentation sdw Seite 133 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 rend der Installation kann man entscheiden welche Konfiguration man f r seinen Shop verwenden m chte 3 1 4 Erste Konfigurationen Zuerst muss man das Admin Verzeichnis lt shopdir gt shop Admin per htaccess sch tzen Sonst hat jeder der den Link kennt Zugriff auf den Administrationsteil des Shops Wie man hier genau vorgeht ist von Installation zu Installation verschieden und kann nicht allgemein beantwortet werden Ausserdem ist es Sache des Providers Wir haben unsere Erkenntnisse n Form einer kleinen Anleitung auf der PhPepperShop Homepage www phpeppershop com
177. n Ausnahmen korrekt interpretierten und darstellten Die Definitionen in der Stylesheet Datei wurden ordnungsgem ss ausgewertet Der Mozilla Browser besitzt je doch eine wesentlich langsamere JavaScript Engine was uns beim Kategorienmanagement zwang anstatt Mouse Over Mouse Click Ereignisse f r die Aktualisierung des Men s zu verwenden Die JavaScript Aktivit t reduzierte sich dadurch wesentlich wodurch auch mit Mozilla eine akzeptable Geschwindigkeit erreicht wurde Ein weiterer Unterschied herrscht zwischen den Browsern Mozilla und Internet Explorer bei der bergabe von Funktionsargumenten an eine JavaScript Funktion Die JavaScript Engine vom Internet Explorer betrachtet die Werte wie wenn sie mit Escape Sequenzen codiert w ren und entfernt diese selbst ndig Da der Mozilla dies nicht macht resultiert aus dem bergebenen Wert ein v llig anderes Resultat falls im String ein oder mehrere Backslashes enthalten sind Als Abhilfe f r dieses Problem bleibt entweder die M glichkeit auf Sonder zeichen zu verzichten oder d e Funktionsargumente mit der PHP Funktion urlencode zu encodieren urlencode ersetzt alle Zeichen durch die Zeichenfolge HH wobei HH den Hexcode des betreffenden Zeichens im ASCII Zeichensatz darstellt So codierte Funktions argumente m ssen in der JavaScript Funktion dann nat rlich wieder decodiert werden phpeppershop dokumentation sdw Seite 42 von 169 2001 R Glanzmann amp J Fontanil ZW 15 Nove
178. n des Programms zusammen mit dem Programm eine Kopie dieser Li zenz zukommen lassen Sie d rfen f r den eigentlichen Kopiervorgang eine Geb hr verlangen Wenn Sie es w nschen d rfen S e auch gegen Entgelt eine Garantie f r das Programm anbieten 2 Sie d rfen Ihre Kopien des Programms oder eines Teils davon ver ndern wodurch ein auf dem Programm basierendes Werk entsteht Sie d rfen derartige Bearbeitungen unter den Bestimmungen von Paragraph 1 vervielf ltigen und verbreiten voraus gesetzt dass zus tzlich alle folgenden Bedingungen er f llt werden a Sie m ssen die ver nderten Dateien mit einem auff lligen Vermerk versehen der auf die von Ihnen vorgenommene Modifi zierung und das Datum jeder nderung hinweist b Sie m ssen daf r sorgen dass jede von Ihnen verbreitete oder ver ffentlichte Arbeit die ganz oder teilweise von dem Pro gramm oder Teilen davon abgeleitet ist Dritten gegen ber als Ganzes unter den Bedingungen dieser Lizenz ohne Lizenzgeb h ren zur Verf gung gestellt wird c Wenn das ver nderte Programm normalerweise bei der Ausf hrung inter aktiv Kommandos einliest m ssen Sie daf r sor gen dass es wenn es auf dem blichsten Wege f r solche interaktive Nutzung gestartet wird eine Meldung ausgibt oder aus druckt die einen geeigneten Copyright Vermerk enth lt sowie einen Hinweis dass es keine Gew hrleistung gibt oder an de renfalls dass Sie Garantie leisten und dass die Benutzer das Progr
179. n diese Kon trolle mittels PHP m ssen neun f nf Fehlermeldungs und vier Formular HTML Seiten vom Server zum Client geschickt werden was einem massiven Mehraufwand an Ressourcen entspricht Folgendes Beispiel illustriert die minimalste Art der Eingabe berpr fung Es wird nur ber pr ft ob der Surfer etwas in das Formularfeld eingegeben hat lt script language JavaScript gt EE reet chkFormul rl berpr fung ob kein Leerstring bergeben wurde if document Formular Vorname value Alert Warnung ausgeben wenn ein Leerstring bergeben wurde alert Bitte einen Vornamen eingeben den Fokus auf das Feld Vorname setzen document Formular Vorname focus false zur ckgegeben damit das Formular nicht abge schickt wird return false lt ScripEt gt lt form name Formular onSubmit return chkFormular method post action index php gt lt br gt lt b gt Geben Sie Ihren Vornamen ein lt b gt lt input type text name Vorname size 40 gt lt input type submit name weiter value weiter gt phpeppershop dokumentation sdw Seite 56 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 SC Torm gt Hat man viele Felder zum berpr fen in einem Formular lohnt es sich die berpr fung der Felder in einer for Schleife durchzuf hren da sonst eine nicht vernachl ssigbare Menge an JavaScript Code bermittelt werden muss Unsere Mei
180. n genannten Technologien an und verbindet diese mit ihren Vorteilen PHP bietet die von ASP bekannte einfache Kombination mit HTML die leis tungsstarke und weit verbreitete C Syntax die vielen schon von JAVA und JavaScript her bekannt ist PHP besticht ausserdem durch einen fast schon grandiosen Funktionsumfang Hier kann keine andere Sprache mithalten Das sieht man vor allem bei der Datenbank Un terst tzung d e uns auch sehr wichtig war Die Entscheidung welchen Webserver wir verwenden sollten war einfach zu treffen Apache st der heute im Internet am meisten eingesetzte Webserver zuverl ssig Open Source und f r die wichtigsten Plattformen verf gbar Er hat auch grosse Zukunftsaussichten Wir woll ten den Einsatz des Shops aber nicht grunds tzlich an eine Webserver Technologie binden Es braucht nur minimalste nderungen um den Shop auf einem anderen Webserver laufen zu lassen Passwortschutz f r Administration und Pfade bei Wechsel von UNIX zur Windows Plattform Be der Datenbank konnten wir eine gute Idee unseres Dozenten und Diplomarbeitbetreuers Herr Feisthammel umsetzen Unser Webshop wickelt alle Datenbankzugriffe zentral ber einen Datenbank Wrapper ab Das heisst der Shop Betreiber kann w hlen welche Daten bank er benutzen wull Dies ist sicher von Vorteil wenn in einem bestehenden Unternehmen schon eine Datenbank vorhanden ist Der Shop ist momentan zu 100 auf MySQL einsetzbar und getestet Die Programmierung der
181. nderbares Formularfeld PHP PHP Var able DB Datenbank was wird bertragen Von Nach Codier Decodier Mass nahmen a z A Z 0 9 FORM PHP keine a z A Z 0 9 FORM DB keine a z A Z 0 9 PHP DB keine a z A Z 0 9 PHP FORM sichtbar keine a z A Z 0 9 PHP FORM hidden keine a z A Z 0 9 DB PHP keine Alle Zeichen inkl Sonderzeichen FORM sichtbar PHP stripslashes Alle Zeichen inkl Sonderzeichen FORM hidden PHP l urldecode 2 addslashes Alle Zeichen inkl Sonderzeichen FORM sichtbar DB keine Alle Zeichen inkl Sonderzeichen FORM hidden DB 1 urldecode 2 addslashes Alle Zeichen inkl Sonderzeichen PHP DB addslashes Alle Zeichen inkl Sonderzeichen PHP FORM sichtbar htmlspecialchars Alle Zeichen inkl Sonderzeichen PHP FORM hidden urlencode Alle Zeichen inkl Sonderzeichen DB PHP keine Der Weg vom Formular zur Datenbank geht eigentlich ber eine PHP Var able Da aber die Daten vom Formular her schon mit vorangestellten Backslashes kommen kann das strips lashes addslashes Prozedere entfallen weil die Daten sowieso mit vorangestellten Back slashes an die Datenbank bergeben werden m ssen PHP Funktionen addslashes und stripslashes Mit der Funktion addslashes werden Sonderzeichen behandelt die oft von Datenbanken interpretiert werden N NUL NUL steht dabei f r den absoluten Wert 0 Diesen Sonderzeich
182. ndert wurde Man kann sich zu jeder Zeit von jedem Ort die aktuelle und jede vorangegangene Version jeder Datei im Repository ansehen Das CVS Repository ist eine Datenbank in welcher alle Daten abgelegt werden Durch CVS k nnen mehrerer Entwickler zur gleichen Zeit an der gleichen Datei arbeiten und ihre nderungen zusammenf hren Wenn zwei nderungen sich gegen seitig beeinflussen werden diese Entwickler darauf hingewiesen und es wird sichergestellt dass der Konflikt behoben wird bevor die neue Version der Datei im Repository aufgenom men wird CVS Entwicklungszyklus Im Wesentlichen besteht der Entwicklungszyklus aus folgenden drei Schritten 1 Man importiert den initialen Sourcecode ins Repository Anschliessend checkt jeder Ent wickler eine Arbeitskopie aus dem Entwicklungsbaum aus 2 Nun arbeitet jeder Entwickler in seiner gewohnten Umgebung am Programm Sobald ein neues Feature fertig ist aktualisiert man zun chst die lokale Kopie um auf dem laufen den zu sein und schreibt die ver nderten Dateien zur ck n den Entwicklungsbaum Siehe dazu auch Update Policy weiter unten 3 Sollten beim Zur ckschreiben der Ver nderungen irgendwelche Konflikte auftreten wird man darauf hingewiesen und muss anschliessend manuell entsprechende nderungen vornehmen In den Dateien werden die ver nderten Bereiche mit gt gt gt gt gt hervorgehoben und beide Versionen angezeigt Hier l scht man entweder einfach die alte Version ode
183. ndex htm Starten Wir k nnen nun den Apache Webserver starten indem wir folgende Anweisung eingeben usr local apache current bin apachectl start Wenn SSL korrekt installiert wurde wird man an dieser Stelle angehalten seine Passphrase einzugeben Danach startet der Apache Webserver Mit einem Webbrowser zur Not auch per lynx kann man nun schauen ob der Webserver auch l uft phpeppershop dokumentation sdw Seite 30 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 8 2 Einrichten eines Passwort gesch tzten Bereichs mit htaccess Diese Anleitung soll lediglich das Prinzip wie man ein Verzeichnis mittels htaccess sch tzt erkl ren Sie kann nicht als detaillierte Installationsanleitung verwendet werden da sich die notwendigen Schritte je nach eingesetztem Webserver und Hostingprovider unterscheiden Alle Pfadangaben beziehen sich explizit auf unseren Testserver und m ssen durch eigene er setzt werden Das Prinzip des Verzeichnisschutzes per htaccess besteht aus vier Schritten 1 Im Webserver Konfigurationsfile typisch httpd conf muss eingestellt werden dass die Konfigurationsanweisungen in htaccess Dateien beachtet werden sollen Dies geschieht mittels des AllowOverride Eintrags auf das gew nschte Verzeichnis des Benutzers lt Directory home fontajos htdocs gt AllowOverride All 7 Directory gt Directory gibt das Verzeichnis an im welchem die Konfigurationsdatei beachtet werden
184. ngefan gen beim Session Management bei welchem nach Bestellungsabschluss eines Kunden alle nicht abgeschlossenen abgelaufenen Sessions gel scht werden Hier muss schon berpr ft werden ob auch alle abgeschlossenen Bestellungen von tempor ren Kunden gel scht werden Weiter muss der Shopadministrator das Bestellungsmanagement ein oder ausschalten k n nen Es gibt sicher viele kleinere Shops bei welchen der Shopadministrator die ganze Bestel lungsverwaltung ber die E Mails abwickelt Da wir auch Manipulationen erlauben wollen l schen mutieren muss die referentielle In tegr t t von Kunde und Bestellung logisch implementiert werden denn die Datenbank kann nicht zwei verschiedene Abh ngigkeiten mit nur zwei Tabellen nachbilden Wir haben das auf der Funktionsebene gel st indem wir Funktionen zur Kundenbearbeitung weitere Funktio nen zur Bestellungsbearbeitung und wieder andere zum Ver ndern von Beziehungen zwi schen Kunde und Bestellung erstellt haben Funktional ist das Bestellungsmanagement fertig ausprogrammiert Einzig die HTML Mas ken zum Bearbeiten der Bestellungen erlauben momentan nur die gleichzeitige Darstellung einer Bestelllung mit ihrem Kundendatensatz Bestellungen k nnen bis jetzt nur aufgrund ihrer Referenznummer angezeigt werden Dies ist f r den Fall gedacht wenn ein Shopbenut zer nach get tigter Bestellung nderungen w nscht Was sicher n chstens implementiert wird ist die Suche nach Kundennamen und
185. ngegeben werden Mit folgendem Aufruf kann der Passwortdatei noch ein weiterer Benutzer zugef gt oder das Passwort eines schon enthaltenen Benutzers ge ndert werden phpeppershop dokumentation sdw Seite 31 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 verzeichnis_von_htpasswd htpasswd htpasswd Benutzername 4 Schlussendlich muss der Webserver noch dazu bewogen werden die Konfigurationsfiles neu einzulesen Entweder man killt die Prozesse des Webservers killall HUP httpd oder startet den Webserver neu apachectl restart phpeppershop dokumentation sdw Seite 32 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 8 3 SourceForge einrichten Einleitung In den folgenden Kapiteln beschreiben wir chronologisch unsere Erfahrungen wie wir unser Projekt auf SourceForge eingerichtet haben welche H rden wir nehmen mussten und auf was man achten muss wenn man selber ein Projekt auf SourceForge einrichten will Wir wollen diesen Erfahrungsbericht als n sich geschlossenes Dokument ver ffentlichen sodass auch andere Leute davon profitieren k nnen SourceForge bietet Open Source Projekten eine kostenlose sehr umfangreiche und interna tional ausgerichtete Entwicklungsumgebung an Geboten wird unter anderem ein CVS Repo s tory Mailinglisten eine Homepage Newsgroups und vieles mehr SourceForge einrichten Eigener Account Um ein Open Source Projekt berhaupt erst
186. ngen werden Im Flag Erfolg kann man mit 1 Erfolg und mit 0 keinen Erfolg der externen Zahlung signalisieren Im Fehlerfall kann man dem PhPepperShop in der Va riable SErrormessage einen String mit einem genaueren Fehlerbeschrieb mitgeben Das Testmodul pay_ext_test php Wenn man den Shop neu installiert und eine Bestellung mit einer Kreditkarte mit externem Handling t t gt so wird vom payment_interface php standardm ssig die Emulat on einer externen Zahlungsstelle pay_ext_test php aufgerufen Sie zeigt alle bergebenen Va riablen an und man kann zwischen Erfolg und Misserfolg der Zahlung w hlen Man kann hier optional eine Errormessage mitgeben Dieses Modul dient als Test falls jemand diese Schnittstelle erweitern m chte Hier ein Screenshot nachdem man den AGB akzeptiert hat E ireak par j lie ze eg ik EE b SE ef ali Gere Jett preie em E Tea gt 93 i eer Bee Ais da BEA f kiea HCL RA Sem sieh fern gie a pu r D i k RE sagen hier n amt rela phpeppershop dokumentation sdw Seite 127 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 9 Bestellungsmanagement Unter einem Bestellungsmanagement verstanden wir die M glichkeit offene Bestellungen abzurufen Bestellungen zu l schen und Kundenadressen Lieferadressen zu mutieren ei gentlich eine Verwaltung von offenen Bestellungen Wir mussten uns schon fr h Gedanken ber das Bestellungsmanagement machen a
187. nn heraus dass man auf eine Datei die schon existiert und volle Lese und Schreibrechte f r jedermann besitzt auch bei eingeschaltetem Safemode schreiben kann Da sich die Anzahl der zum Shop geh renden Dateien nicht ver ndert erstellten wir Dummy Fi les f r alles was man per Layoutmanagement und Artikelmanagement hochladen kann Ein kleines Beispiel Das Hintergrundbild des Hauptframes ist nach der Installation des Shops n der Datei bg_main gif gespeichert Trotzdem ist schon ein entsprechendes Pendent im JPG Format vorhanden bg_main jpg L dt der Shopadministrator nun ein Hintergrundbild vom Typ JPG hoch so wird das bereits existierende bg_main jpg zum berschreiben ge ff net Auf diese Weise k nnen trotz eingeschaltetem Safe Mode Dateien hochgeladen werden Den zweiten Konflikt mit dem Safe Mode hatten wir als wir zur Verschl sselung des Best tigungs E Mails mittels Execute Kommando das Programm GNU PG aufrufen wollten Der phpeppershop dokumentation sdw Seite 43 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Safe Mode verweigerte konsequent die Ausf hrung von Programmen per PHP Wir fanden dann heraus dass man in der PHP Konfigurationsdatei php ini ein Verzeichnis angeben kann safe_mode_exec_dir in dem sich die Programme befinden die von PHP ausgef hrt werden d rfen Dies klappte dann mit anderen Programmen auch GNU PG konnte jedoch die Keyringe nicht richtig einlesen Dieses Problem
188. nt Referenz_Nr INT R ckgabewert Eine Bestellung als Bestellungs Objekt SHOP_ADMINISTRATION php getBestellung_Kunde Beschreibung DA Gibt auf Grund eines Kundennamens die dazugeh rende n Bestellung en zur ck Argument Name und Vorname des Kunden Strings R ckgabewert Ein Array von Bestellung en als Bestellungs Objekt e Definition siehe bestellung_def php SHOP_ADMINISTRATION php getBestellung_Alle phpeppershop dokumentation sdw Seite 84 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Beschreibung Gibt alle als abgeschlossen markierten Bestellungen in einem Array zu r ck Argumente keine DA R ckgabewert Ein Array von Bestellungen als Bestellungs Objekte SHOP_ADMINISTRATION php delBestellung Beschreibung Diese Funktion l scht eine abgeschlossene Bestellung unwiderruflich Na t rlich werden auch all ihre Referenzen in der Tabelle artikel_bestellung gel scht Als dritter Teil werden noch alle Referenzen zum Kunden der DA Bestellung gel scht Argumente Bestellungs_ID INT R ckgabewert true bei Erfolg SHOP_ADMINISTRATION php setKreditkarten Beschreibung Diese Funktion schreibt alle Kreditkartendaten in die kreditkarten Ta belle Speichern der Kreditkarten Institute und ihrer Optionen Vorgehen Vorandene Daten l schen neue Daten speichern Kategorie_ID inkrementiert DA Argumente Herstellerarray Array of String benut
189. nt w hrend Diplomarbeit mussten wir die Funktionen schliessenBestellung delallexpiredSessions delSession erweitern Da wir jetzt auch noch eine Kunden und eine Kunden Referenz Tabelle haben muss beim L schen einer Bestellung auch ein tempor rer Kunde gel scht werden siehe auch Kapitel 2 11 CRM phpeppershop dokumentation sdw Seite 100 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 I 2222222222 222 Session_Management Ueberpruefen ob eine Session_ID uebergeben wurde sonst eine Neue erzeugen if empty mySession_ID session_name mySession_ID if session_register mySession_ID die lt HTML gt lt BODY gt lt P gt lt Hl gt USER_BESTELLUNG_AUFRUF php ACHTUNG session_regis ter false konnte keine Session_ID zuteilen lt Hl gt lt P gt lt BR gt lt BR gt lt BODY gt lt HTML gt else session_id mySession_ID phpeppershop dokumentation sdw Seite 101 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 4 Datenbank Das Datenbankdesign ist eine sehr zentrale Komponente bei der Entwicklung eines Web Shop Frameworks Dementsprechend investierten wir viel Zeit und Energie in die fortlau fende Entwicklung dieses Designs Security Aspekte zum Datenbankdesign wurden schon im Kapitel 2 1 behandelt Wir konnten auf einem guten Fundament aus der Praktischen Arbeit aufbauen 2 4 1 Idee und Konzept Damit wir e
190. ntweder ein Update des Artikels oder das L schen des Artikels eingeleitet Beim L schen wird die Funktion delArtikel Artikel_ID aufgerufen beim Bearbeiten eines Artikels wird updArtikel Artikel_ID benutzt SHOP_ADMINISTRATION_ AUFRUF php 6 Beschreibung DA Eine neue Kategorie erstellen 1 2 Eingabe von Namen und der Positi ons Nr der neuen Haupt Kategorie Beschreibung und Bilddaten blie ben bei dieser Shop Version noch aussen vor SHOP_ADMINISTRATION_ AUFRUF php Beschreibung DA Eine neue Kategorie erstellen 2 2 Speichern der neuen Haupt Kate gorie SHOP_ADMINISTRATION_ AUFRUF php 61 Beschreibung DA SHOP_ADMINISTRATION_ AUFRUF php Eine neue Unterkategorie erstellen Schritt 1 2 Eingabe der Unterkate gorledaten ON Beschreibung DA Eine neue Unterkategorie erstellen 2 2 Speichern der neuen Unterka tegorie SHOP_ADMINISTRATION_ AUFRUF php 20 Beschreibung DA Eine Kategorie auf eine andere Position verschieben 1 2 Auswahl der neuen Position SHOP_ADMINISTRATION_ AUFRUF php 21 Beschreibung DA Eine Kategorie auf eine andere Position verschieben 2 2 Speichern der neuen Position SHOP_ADMINISTRATION_ AUFRUF php Beschreibung DA Eine Unterkategorie an eine andere Position innerhalb der gleichen Ka tegorie verschieben 1 2 Auswahl der neuen Position SHOP_ADMINISTRATION_ AUFRUF php 26 Beschreibung D
191. nung zu JavaScript Wir haben das Programmierprinzip von JavaScript als sehr angenehm empfunden Dank der konsequenten Objektorientiertheit dieser Scriptsprache war es problemlos m glich an alle gew nschten Webelemente zu kommen Dies bewog uns dann dazu JavaScript auch im Hauptmen des Kategorienmanagements zu verwenden Leider machte uns hier der Netscape 4 7 Browser wieder einmal einen Strich durch die Rechnung da er ein schon ausgegebenes Bild nicht durch ein anderes ersetzen kann wenn es nicht die exakt gleichen Dimensionen besitzt Wir bauten eine Browserweiche ein und gaben fortan Netscape 4 7 Browsern ein eigenes Menu aus Was wir bei der Entwicklung von JavaScript Funktionen als usserst st rend empfanden war dass man vom Browser nur mit usserst sp rlichen Informationen versorgt wird wenn ein Problem mit einer JavaScript Funktion vorliegt Es st vorgekommen dass mitten in der Funktion die Ausf hrung ohne Fehlermeldung oder Warnung abgebrochen wurde Etwa zwei Wochen vor dem Ende der Diplomarbeit ist dann Mozilla 0 9 5 freigegeben worden Dieser Browser enth lt eine sehr n tzliche JavaScript Konsole und sogar einen JavaScript Debug ger Leider mussten wir bis zu diesem Zeitpunkt ohne ein solch komfortables Tool auskom men phpeppershop dokumentation sdw Seite 57 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 8 10 Datenbankdesign Unterkategorien Auch im Datenbankdesign haben wir Er
192. nz ausdr cklich gestattet ist Jeder anderweitige Versuch der Vervielf ltigung Modifizierung Weiterlizenzierung und Ver breitung ist nichtig und beendet automatisch Ihre Rechte unter dieser Lizenz Jedoch werden die Lizenzen Dritter die von Ih nen Kopien oder Rechte unter dieser Lizenz erhalten haben nicht beendet solange diese die Lizenz voll anerkennen und befol gen 5 Sie sind nicht verpflichtet diese Lizenz anzunehmen da Sie sie nicht unter zeichnet haben Jedoch gibt Ihnen nichts anderes die Erlaubnis das Programm oder von ihm abgeleitete Werke zu ver ndern oder zu verbreiten Diese Handlungen sind gesetz lich verboten wenn Sie diese Lizenz nicht anerkennen Indem Sie das Programm oder ein darauf basierendes Werk ver ndern oder verbreiten erkl ren Sie Ihr Einverst ndnis mit dieser Lizenz und mit allen ihren Bedingungen bez glich der Vervielf lti gung Verbreitung und Ver nderung des Programms oder eines darauf basierenden Werkes 6 Jedesmal wenn Sie das Programm oder ein auf dem Programm basierendes Werk weitergeben erh lt der Empf nger auto matisch vom urspr nglichen Lizenzgeber die Lizenz das Programm entsprechend den hier festgelegten Bestimmungen zu ver vielf ltigen zu verbreiten und zu ver ndern Sie d rfen keine weiteren Einschr nkungen der Durchsetzung der hierin zugestan denen Rechte des Empf ngers vornehmen Sie sind nicht daf r verantwortlich die Einhaltung dieser Lizenz durch Dritte durch zusetze
193. oder nur sehr langsam erreichbar gt viel war ten provisorische Website http www phpeppershop com erstellt e kleines Logo kreiert e Mailinglisten auf SourceForge erstellt devel users announce und Test phpeppershop dokumentation sdw Seite 153 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Newsforum auf SourceForge eingerichtet und Test Homepage phpeppershop sourceforge net gt automatischer redirect auf www phpepper shop com Mo 17 September 01 phpeppershop com bei folgenden Suchmaschinen eingetragen google com altavista com yahoo de search ch Bericht Webshop Framework im Internet Professionell 10 2001 S 41 Einarbeitung in Perl Softlinks per Shell Skript erstellen Script f r Erstellung der Datenbank und Connection Skripts 1 oder 2 User User erstellen oder schon erstellt Shopname Passw rter User Admin Zeitplanung erstellt Einteilungen der Arbeiten nach Klassen 10 000 Hits auf der Webpage vom Webshop Framework erreicht Di 18 September 01 Information f r Leser der Zeitschrift Internet Professionell auf Webserver ver ffentlicht e Verbindung zum Internet die meiste Zeit nicht m glich e Konzept Darstellung von Unterkategorien im linken Frame erstellt e Kategorienmanagement Bedienkonzept entwickelt e Fertigstellung Perl Shell Installationsscript config pl config_part4 sh Mi 19 September 01 Kurze Einarbeit
194. ohne Probleme klappen Weiter muss noch eine Lizenz gew hlt werden GPL oder LGPL d rften wohl die am meisten verwendeten Lizenzen sein und es muss eine kleine Beschreibung angegeben werden Die Public Description kann nur 255 Zel chen lang sein und wird bei Suchresultaten zu Projekten mit angezeigt Zu guter letzt muss man noch einen Unix Namen des Projekts angeben die beschriebenen Restriktionen beach ten Jetzt braucht man ein bisschen Geduld Unser Projekt wurde innerhalb von 12 Stunden ak zeptiert und von SourceForge eingerichtet das kann aber zuweilen auch bis zu 24 Std dau ern Wenn man sich nun wieder einloggst findet man unten rechts sein Projekt Das neue Projekt einrichten Nach einem Klick auf das Projekt befindet man sich auf der Projekt bersichtsseite Von hier phpeppershop dokumentation sdw Seite 33 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 aus komplettiert man zuerst einmal die Projekt Konfiguration Man hab eine reiche Auswahl an angebotenen Dienstleistungen welche alle konfiguriert und eingerichtet werden wollen bersicht des Projekts Summary herblick Homepage Fonn Tracker Bugs Suppart Fatches Mailinglisten Aufgaben Dobkumentaboo Heuisketen CYS Fiesso Sbacgt Team Papp Anfangen sollte man beim Admin Teil Im Misc Project Information Fenster sieht man in welchem Verzeichnis sich was befindet Bei uns sah die Verzeichnisstruktu
195. ollten eine Kopie der GNU Gene ral Public License zusammen mit diesem Programm erhalten haben Falls nicht schreiben Sie an die Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139 USA 4 4 1 Deutsche Fassung der GPL Auszug bersetzt von Katja Lachmann bersetzungen nal194 fim uni erlangen de modifiziert von Peter Gerwinski peter gerwin ski uni essen de und J rg Krause joerg krause net Es handelt sich nicht um eine offizielle oder im rechtlichen Sinne aner kannte bersetzung Die Free Software Foundation FSF ist nicht der Herausgeber dieser bersetzung und sie hat diese bersetzung auch nicht als rechtskr ftigen Ersatz f r die Original GNU GPL anerkannt Da die bersetzung nicht sorgf ltig von Anw lten ber pr ft wurde k nnen die bersetzer nicht garantieren dass die bersetzung die rechtlichen Aussagen der GNU GPL exakt wieder gibt Wenn Sie sichergehen wollen dass von Ihnen geplante Aktivit ten im Sinne der GNU GPL gestattet sind halten Sie sich bitte an die englischsprachige Originalversion Die Free Software Foundation m chte Sie darum bitten diese bersetzung nicht als offizielle Lizenzbedingungen f r von Ihnen geschriebene Programme zu verwenden Bitte benutzen Sie hierf r stattdessen die von der Free Software Foundation herausgegebene englischsprachige Originalversion Bedingungen f r die Vervielf ltigung Verbreitung und Bearbeitung 0 Diese Lizenz gilt f r jedes Programm und jedes ande
196. onen get new upd del 2 Welche bestehenden Funktionen benutze ich e Ausnutzen was es schon gibt e Was f r Argumente und R ckgabewerte werden dort benutzt 3 Habe ich Security relevante oder Performance kritische Daten bertragungen 4 Gibt es kapselbare immer wiederkehrende redundante HTML Ausgaben e Darstellen Funktionen erstellen Datenbank anpassen meistens um Tabellen erweitern SQL Dateien anpassen Security Stufen beachten Klassen definieren Klassenname_def php Namenskonvention beachten Install Script anpassen Links n tig gt config_part4 sh oe m A on m Includes anpassen f r Objekte und weitere Module e Neue Klassen werden je in USER_ARTIKEL_HANDLING php und in USER_BE STELLUNG php eingebunden Wenn es eine reine Administrator Funktion ist kann man sie auch erst in SHOP_ADMINISTRATION php einbinden 10 Funktionen schreiben auch get new upd del neben der eigentlichen Funktionalit t 11 Funktionstests 12 Formularmasken programmieren inkl JavaScript Eingabepr fung und Sonderzei chen Unterst tzung phpeppershop dokumentation sdw Seite 49 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 13 Aufrufe in bestehende oder neue Module integrieren darstellen 14 Eingliederung der neuen Funktionalit t in die Shop oder Admin Men struktur 15 Test auf Sonderzeichen und Extremwertetest negative 0 und grosse positive Werte 16 Test der Gesamtfunktionalit t 17
197. osschieben Beschreibung DA Diese Funktion ist eine Hilfsfunktion im Kategorien Management Sie verschiebt die Positions Nummern der Kategorien entsprechend den Ein gabe Parametern Positions Nummern ordnen die Kategorien Anzeige aufsteigend ein Nachdem diese Funktion abgelaufen ist kann man z B entweder eine neue Unter Kategorie mit gew nschter Pos_Nr eintra gen eine L cke wurde geschaffen oder es wurde eine L cke gel scht gt z B wie bei delKategorie Argumente Kategorie_ID INT currentPos INT newPos INT delPos INT currentUkat String newUkat String R ckgabewert true oder Abbruch per die Funktion SHOP_ADMINISTRATION php getNichtzugeordnetKategorie phpeppershop dokumentation sdw Seite 83 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul PHP Funktionen Administrationsfunktionen Beschreibung DA Liefert als Kategorie Objekt die spezielle Nichtzugeordnet Kategorie Diese Kategorie wird erkannt indem sie in ihrem Attribut Unterkatego ne von den String PhPepperShop tr gt Diese Funktion wurde ge schrieben weil die Kategorie in einem englischen Shop wahrscheinlich nicht mehr Nichtzugeordnet heissen wird Auf diese Weise kann man diese Kategorie immer auslesen egal wie sie heisst Argumente keine R ckgabewert ein Kategorie Objekt SHOP_ADMINISTRATION php updatecssarg Beschreibung DA Einen CSS String in
198. out Management Im Layout Management k nnen Sie das Aussehen Ihres Shops komplett Ihren Bed rfnissen anpassen So st es m glich f r jedes Frame Fensterteil eine eigene Hintergrundfarbe zu definieren oder ein Hintergrundbild anzeigen zu lassen Im Top Frame oberer Fensterteil kann entweder der Shopname ihr Shoplogo oder ber haupt nichts angezeigt werden Den kleinen Stern der neben dem Warenkorb anzeigen Button Knopf eingeblendet wird um in den Administrationsbereich zu gelangen k nnen Sie bei Bedarf ausblenden ACHTUNG Danach kommen Sie nur noch in den Administrations bereich indem Sie http www ihreshop top_level_domain shopname shop Admin m Browser eingeben Beispiel http www pizzashop de pizzashop shop Admin Sie haben f nf Eingabefelder f r das Fontset zur Verf gung Geben Sie in dem Feld 1 Prio rit t die Schriftart ein die mit h chster Priorit t zur Anzeige des Shops verwendet werden soll 2 Priorit t ist die Schriftart die verwendet wird wenn der Surfer die unter 1 Priorit t eingetragene Schriftart auf seinem Computer nicht installiert hat So geht es weiter bis zur 5 Priorit t phpeppershop dokumentation sdw Seite 145 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Die Schriftfarbe Schriftgr sse das Schriftgewicht die Text Dekoration und der Schriftstil k nnen f r alle verwendeten Tags Schriftgruppen gesondert eingestellt werden Bitte be
199. peppershop dokumentation sdw Seite 92 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Beschreibung Das bedeutet der Shop Administrator will ein Bild zu diesem Artikel in der Da tenbank speichern Nun wird ein neues Thumbnail vom eingelesenen Bild an gefertigt aus lizenzrechtlichen Gr nden kein GIF Support und alle Bilddaten DA insgesamt 4 Attribute der Tabelle artikel in der Datenbank gespeichert Diese Funktionalit t verlangt seit v 1 05 nicht mehr nach root Rechten b ld_up php Variable loeschen_Bild 1 Speichern false Beschreibung Der Shop Administrator hat sich in diesem Fall entschieden das vorhandene Bild zu l schen Dies wird nun ausgef hrt Datei darstellen SHOP_BESTELLUNG php 10 Beschreibung Kundendaten und seine Bestellung der Referenznummer nach anzeigen Hier DA kann man nderungen am Kundenprofil vornehmen die Bestellung l schen SHOP_BESTELLUNG php 11 Beschreibung Einen zuvor gew hlten Artikel aus der aktuell bearbeiteten Bestellung l schen DA SHOP_BESTELLUNG php 12 Beschreibung Die aktuelle Bestellung l schen oder sie updaten abspeichern Wenn die Va DA riable Speichern gleich Speichern ist soll upgedated werden sonst wird ge l scht SHOP _BESTELLUNG php 13 Beschreibung DA Hier werden alle abgeschlossenen aber noch nicht gel schten Bestellungen ta bellarisch angezeigt Per Klick auf eine Zeile kann di
200. pershop dokumentation sdw Seite 111 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Da im Administrationsbereich wesentlich gr ssere Formulare und Men s ausgegeben wer den entschieden wir uns auf ein Frameset zu verzichten Alle Men s werden ganzseitig dargestellt wobei in der zweitobersten Zeile immer der Men titel angezeigt wird Hauptmen Artikel bearbeiten Kategorienmanagement Sr D EP H EE E En Erem Fee Pr r m EH En Erem Fee Pr r m ER Frie ed O Li in mm m jew ai T kal j g i m dt Marta APN SETRA Ep ACHHRISTAATION SHE goah TOA PaF EET Le m EN ea es D E EW Pomp a irantan 2 5 3 Layout Management Unser Ziel war es einen Shop zu entwickeln dessen optisches Erscheinungsbild beliebig auf die Bed rfnisse des Betreibers angepasst werden kann Um dies zu erreichen m ssen folgende HTML Komponenten dynamisch ver ndert werden k nnen Hintergrundbilder Farben s mtlicher Frames Alle im Shop verwendeten Schriften Tags Shoplogo Shoptitel Shop Buttons e Frame Gr ssen Wir erstellten ein Layout Management Konzept mit dem es m glich ist alle Einstellungen des Layouts per Web vornehmen zu k nnen Dieses besteht aus folgenden drei Teilen Layout Management Ruft der Shopadministrator das Layout Management Menu auf werden in der Datenbank tabelle css file alle Shopeinstellungen ausgelesen Diese werden in ein HTML Formular eingef llt welches dann bearbeite
201. pershop dokumentation sdw Seite 3 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 in with a login name and password This way he doesn t have to enter his address more than once The shop provides comfortable search functions to find articles Several types of pay ment are supported cash before delivery cash on delivery on account and credit card pay ment Thanks to a flexible payment interface it is possible to link the PhPepperShop to an online payment institute with ease PhPepperShop can optionally encrypt the credit card in put via SSL The shop administrator can access the web shop remotely from any location via a web inter face A flexible layout allows for changing the look of the shop n detail background images frame size shop logo buttons etc Articles can be created updated and deleted An article can even be assigned to more than one category With the category management the shop administrator can easily create rename replace and delete categories and sub categories Shipping costs can be charged by price by weight or by an estimated amount Small amount surcharge and pay on delivery surcharge can be added to the invoice automatically The web shop has been programmed using PHP and JavaScript The HTML pages are gene rated by PHP JavaScript validates customer input The whole shop is saved in a MySQL da tabase The installation is unlike UNIX with an automatic installation tool written in PERL
202. ps Admin SHOP_BACKUP _f1 php Admin Bestellungsmanagement Admin SHOP_BESTELLUNG php Admin Kundenattribute Admin SHOP_KUNDE php Admin Layout Management Admin SHOP_LAYOUT php Admin Shop Einstellungen Admin SHOP_VERSANDKOSTEN php Admin Versandkosten Admin SHOP_SETTINGS php Admin Kategorienmanagement Admin Shop_Einstellungen_Menu_Kategorien php Admin Administrationsmen Admin Shop_Einstellungen_Menu_1 php Admin Artikelmanagement Admin bild_up php Admin Admin PopUp anzeigen Admin pop_up_admin Admin Payment Interface externes Payment payment_interface php User externes Payment Test pay_ext_test php User PHP Funktionen Artikelhandling USER_ARTIKEL_HANDLING php User Bestellung USER_BESTELLUNG php User Administration Admin SHOP_ADMINISTRATION php Admin S QL Statements User SQL Statements USER_SQL_BEFEHLE php User Admin SQL Statements Admin ADMIN_SQL_BEFEHLE php Admin Datenbank User DB Anbindung initialize php User BEE Admin DB Anbindung Admin ADMIN_initialize php Admin Datenbank Wrapper DB Kommunikation database php User phpeppershop dokumentation sdw Seite 67 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Klassendefinition Artikel Klasse artikel_def php Attribut Klasse attribut_def php Bestellungs Klasse bestellung_def php Kategorien Klasse kategorie_def php Kreditkarten Klasse kreditkarte_def php Kunden Klasse kunde_def php Versandkosten Klasse versandkosten_def php Alle weiteren Dateien wur
203. r man passt den Bereich an damit er wie gew nscht arbeitet Wenn alle Konflikte beseitigt sind geht man wieder zur ck zu Punkt 2 und setzt seine Arbeit fort CVS f r sein Projekt auf SourceForge einrichten Um mit CVS zu arbeiten und es f r sein Projekt auf SourceForge einzurichten benutzt man verschiedene Kommandozeilen Befehle Wenn es jemand vorzieht unter Windows mit CVS zu arbeiten so kann er z B WinCVS verwenden WinCVS bietet noch nicht die komplette Funk tionalit t des UNIX Kommandozeilen Pendants es kann aber f r den t glichen Gebrauch gut verwendet werden Weitere Angaben zu WinCVS und SourceForge findet man unter http sourceforge net docman display_doc php docid 766 amp group_id 1 F r die weitere Be schreibung gehen wir auf die UNIX Kommandozeilen Implementation von CVS ein Bevor man nun seinen bestehenden Code ins CVS Repository von SourceForge importiert noch ein wichtiger Hinweis Die Verzeichnisstruktur welche man dem CVS System bergibt ist f r die Ewigkeit gedacht Man kann nicht einfach wieder ein Verzeichnis l schen nach dem man es importiert hat Wir mussten z B den Support von SourceForge darum bitten unser CVS Repository entsprechend zu ndern nachdem uns ein Faux pas passiert ist Man sollte sich deshalb vorher genau berlegen was man auf CVS ver ffentlicht und wie man das phpeppershop dokumentation sdw Seite 37 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001
204. r Meinung nach w re SourceForge eine Einrichtung die vom Staat getragen werden m sste Entwickler einrichten Als n chstes werden alle am Projekt beteiligten Mitarbeiter eingef gt und ihren Usern die entsprechenden Rechte geben 1 Im Group Members Fenster den entsprechenden Usernamen eingeben und Add User w hlen 2 In den User Permissions oben kann man dem jeweiligen User Rechte und mter geben Webseiten f r das Projekt aufsetzen Jedes Projekt braucht nat rlich seine Homepage Hier wollen wir nicht darauf eingehen wie man seine Page gestalten sollte sondern nur wohin man s e ablegen muss und einige Punkte welche man nicht vergessen sollte In der Projekt bersicht im Admin Modus sieht man den Project WWW Directory Path Dorthin muss man seine Seiten ablegen Am besten loggt man sich in SourceForge per SSH ein ssh 1 Username Projektname sourceforge net Danach wechselt man in das Project WWW Directory Dort kann man dann mit dem Secure Copy Befehl von SSH die Daten hochladen Beispiel scp Datei Username shell sourceforge net home groups Projektname htdocs scp test pl fontajos shell sourceforge net home groups p ph phpeppershop htdocs Das sollte auf einer Projekt Webpage alles enthalten sein e Einen Link auf die SourceForge Projektseite z B http sourceforge net projects phpepper shop Links zu den Mailinglisten die gleich angelegt werden SourceForge Icon Einen Link zum Webinterface des CVS
205. r einen neuen Artikel wird der gleiche Ablauf verwendet wie bei der Mutation Per JavaScript wird berpr ft ob die minimal erforderlichen Angaben ein gegeben wurden An der Funktion f r das L schen eines Artikels aus dem Shop wurde praktisch nichts ver n dert phpeppershop dokumentation sdw Seite 118 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 6 1 Artikelsuche Die Artikelsuche wurde in der Diplomarbeit stark erweitert Mehrere Suchbegriffe in einer Abfrage erlaubt Im Hinblick auf Warensortimente mit vielen hnlichen Produkten haben wir die Unterst t zung von mehreren Suchbegriffen in einem Suchstring eingef hrt Die W rter werden wie von der Suchmaschine Google her gewohnt AND verkn pft Bilder k nnen optional angezeigt werden Seitdem wir die SQLs und die Auslesen Schleife in getgesuchterArtikel berarbeitet ha ben werden nicht mehr nur der Artikelname und dessen Artikel ID zur ckgegeben sondern auch gleich noch weitere Attribute Mit dieser Vorarbeit war es ein Leichtes die Bilder op tional als Suchergebnis anzeigen zu lassen Damit die Bedienung intuitiv bleibt wurde das jeweilige Artikelbild auch mit dem Link auf den Artikel versehen Mehrfachkategorien Anzeige Seitdem der PhPepperShop Artikel in mehreren Kategorien gleichzeitig abgelegt werden kann ist es auch wichtig in der Suchfunktion des Shops darauf hinzuweisen wenn ein Arti kel in mehreren Kategorien
206. r nicht Wir empfeh len die Verwendung von SSL sobald jemand Kreditkarten als Zahlungsm glichkeit anbieten will Man muss sich aber auch bewusst sein dass SSL Verbindungen langsam sind Es wird beim PhPepperShop nicht der komplette Frameset ber HTTPS bertragen sondern nur der Content Frame welcher die Formulare enth lt Aus diesem Grund zeigen Netscape 4 7x und der Internet Explorer auch kein sicheres Schl sschen an Dies ist verwirrend Wenn sich jemand berzeugen will ob seine Eingaben wirklich SSL gesch tzt sind so kann er dies folgendermassen tun e Mozilla NS 6 x Zeigt auch hier das Sicherheits Schl sschen an Internet Explorer Rechts Klick gt Eigenschaften gt dort muss https als Protokoll stehen e Netscape 4 7x Rechts Klick gt Informationen anzeigen gt dort muss https als Proto koll stehen 2 1 5 GNU PG Eurocard und VISA bieten einen lukrativen MailOrder Vertrag an sobald man nachweisen kann dass d e Kreditkartendaten der Kunden nie unverschl sselt bertragen werden Damit dies gew hrleistet st bietet sich eine Kombination aus SSL und GNU PG an Die Kredit kartendaten werden per SSL verschl sselt vom Kunden an den Shop bermittelt Das Be stellungs E Mail f r den Shopadministrator wird dann vor dem Versand mit GNU PG oder PGP verschl sselt Da die Kreditkartendaten nicht in die Shop Datenbank gespeichert wer den k nnen sie nie unverschl sselt abgerufen werden Nur der Shopbetre
207. r wie folgt aus Homepage Link phpeppershop sourceforge net Group shell SSH server phpeppershop sourceforge net Group directory on shell server home groups p ph phpeppershop Project WWW directory home groups p ph phpeppershop htdocs Man hat also sicher schon mal eine Homepage f r das Projekt 100MB Webspace CGI und PHP Scripts sind auch erlaubt ein CVS Repository dazu sp ter mehr und Zugriff auf einen Mailinglisten Server Nat rlich darf auch eine Shell nicht fehlen Mit Telnet kommt man aber nicht weit SourceForge erlaubt klugerweise nur SSH SSH und SSH2 Wenn man sich das erste mal auf die Shell des SourceForge Servers einlogst ssh pro jektname sourceforge net wird einem der Fingerprint des jeweiligen Servers angezeigt Man sollte sich kurz die Zeit nehmen und diesen mit dem jeweiligen Fingerprint hier verglei chen Das beste Sicherheitstool n tzt nichts wenn man es nicht richtig anwendet Host Protocol Key Fingerprint shell sourceforge net SOHL Iot 125426 07723 56 274312 93299 502 72 05 68 3237 shell sourceforge net SSHZ ee E Ee Lo raaa AAs Dar 99 cvs sourceforge net Salt 2211242 823 3C 3e13712053 87523452 65 41 2302 04 2b6 cvs sourceforge net 042 V22ab2 70 34 49 83 0b733559 1232 19 52 28 92302 22 Bevor man weiterf hrt sollte man sich gleich einmal einloggen und zwar auf dem Projekt Server projektname sourceforge net und ganz wichtig auch auf dem UCVS Server cvs projektname sourceforge net Man wird das
208. re Werk in dem ein entsprechender Vermerk des Copyright Inhabers da rauf hinweist dass das Werk unter den Bestimmungen dieser General Public License verbreitet werden darf Im Folgenden wird jedes derartige Programm oder Werk als das Programm bezeichnet die Formulierung auf dem Programm basierendes Werk bezeichnet das Programm sowie jegliche Bearbeitung des Programms im urheberrechtlichen Sinne also ein Werk welches das Programm auch auszugsweise sei es unver ndert oder ver ndert oder in eine andere Sprache bersetzt enth lt Andere Hand lungen als Vervielf ltigung Verbreitung und Bearbeitung werden von dieser Lizenz nicht ber hrt sie fallen nicht in ihren An wendungsbereich Der Vorgang der Ausf hrung des Programms wird nicht eingeschr nkt und die Ausgaben des Programms un terliegen dieser Lizenz nur wenn der Inhalt ein auf dem Programm basierendes Werk darstellt unabh ngig davon dass die Ausgabe durch die Ausf hrung des Programmes erfolgte Ob dies zutrifft h ngt von den Funktionen des Programms ab 1 Sie d rfen auf beliebigen Medien unver nderte Kopien des Quelltextes des Programms wie sie ihn erhalten haben anferti gen und verbreiten Voraussetzung hierf r ist dass Sie mit jeder Kopie einen entsprechenden Copyright Vermerk sowie einen Haftungsausschluss ver ffentlichen alle Vermerke die sich auf diese Lizenz und das Fehlen einer Garantie beziehen unver n dert lassen und des Weiteren allen anderen Empf nger
209. rekt im Shop ein Wir raten Ihnen dringend die SLL Verschl sselung einzu schalten Masseinheiten Zur Einstellung von L nder und Branchenspezifischen Masseinheiten W hrungs Legt fest welche W hrung im Shop verwendet werden soll Gewichtsmass Definiert die Gewichtseinheit die angezeigt werden soll Shop Konfiguration Verschiedene Shopeinstellungen Breite der Mini Bilder in Pixel Wenn Sie ein Artikelbild hochladen wird davon automatisch eine kleine Voransicht erstellt die dann im Shop angezeigt wird Diese sogenannten Thumbnails haben alle die gleiche Breite welche hier festgelegt werden kann Maximale Ses sion Zelt Jedem Shopbesucher wird beim Betreten des Shops eine Identifi kationsnummer zugeteilt Sie wird nach einer gewissen Zeit wieder gel scht Diese Zeit k nnen Sie hier in Anzahl Sekunden einstellen SSL Wenn Sie die SSL Verschl sselung aktivieren sind alle Seiten die ausgegeben werden nachdem sich der Kunde eingeloggt hat SSL verschl sselt ACHTUNG Der Web Server muss f r SSL Ver schl sselung eingerichtet sein damit diese Funktion gebraucht werden kann Wenden Sie sich bei Unklarheiten an Ihren Provider Bestellungsma nagement Ist das Bestellungsmanagement aktiviert werden alle Bestellungen auf dem Webserver gespeichert und k nnen vom Administrator im Men Bestellungsmanagement betrachtet oder gel scht werden Achtung Wenn man das Bes
210. riablen Da nach folgt meist in runden Klammern geschrieben der Name der Funktion in welcher der Fehler aufgetreten ist Optional ist der vierte Teil einer Fehlermeldung Er wird meist nur bei komplexeren oder gr sseren Funktionen verwendet Hier werden funktionsinterne Anga ben mitgegeben z B wo in der Funktion der Fehler aufgetreten ist welches SQL den Fehler verursacht hat oder hnl ches Bei Fehlern mit SQL Queries geben die Funktionen zudem auch die Query selbst noch aus Auch der Datenbank Wrapper database php wird in einem Fehlerfall die nicht erfolgreiche Query zur Sicherheit nochmals anzeigen Beispiele U_B_Error Konnte die Bestellung nicht gi bBestellung_an_Kund dem Kunden zuweisen S_A_Error RS_ukat Eine Unterkate delKategorie gorie konnte nicht entfernt werden phpeppershop dokumentation sdw Seite 98 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 bruch U_B_Error kommt also von USER_BESTELLUNG php S_A_Error kommt von SHOP_AD MINISTRATION php Bei USER_BESTELLUNG_DARSTELLUNG php w rde man U_B_D _Error schreiben Wir haben aber auch an Namenskonflikte gedacht bei SHOP_AD MINISTRATION_AUFRUF php und SHOP_ADMINISTRATION_ARTIKEL php wird der uneindeutige Buchstabe einfach ausgeschrieben phpeppershop dokumentation sdw Seite 99 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 3 Session Management Das Session Management wird
211. riablen benutzt macht das aber auch nichts Es sollen DA hiermit einfach alle M glichkeiten abgedeckt sein versandkosten_def php Versandkosten Beschreibung Diese Klasse enth lt alle von der Versandkostenberechnung her ben tigten Variablen DA und einen Array mit den Versandkonstenpreisen z B ab 10kg CHF 10 00 versandkosten_def php Versandkostenpreis Beschreibung In einer Versandkostenpreis Klasse k nnen alle Attribute der Tabelle versankosten preise gespeichert werden Man speichert pro Versandkostenpreis Objekt ein Preisin tervall von 10kg bis 20kg kosten die Versandkosten z B CHF 10 00 DA Datei Klassenname database php TRecordSet TSybaseRecordSet TMySQLRecordSet Beschreibung TRecordSet ist eine abstrakte Klasse welche f r die jeweilige Datenbank Implementa tion vererbt wird Ein RecordSet bietet Funktionen um komfortabel und Datenbank un abh ngig die einzelnen Felder auszulesen die n chste Zeile einzulesen und die Anzahl erhaltener Zeilen auszugeben Funktionen GetField NextRow H database php TDatabase TSybaseDatabase TMySQLDatabase Beschreibung TDatabase ist ebenfalls eine abstrakte Klasse welche f r die jeweilige Datenbank Im plementation weiter vererbt wird Sie k mmert sich darum datenbankunab ngige Con nections zu bieten Dies beinhaltet ein Connection Objekt Zugriffsfunktionen f r Queries und eine vereinfachte Zugriffsfunktion ohne R ckgabewerte IN
212. rojekt Administrator von der Projekt ber sichtsseite aus auf Tracker klicken und dort die entsprechende Sparte w hlen Wenn man jetzt auf Admin klickt kann man den Tracker konfigurieren Es ist wichtig dass man das am Anfang macht da die Leute ihre Meldungen sonst nicht sinnvoll einordnen k nnen Aus serdem geht unkonfiguriert jedes Ticket an alle Admins was meistens wohl auch nicht er w nscht ist ACHTUNG Einmal eingerichtete Kategorien und Gruppen k nnen nicht mehr entfernt wer den Die einzelnen Tracker Listen k nnen ber update preferences noch zus tzlich konfiguriert werden Unter anderem kann man dort auch festlegen ob diese Liste berhaupt zur Verf gung stehen soll So jetzt kommt nur noch CVS phpeppershop dokumentation sdw Seite 36 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 CVS einrichten Was ist CVS Wenn man mit CVS Current Versions System http www cvshome org noch keine Erfah rung hat braucht man ein bisschen Eingew hnungszeit Diese sollte man aber tunlichst auf sich nehmen Die Vorteile einer CVS gest tzten Software Entwicklung gegen ber einer ohne CVS sind vergleichbar mit einem Zirkus Seilt nzer mit und ohne Netz Wer einmal mit CVS gearbeitet hat wird es garantiert nicht mehr missen wollen Was macht CVS eigentlich CVS f hrt Buch ber die Ver nderungen die am Sourcecode vorgenommen wurden zusammen mit einer Beschreibung dessen was ver
213. rschiedenen Variationen Optionen k nnen nicht kumuliert werden Fehler beheben Variationen als optionales Pulldown Men implementieren Scrolling im Top Frame unterbinden Shop Logo upload erm glichen Als GIF Bilddatei im Bilder Verzeichnis ablegen Bilddatum f r Cache auf 1 1 1971 korrigieren Authentifizierung anstatt ber htaccess ber die PHPLib PHPAuth Neuprogrammierung der Artikel Update Funktion en Mehrere Shops in einer DB Pr fix bei Scripts u s w 1 4 3 Erste Vorentscheidungen Wir haben uns nach einer groben Aufwandsch tzung f r das Weglassen von verschiedenen Punkten entscheiden m ssen Gegen die Ausf hrung der Arbeiten haben wir uns entschieden wenn Die Arbeit als reine Fleissarbeit ohne Lerneffekt angesehen wurde z B bersetzung des Shops Windows Portierung Die Implementierung eines funktionsf higen einsatzbereiten Shops aufgrund des Auf wands in Frage gestellt werden musste z B CRM 2 Uns war vor allem wichtig dass der Shop im praktischen Einsatz bestehen kann Versand phpeppershop dokumentation sdw Seite 10 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 kosten zum Beispiel waren einfach ein Muss denn ohne Versandkostenrechnung kann man nicht wirklich einen Shop betreiben Erst danach haben wir uns f r Zusatzfunktionen wie eine erweiterte Artikelsuche entschieden Sind wir ein Problem angegangen so entschieden wir uns wenn i
214. rshop dokumentation sdw Seite 38 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Als anonymer Benutzer cvs d pserver anonymous cvs Projektname sourceforge net cvsroot Projektname login Nachdem man sich nun als anonymous eingeloggt hat kann man das eigentliche Checkout machen CVS d pserver anonymous cvs Projektname sourceforge net cvsroot Projekt name co Verzeichnisname Hier muss auch der Loginname und der Projektname entsprechend ersetzt werden Mit dem Verzeichnisnamen ist das Verzeichnis gemeint in welchem die Daten auf dem CVS Reposi tory abgelegt werden sollen Upgedatete Datei zur ck ins Repository schreiben Update Commit Hier geht es darum ein weiter entwickeltes File oder mehrere Dateien zur ck in das CVS Repository zu schreiben Man sollte sich vorher aber auf eine Update Policy einigen Diese Policy sollte regeln wann es sinnvoll ist eine neue Version ins Repository zur ck zu schreiben Wir haben uns z B darauf geeinigt dass wir immer erst dann ein Update machen wenn wir eine neue lauff hige Ver sion unseres Moduls oder unserer Funktion haben Da man mit dem Checkout Befehl schon alle Angaben zum Projekt angegeben hat d muss man sie Jetzt nicht mehr explizit angeben cvs update cvs commit m Message An die Message kann man eine kleine Nachricht mitgeben Hier drin beschreibt man in kur zen Worten was man am Code ge ndert hat Es gibt auch Projekte welche hier e
215. rufen wird MwStsatz MwStpflichtig MwStNummer Admin_pwd Name Adres sel Adresse2 PLZOrt Tel1 Tel2 Email Thumbnail_Breite Min dermengenzuschlag_Aufpreis Abrechnung_nach_Preis Abrechnung_nac h_Gewicht Mindermengenzuschlag Kreditkarten_Postcard ShopVer sion Abrechnung_nach_Pauschale Rechnung ShopVersion Waeh rung Nachnahme Mindermengenzuschlag_bis_Preis keineVersandkos tenmehr_ab keineVersandkostenmehr SSL Bestellungsmanagement Gewichts_Masseinheit max_session_time AGB Opt_inc Var_inc Opt_ anz Var_anz SuchInkrement Vorauskasse Kontoinformation R ckgabewert true bei Erfolg SHOP_ADMINISTRATION php delBild Beschreibung L scht das Bild des aktuellen Artikels L scht das Bild eines Artikels in der DB Wenn man dem Artikel kein Bild mehr zuordnen will Diese Funktion wird beim Update eines Artikels verwendet Argumente Artikel_ID INT R ckgabewert true bei Erfolg SHOP_ADMINISTRATION php newKategorie phpeppershop dokumentation sdw Seite 82 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul PHP Funktionen Administrationsfunktionen Beschreibung DA F gt eine neue Kategorie in die Tabelle kategorien ein Unterst tzt vorerst NUR den Namen und die Positionsnummer Es ist noch keine Beschreibung und Bild Eingabe m glich Seit v 1 05 werden auch Unterkategorien unterst tzt Argumente Name String Positions Nr INT
216. s Ver ffentlichungsdatum haben wir den 15 November 2001 festgesetzt Bis zu diesem Datum m ssen jedoch noch einige Arbeiten erledigt werden e Backup des Shops automatisieren e Bugfixes e FAQ Liste und User Forum auf http www phpeppershop com einrichten 1 9 2 Leute die den Shop weiterentwickeln wollen Folgende Leute haben s ch bereit erkl rt unter Umst nden an der Weiterentwicklung des Shops mitzuarbeiten oder den Shop in eine andere Sprache zu bersetzen e Uli und Christian deutsch Andalusien wollen mitentwickeln Uli prismaworld com oder Webmaster fileload de e Hans Physiker englisch Security testen thesi s xs4all n e Peter Fitzpatrick englisch Secure Online Transaction ihm Infos schicken petefitzy btinternet com phpeppershop dokumentation sdw Seite 60 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Hans Peter Ambros Fan von pgmarket deutsch will mitentwickeln v a spezialisierte L sung ambros planet nterkom de e Hans Jakob Martin deutsch will mitentwickeln falls er bis dann nicht schon einen anderen Shop benutzt Lager Buchhaltung Hans Jakob Martin gmx net www nordakademie de Georg Spang deutsch will mitentwickeln spezialisierte L sung eorg_spang gmx de Alex Henriksen englisch bersetzt englischen Shop ins D nische alexie zbox dk Steven Dowd englisch bersetzt den Shop ins Englische steven dowd dowd co uk
217. s schon automatisch eingerichtet worden Developers Help e Open Discussion Es wurde noch ein weiteres spezielles Forum angelegt Neuigkeiten Der Zweck dieses Fo rums ist analog zur announce Mailingliste Dokumentation Wie koordiniert man die Dokumentation der einzelnen Funktionen und Module welche von verschiedenen Entwicklern von irgendwo auf der Welt programmiert wurden SourceForge bietet hier mit der Dokumentationsfunktionalit t eine gute L sung Jeder Entwickler kann seine Dokumentation in verschiedenen Gruppen organisiert z B Deutsch Englisch posten und jeder hat danach Einsicht so muss nicht alles im Code sein Eine kleine aber wichtige Anmerkung dazu Die Dateien die upgeloaded werden m ssen zu erst von einem Administrator begutachtet und f r gut befunden werden erst dann sind sie f r alle ersichtlich Auch muss man aufpassen wenn man Plain Text Berichte uploaden will Alle Umbr che sind dann weg weil das Dokument wie eine HTML Seite betrachtet wird Stichwort lt BR gt Tag Auf diese Weise hat man aber gute Gestaltungsm glichkeiten Bug Support Patch Feature Request Tracker Der Tracker ist ein Support Management Tool Man kann mit ihm Tickets erstellen und an die Entwickler des Projekts senden F r den betroffenen Entwickler erscheint dieses mit ei ner Priorit t versehen und nach Themen sortiert auf seiner personalisierten Einstiegsseite Um den Tracker zu konfigurieren kann man als P
218. s viele Gedanken betreffend der Security des Shops gemacht und Sicherheits massnahmen auf mehreren Ebenen eingebunden Im Folgenden gehen wir genauer auf die einzelnen Teile der Shop Security ein 2 1 1 PHP Da ein potentieller Hacker Cracker den Sourcecode der HTML Seiten sowie Header Informa tionen begutachten und ver ndern kann besteht die Gefahr dass er sich so ein Bild ber den Shop Aufbau machen kann und auf diese Weise zu wichtigen Hintergrundinformationen kommen k nnte Um dem vorzubeugen haben wir uns in der ersten Projektarbeit schon beim Design daf r entschieden diejenigen PHP Scripte welche Administrations Aufgaben wahrnehmen von den USER Level Scripten so gut es geht zu entkoppeln Dies f ngt schon bei den SQL Kommandos an Alle SQL Befehle die von USER Funktionen benutzt werden kommen aus einer Datei Alle Administrator Scripts befinden sich in einer anderen Datei die von keinem USER Modul included wird Auf diese Weise ist sichergestellt dass von einer USER Funktion niemals ein Administrations Script aufgerufen wird PHP bietet einen sogenannten SafeMode an Durch ihn versucht PHP einige Sicherheitsl cken zu schliessen Dieser Modus beinhaltet ein Sicherheitskonzept welches die Zugriffsbe rechtigung auf Dateien regelt Ein Zugriff auf eine Datei wird nur noch gew hrt wenn die Datei das Verzeichnis und das Script dem gleichen Benutzer geh ren Dieses Kriterium gilt weiter f r alle Funktionen die ein Risiko
219. se rer Erkenntnisse welche wir in dieser Beziehung gewonnen haben Variablentransport zwischen Funktionen Um Variablen zwischen Funktionen zu transportieren arbeiteten wir von der Projektarbeit her viel mit Arrays und assoziativen Arrays Auf diese Weise kann man bis zu zwei Variablen pro Zeile transportieren Das Problem entstand f r uns immer dann wenn von einem Objekt pl tzlich mehrere Attribute verwendet wurden Wir standen dann vor der Entscheidung entweder die Funktionen neu anzupassen oder ein Objekt auf mehrere Array Eintr ge zu verteilen Schwieriger ist es wenn man eine Funktion hat welche pl tzlich nicht nur ein Ob jekt sondern gleich mehrere zur ck geben sollte Ein Beispiel daf r w re die getgesuchterArtikel Suchstring Funktion USER_ARTIKEL_ HANDLING php Sie gab in der Shop Version der Projektarbeit einen Array von Artikel Ob jekten zur ck Nachdem ein Artikel nun in mehreren Kategorien sein kann h tten wir die Klasse Artikel ab ndern m ssen was viele schon bestehende und gut funktionierende Funk tionen betroffen h tte getArtikel Wir h tten auch den Array zur bertragung benutzen k nnen ein Artikel seine Kategorien n chster Artikel Wir haben uns aber daf r ent schieden eine neue Klasse Artikelmitkategorien einzuf hren Wir schrieben also lediglich ein anderes Objekt in den R ckgabearray und konnten die nderungen fast ausschliesslich in dieser Funktion lokal behalten Was
220. sehen haben Wir verwendeten das Freeware Programm Buttonz von Bj rn Ischo zur Erzeugung der But tons Da die Homepage von Bj rn Ischo russisch ist empfehlen wir das Programm von http www pctip ch herunterzuladen Die Templates zur Erzeugung der Buttons befinden sich auf der Diplomarbeit CD Sie k nnen phpeppershop dokumentation sdw Seite 115 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 auch direkt bei uns developers phpepeppeshop com bezogen werden Template File Abmessungen b h Beispiel Button bt_template_einzeilig_82px bff 82px 26px Suchen bt_template_einzeilig_l110px bff 110px 26px Speichern bt_template_einzeilig_125px bff 125px 26px Zur ck zum Shop bt_template_zweizeilig bff 8lpx 32px Kategorie umbenennen Folgende Namenskonvention sollte beim Erstellen neuer Buttons f r den Administrationsbe reich eingehalten werden ak F Bu cteonbeschritftung acdn n oTr Wird zum Beispiel ein Button mit der Beschriftung Backup eingef hrt heisst die Datei fol gsendermassen bt_backup_admin gif 2 5 5 Andern der Welcome Page Um die Willkommens Page abzu ndern muss man nur die Datei content html m Ver zeichnis lt shopdir gt shop Frameset ndern oder ersetzen phpeppershop dokumentation sdw Seite 116 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 2 6 Artikelmanagement Mit der Einf hrung
221. senkrechte 68 2 2 3 Fehlerbehandlung in den Modulen 98 Allgemeine Sucherbhetevorkebhrungen 98 reegen 98 Der Die EG 98 2 3 PESON Manap emen ear nE ed 100 2 3 1 Maximale Dess on Dae EE 100 2 9 2 D968810n Management Hedder EE 100 A Data E 102 ZA Idee RI EE 102 2 4 2 Personalisierung durch das Installationstool confe pn 102 2 4 3 Relationen in der Datenbank Ubersicht 103 2 4 4 Entity Relationship Diagramm der Shop Datenbank 103 ER Das ram m Tel WEE 104 ER Diagramm KE 105 Br BE Ree KEE 106 2 4 5 Tabellen und ihre Attribute im Detail 107 2 4 6901 Query Handelns sa sn a een 109 241 DB Wrapper database eh e EE 110 phpeppershop dokumentation sdw Seite 163 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 29 809 Layout Mana ene een 111 KE Ee Layout ee 111 2 9 2 Layout Ad Ke RENE Bee EE EE 111 2 5 8 Lbayout Manasement ass u I 112 Layout Manac TE EE 112 Hintergrundbilder und Shoplogo bochladen 113 B ttons er eelere euelen 113 2 5 4 Buttons im Administrationsbereich age geess tegen a aa ia a 115 O ATLKEINADAS WEN EE 117 EE E EE 119 Mehrere Suchbegriffe in einer Abfrage erlaubt 119 Bilder k nnen optional angezeigt werden 119 IMehrf chkatesorien Anze Des 119 kt ed ene EE EE 119 SCHE RED EE 120 2 7 EIERE EE 121 2 7 1 Urspr ngliches Konzept opver ndert 121 Kategorienmanagement Bldechrmansaicht 121 Neue Katbesorie erstellen RR KEE 122 Kategorie verschieben Pr nen ea 122 K
222. ser Ziel weit verfehlt wenn wir hier eine Bedie nungsanleitung abdrucken m ssten Denn wer hat schon Lust eine Bedienungsanleitung zu lesen um einen Einkauf t tigen zu k nnen 3 3 2 Bedienung des Administrationstools Folgende Grafik zeigt die Men struktur mit den m glichen Aktionen auf Artikel gt Neuen Artikel einf gen Kategorien Bestehenden Artikel bearbeiten Bestellungen Bestehenden Artikel l schen Shop Einstellungen H ung gt Neue Kategorie erstellen Kategorie verschieben Kategorie umbenennen gt Allgemeine Shopeinstellungen Kategorie l schen Layout Management Unterkategorie erstellen Shopbuttons Kn pfe hochladen verschieben Versandkosten Einstellungen Unterkategorie in eine andere Kategorie verschieben Kundenattribute bearbeiten Unterkategorie umbenennen Unterkategorie l schen gt Bestellung anzeigen Kundenadresse mutieren Bestellung l schen Das Artikelmanagement Artikel erstellen bearbeiten und l schen das Kategorienmana gement sowie das Bestellungsmanagement sind selbst erkl rend aufgebaut und erlauben es auch nicht so versierten Benutzern den Shop zu administrieren Ein kleines Manko des Kategorienmanagements soll hier noch erw hnt werden F gen Sie eine Unterkategorie in eine Kategorie ein die keine weiteren Unterkategorien enth lt wer den Sie gefragt wo die neue Unterkategorie eingef gt werd
223. shop Do 27 September 01 e CSS Layout Management Anpassungen Installationsscript MySQL Fehler abfangen Shopnamen Fehler Unterkategorien implementieren Fr 28 September 01 e CSS Layout Management Unterkategorien implementieren Mo 1 Oktober 01 e ZHW LAN nicht verf gbar e PC Glanzmann defekt e CSS Layout Management in Shop integrieren Di 2 Oktober 01 Anpassung Layoutmanagement an Netscape 4 7 Root Problem gel st Unterkategorien fertig implementiert Beginn Artikel in mehrere Kategorien Artikelsuche um Unterkategorienf higkeit und Mehrfachkategorien erweitert Bilder k n nen wahlweise angezeigt werden Mi 3 Oktober 01 Artikel in mehrere Kategorien Bugfixes berarbeitung Admin Layout und Anpassung Admin CSS Do 4 Oktober 01 e Fertigstellung funktionaler Teil Mehrfachkategorien e Fertigstellung darstellender Teil Artikel in mehrere Kategorien Fr 5 Oktober 01 phpeppershop dokumentation sdw Seite 155 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 e Fertigstellung Artikelhandling e Kategorienmanagement Funktionalit t Anpassung Artikelupdate Funktion e Delete Funktion Mo 8 Oktober 01 e M glichkeit zu w hlen wie viele Options und Variantenfelder zur Erfassung und Bearbei tung eines Artikels angezeigt werden Mindestwert und Anzahl leere Felder e Shop Administrationsmodus berarbeitet und der aktuellen Shopfunktionalit
224. shopweit ein einheitliches Erschei nungsbild zu erhalten wollten wir keinesfalls darauf verzichten Wir nahmen uns deshalb die M he die Stylesheet Datei so zu erstellen dass auch Netscape 4 7 damit zurecht kam Durch mehrfaches berladen von Styles und Klassen gelang uns dies dann nach langem experi mentieren auch Dies ist insofern sehr wichtig da wir sonst das Layoutmanagement nur mit sehr viel Zeitaufwand h tten implementieren k nnen 1 8 5 PHP und Safe Mode PHP stellte sich wiederum wie schon bei der Projektarbeit als sehr n tzliche Scriptsprache heraus welche die meisten f r die Web Programmierung ben tigten Funktionen schon mit bringt und so eine sehr effektive Software Entwicklung erm glicht PHP besitzt einen sogenannten Safe Mode Ist dieser eingeschaltet l uft PHP in einem si chereren Modus Viele Operationen auf das Filesystem und die Ausf hrung von Programmen durch PHP sind dann jedoch nicht mehr m glich Um eine gewisse Sicherheit zu haben schalten die meisten Provider diesen Modus ein Da wir schon in der Projektarbeit konse quent mit eingeschaltetem Safe Mode entwickelten behielten wir dies auf f r die Diplomar beit bei Theoretisch ist es per Safe Mode m glich an allen Stellen auf das Filesystem zu schreiben bei denen der Inhaber der Datei gleich dem Inhaber des PHP Scripts ist Dies erwies sich je doch in der Praxis als falsch worauf wir uns nach einer anderen L sung umschauen mussten Wir fanden da
225. ssystem weiter gereicht werden welches d e Zahlung bernimmt Das externe Zah lungssystem liefert danach eine Meldung ber den Erfolg der Zahlung und leitet den Shop benutzer wieder zu einer vordefinierten Seite im Bestellungsablauf des PhPepperShop zu r ck Ein Ablaufdiagramm des Bestellungsvorgangs kann im Kapitel 1 7 3 Tests angeschaut werden Idee und Konzept Die Zahlungsschnittstelle payment_interface php ist eine sehr wichtige Schnittstelle Man kann mit ihr eine komplette Bestellung bis ins letzte Detail ansehen Pa r gt Kunde Pay_ID Kunden_ID Kunde Adressdaten Bestellung Referrer Erfolg_Flag Anat oa Errormessage BE EF Bestellung BE Artikel Bestellungs_ID Artikel_info_Objekt Bezahlungsart m Datum Artikel ID GE Kreditkarten_Hersteller Name Kreditkarten Nummer Gewicht rn Kreditkarten_Ablaufdatum o Veeon m Kreditkarten Vorname Aufpreis Kreditkarten Nachname Preis Array von Artikeln Array von Optionen Rechnungsbetrag Usability der Schnittstelle Wir haben einigen Aufwand betrieben um zu vermeiden dass sich der Benutzer der Schnitt stelle mit dem Code des PhPepperShop befassen muss Dies dient auch der Sicherheit Es ist immer ein Risiko wenn jemand am Code des eigentlichen Programms Ver nderungen vor nehmen muss Die Zahlungsschnittstelle befindet sich in der Datei paym
226. st also nicht de finitiv auf nur eine Ebene beschr nkt e Viele Funktionen konnten unver ndert mit der erweiterten Tabelle arbeiten Keine weiteren Klassen mussten eingef hrt und included werden Ein Designfehler ist uns aber dennoch unterlaufen Wir haben nicht weit genug in die Zu kunft geschaut Im Attribut Unterkategorie_von setzten wir den Namen der Haupt Kategorie ein Wie wir sp ter erfahren mussten ein in mehrfacher Hinsicht schwerwiegender Fehler welcher uns aber neben den zu umschiffenden Unw gbarkeiten auch einiges an Erfahrung einbrachte Wann immer wir performance kritische Funktionen zu schreiben hatten bergaben wir die ben tigten Attribute in einem Formular als hidden Field oder per Link im Query String Hier kamen nun allerlei Encodierungsprobleme auf uns zu da der Shop auch Sonderzeichen rich tig behandeln k nnen sollte siehe auch Kapitel 1 8 8 Weiter waren Kategorienamen vor der Implementierung von Unterkategorien eindeutig und einmalig wir hatten f r den Katego rienamen sogar ein UNIQUE Statement in der Datenbank Auf einmal kann man aber meh rere Kategorien mit gleichem Namen haben Da wir hier nicht mit der Kategorie ID arbeiten erbt die neue Kategorie alle Unterkategorien der schon bestehenden Solche Probleme h tten sich vermeiden lassen wenn man sich auf die Kategorie ID bezogen h tte Wir haben daraus gelernt und werden wohl nie mehr ein anderes Verkn pfungsattribut als eine ID w hlen Shop Sett
227. st seit dem 13 09 2001 aufgeschaltet und wird seither als offizielle Informationsseite betrieben phpeppershop com Herzlich Willkommen auf www phpeppershop com Microsoft Internet Explorer u la x Datei Bearbeiten Ansicht Favoriten Extras zur ck gt O A A Asuchen GaFavoriten Heu B G A a A Adresse P http www phpeppershop com j Wechseln zu Links 7 PhPepperShop Sie befinden sich auf der Website des in Entwicklung stehenden Open Source Webshopsystems PhPepperShop Dieser Shop ist w hrend einer Projektarbeit der Z rcher Hochschule Winterthur unter der Bezeichnung Framework f r einen PHP Webshop entstanden und wird momentan im Rahmen unserer Diplomarbeit zum PhPepperShop weiterentwickelt Auf folgenden Seiten finden Sie weitere Informationen f Beispielshop f Homepage Framework f r einen PHP Webshop SHE f ENGLISH Falls Sie Fragen Anregungen oder Bemerkungen an uns haben k nnen Sie uns unter folgender EMail Adresse erreichen developers phpeppershop com Letzte Aktualisierung 14 09 2001 sLlaro l Fertig Internet Mit dem Abschluss des Studiums werden wir auch unsere bis anhin verwendeten ZHW E Mail Adressen nicht mehr zur Verf gung haben Damit wir auch danach noch f r Fragen und Feedback erreichbar sein werden richteten wir eine offizielle Kontaktadresse ein developers phpeppershop com 1 9 1 Ver ffentlichung des Final Release Als offizielle
228. strukturen Es folgt nun eine Einteilung der entsprechenden Module in ihre Schichten Weiter ist jedem einzelnen Modul eine Sicherheitsstufe zugeordnet User Funktionen arbeiten mit User SQLs und User Datenbank Objekten Die Includes sind so gehalten dass kein User Modul auf ir sendwelche als Admin deklarierte Module zugreifen kann Admin Module d rfen hingegen auch User Module benutzen Die Pfadangaben beziehen sich wenn nicht anders angegeben auf folgenden Pfad lt shopd rs shop phpeppershop dokumentation sdw Seite 66 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 HTML Darstellung Frameset Jindex php User Oberer Frame Frameset top php User Darstellen Module Bestellung USER_BESTELLUNG_DARSTELLUNG php User User Hilfe darstellen USER_ADMIN_HILFE php User Bild aus DB anzeigen bild_view php User Artikelmanagement Admin SHOP_ADMINISTRATION_ARTIKEL php Admin Admin Hilfe darstellen Admin ADMIN_HILFE php Admin Erstellt ein DB Backup Admin ADMIN_backup php Admin Zur cklesen von Backup Admin ADMIN_restore php Admin Externe Zahlungsstelle payment_interface php Admin Aufruf Module Artikelhandling USER_ARTIKEL_HANDLING_AUFRUF php User Bestellung USER_BESTELLUNG_AUFRUF php User Bestellung USER_BESTELLUNG_1 php User User PopUp anzeigen pop_up php User Administration Admin SHOP_ADMINISTRATION_AUFRUF php Admin Backup Restore Men Admin SHOP_BACKUP php Admin DB Backup des Sho
229. t werden kann Wird dass Formular abgesendet werden die Shopeinstellungen wieder in die Datenbank gespeichert Zus tzlich werden die beiden Tem plate Files indextemplate txt und csstemplate txt eingelesen Mut einem eigens zu diesem Zweck programmi erten Parser werden die Files index php und shopstyles css er zeugt Dies geschieht indem spezielle Tags welche sich in eckigen Doppelklammern befinden lt lt Tagname gt gt durch entsprechende Shopeinstellung aus der Datenbank ersetzt werden Zeile m Template File body lert I color lt lt left_ font C gt gt background lt lt left bg 5 lt lt lerrt _bg_img gt gt Werte n der Datenbank str 00008b background image url Bilder bg_left jpg left_font_c left_bg_c left_bg_img Zeile wie sie in die Datei shopstyles css eingef gt wird phpeppershop dokumentation sdw Seite 112 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 body left color ffffff background 00008b background image url Bilder bg_left jpg Ablauf des Layout Management Vorgangs indextemplate txt u Shop Layout Formular ZE index php Datenbank l __ lt lt shopstyles css csstemplate txt Hintergrundbilder und Shoplogo hochladen Die Hintergrundbilder und das Shoplogo k nnen mittels Web Formular hochgeladen werden Falls der Upload erfolgreich ausgef hrt werden konnte wird das entsprechende Bild m Ver zeichnis shop Bild
230. tanil ZW 15 November 2001 4 7 Zusammenfassungen Auf der CD finden Sie folgende Zusammenfassungen und Anleitungen die wir w hrend der Projekt und Diplomarbeit f r unseren Gebrauch erstellt haben Diese geh ren eigentlich nicht zum Diplomarbeitsbericht Wir denken aber dass sie jemandem der den Shop instal lieren oder weiterentwickeln wull sehr n tzlich end apache_konfigurieren sdw e cvs html e Datenbankdesign Relationship word doc e DB Wrapper doc e Dynamische Variablen in PHP doc e sla linux hilfe sdw e htaccess einrichten sdw HTML Befehlszusammenfassung doc e mailversand_mit_php4 sdw e MySQL Infos doc e mysql notizen sdw e mysql sicherheit sdw e MySQL_INSTALL_BINARY doc notizen_php sdw e PHP4 Referenz doc prg_bsp_filelesenschreiben sdw phpeppershop dokumentation sdw Seite 167 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 4 8 Source Code Der Source Code des PhPepperShops befindet sich im zweiten Buch Die Dokumente sind in folgender Reihenfolge sortiert abgelegt worden Der Quellcode ist selbstverst ndlich auch auf der CD gespeichert Installationstool config pl config_part4 pl Redirect Page und Frameset index html index_php pdf User Level Scripts artikel_def php attr but_def php bestellung_def php bild_view php database php n t ialize php kategorie_def php kreditkarte_def php kunde_def php payment_interface php pay_def
231. tar gz Bei MySQL entstehen ungef hr alle zwei Wochen neue Versionen Deshalb hier noch die all gemeine Download Adresse Achtung Source Files herunterladen nicht Binaries http www mysql com downloads PHP http www php net downloads php SSL openSSL http www openssl org source mod_SSL http www modssl org source Erweiterungen GD Library http www boutell com gd Zlib Library http www gzip org zlib IJG JPEG Software http www 1jg org PDFlib http www pdflib com pdflib download index html Freetype http sourceforge net project showfiles php group_id 3157 Eigentliche Installation Entpacken der Pakete Die Pakete werden wie folgt entpackt phpeppershop dokumentation sdw Seite 25 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 tar xvfz paketename tar gz Nun gibt es jeweils Verzeichnisse in denen sich die entpackten Tarballs tar gz Dateien be finden MySQL Wir installieren zuerst MySQL da die Datenbank unabh ngig von den anderen Paketen ist Das Verzeichnis in welchem MySQL seine Datenbanken data ablegt kann mit dem Confi gure Parameter localstatedir angegeben werden Wir haben uns hier f r den Pfad usr local mysql data entschieden Mit dem Parameter prefix geben wir das Installat onsverzeichnis unserer MySQL Datenbank an z B usr local mysql 3 23 42 f r un sere aktuelle MySQL Version Nach der Installation erstellen wir noch einen Softlink A
232. te Rechte im UNIX Betriebssystem verf gt Zum Schluss stellten wir noch sicher dass die beiden User shopuser und shopadmin keine GRANT und ALTER Rechte haben In dem von vielen Personen gew nschten Ein User Betrieb des Shops greifen die MySQL Security berlegungen nicht Der Shop erledigt alle Operationen mit dem shopdamin U ser Man kann den PhPepperShop auch mit einem oder zwei schon bestehenden Datenbank Usern betreiben Hier wissen wir nat rlich nicht welche Rechte diesen Usern gegeben wur den Wir haben diese Flexibilit t eingebaut weil es viele Anwender gibt welche an ihrem vom Hosting Provider erhaltenen MySQ L Account nichts ndern d rfen Man sollte sich aber im Klaren dar ber sein dass wenn diesen Benutzern GR NT ALTER Rechte oder sogar Rechte an weiteren Datenbanken gew hrt werden dies eine potentielle Sicherheitsl cke darstellt 2 1 4 SSL Da wir im PhPepperShop Kreditkartenhandling eingef hrt haben m ssen diese sensiblen Daten auch verschl sselt bertragen werden Daf r bietet sich SSL an Wir haben SSL auf unserem Webserver installiert und zu Testzwecken mit einem selbst erzeugten Serverzerti fikat betrieben Damit ein Shopbenutzer dem Shop aber vertrauen kann sollte man hier ein offizielles Serverzertifikat z B von VeriSign benutzen Der Shopadministrator kann in den allgemeinen Shopeinstellungen SSL optional einschalten Es ist ihm berlassen ob er SSL auf dem Webserver installieren will ode
233. tellungsmanagement erst sp ter ab schaltet werden die vorher gespeicherten Bestellungen nicht ge l scht Anzahl Suchre sultate In diesem Feld k nnen Sie eingeben wie viele Suchresultate pro Suchresultatseite ausgegeben werden Wenn auf eine Suchanfrage eines Kunden viele Treffer zur ckgegeben werden kann er sich einfach durch die Suchresultatseiten durchbl ttern Artikel bearbeiten In dieser Eingabegruppe k nnen sie bestimmen wie viele Options Variaten Eingabefelder bei der Bearbeitung Erstellung eines Artikels angezeigt werden sollen phpeppershop dokumentation sdw Seite 142 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Anzahl Options Anzahl Optionsfelder die mindestens ausgegeben werden wenn der felder Administrator einen Artikel neu erstellt oder bearbeitet Anzahl Variati Anzahl Variationsfelder die mindestens ausgegeben werden wenn onsfelder der Administrator einen Artikel neu erstellt oder bearbeitet leere Optionsfel Anzahl der leeren Optionsfelder die beim Bearbeiten des Artikels der ausgegeben werden wenn ein Artikel schon viele Optionen hat leere Variations Anzahl der leeren Variationsfelder die beim Bearbeiten des Arti felder kels ausgegeben werden wenn ein Artikel schon viele Varianten hat Allgemeine Gesch ftsbedingungen In dieses Textfeld k nnen Sie Ihre Allgemeinen Gesch ftsbedingungen einf gen Di
234. tempor ren Kunden anzulegen die Kunden_ID eines persistenten Kunden auszulesen und seine Session_ID upzudaten Argumente Login String Passwort String Session_ID String R ckgabewert User existiert Passwort stimmt gt existierende Kunden_ID String User existiert Passwort stimmt nicht gt P String User existiert nicht gt neue Kunden_ID String USER_BESTELLUNG php checkSession Beschreibung DA Diese Funktion gibt die Kunden_ID zur ck falls ein Kunde eingeloggt ist und sich schon authentifiziert hat Argumente Session_ID String R ckgabewert User existiert und ist eingeloggt gt Kunden_ID String User ist nicht eingeloggt gt Leer String USER_BESTELLUNG php mailPasswort phpeppershop dokumentation sdw Seite 76 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul PHP Funktionen Userseitiges Bestellungswesen Beschreibung DA Diese Funktion sendet dem Benutzer der sein Passwort vergessen hat sein Passwort an seine im System gespeicherte E Mail Adresse Zur Verifikation muss er sein Login eingeben Zuordnung zur E Mail Adresse Argumente Login String R ckgabewert true bei Erfolg false wenn kein Login gefunden wurde sonst Abbruch per die Funktion USER_BESTELLUNG php addEinkaufsvolumen Beschreibung DA Diese Funktion addiert das Bestellungstotal zum Einkaufsvolumen eines Kun den eb
235. ts m Kapitel 1 8 5 zu lesen ist gelang es uns jedoch bei eingeschaltetem Safe Mode nicht einen beliebigen Text mittels GNU PG per PHP Aufruf zu verschl sseln Folgender Aufruf funktionierte in der Shell tadellos echo dieser text wird verschl sselt gpg a always trust homedir gnupg batch no secmem warning e keyring gnupg pubring gpg secret keyring ohups secer1ng 9pg r Tglanzret zhwin Ch Parameter Erkl rung a Ausgabe mit ASCII H lle versehen always trust Nimmt an dass allen verwendeten Schl s seln vertraut werden kann homedir Ort des Homeverzeichnisses batch Stapelmodus Keine Abfragen NO Ssecmem warning Keine Memory Sicherheits Warnung ausge ben Daten verschl sseln keyring Als ffentlichen Schl sselbund mitbenutzen secret keyring Als geheimen Schl sselbund mitbenutzen Y Verschl sseln f r Name phpeppershop dokumentation sdw Seite 44 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 phpeppershop dokumentation sdw Seite 45 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 1 8 7 Strukturen beim Webprogramming Wenn man ein Programm f rs Web entwickelt muss man sich im klaren sein dass gewisse starre Aufgabenteilungen und Unp sslichkeiten vorhanden sind Es gibt viele Unterschiede zu Programmen welche lokal auf dem Rechner laufen In diesem Kapitel schildern wir un
236. tsch und Englisch 1 1 1 Kurzbeschrieb Deutsch Die Entwicklung eines frei verf gbaren beliebig konfigurier und erweiterbaren Open Source Webshops war das Ziel welches wir uns zu Beginn unserer Diplomarbeit setzten Entstanden ist ein Shopsystem welches Artikel mit beliebig vielen Optionen und Varianten unterst tzt F r jeden Artikel kann ein beliebig grosses Artikelbild gespeichert werden von welchem automatisch ein Thumbnail kleines Vorschaubild mit fest definierter Gr sse er zeugt wird Der Shopkunde kann sich bei Bedarf seine Adressdaten benutzername und passwortgesch tzt speichern lassen damit bei einem sp teren Einkauf die Adresse nicht nochmals eingegeben werden muss Per Suchfunktion kann komfortabel im Shop nach be stimmten Artikeln gesucht werden Verschiedene frei konfigurierbare Zahlungsarten sind implementiert so dass mittels Payment Schnittstelle mit wenig Aufwand die Anbindung an ein Online Payment Institut m glich ist Der Shopadministrator t tigt alle Einstellungen direkt per Webinterface Ein umfangreiches Layout Management erm glicht es das Shopaussehen bis ins letzte Detail zu konfigurieren Hintergrundbilder Framegr sse Shoplogo eigene Buttons Artikel k nnen erstellt ver n dert oder gel scht werden Ausserdem ist es m glich einen Artikel mehreren Kategorien zu zuordnen Per Kategorienmanagement k nnen Kategorien und Unterkategorien erstellt umbenannt verschoben und gel scht werden Optional k
237. uf diese Weise findet man nach der Installation einer neueren Version de aktuelle unter cur rent Im MySQL Source Verzeichnis Feonfigure prefix usr Local mysgl73 23 427 localstate dir usr local mysql data make make install In S J sr71locaLl ny80173 23 22 J sze Loc l nysal eurtent mkdir usr local mysql mkdir usr local mysql data usr local mysql current bin safe_mysqld u mysqladmin amp SSL Installation Damit wir mit SSL arbeiten k nnen m ssen wir unser System zuerst mit der SSL Funktio nalit t ausr sten Deshalb installieren wir zuerst openSSL Im openSSL Source Verzeichnis config prefix usr local openssl 0 9 6b make make test make install In g FJu sr7 LoeaLl openssL 0 9 6b Zusr loealfepenssti e rfent Apache und mod_SSL Wir erstellen nun eine lauff hige Version von Apache welche mit Dynamic Shared Objects umgehen kann Dies ist eine beraus praktische Technologie DSOs werden auch Apache Module genannt und funktionieren in etwa analog zu den bekannten Linux Modulen Man kann sie einbinden und muss nicht f r jedes neue Modul den ganzen Apache neu bersetzen Wir patchen die Quellen des Apache Webservers mit dem mod_SSL Paket Gleichzeitig wird die Apache Configure Funktion aufgerufen Das datadir Verzeichnis beherbergt das Web server Hypertext Document Root Wir haben uns hier f r usr local apache htdocs entschieden Im mod_SSL Source Verzeichnis
238. und Variationen und der m zu n Ver kn pfung zu den Kategorien Teil 2 zeigt die Beziehung zwischen einem Kunden und seinen Bestellungen Der dritte Teil ist losgel st von den anderen beiden und stellt die Shop Settings mit den Versandkostenpreisen und allen weiteren Zusatztabellen dar phpeppershop dokumentation sdw Seite 103 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 ER Diagramm Teil 1 Optionen_Nr Optionstext Variatonstet artikel _optionen artikel_variationen n Preisdifferenz Variationstext Beschreibung Aktionspreis_ verwenden Aktionspreis artikel amp Lagerbestand Bild_gross Bild kein letzteAenderung Bildtyp Bild_last_modified eingeteilt in artikel_kategorien Beschreibung Name gt Unterkategorie_von kategorien Positions N Bild_gross Kategorie ID Bild_klein Bild_last_modified Bildtyp phpeppershop dokumentation sdw Seite 104 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 ER Diagramm Teil 2 Bezahlungsart nen gt gesperrt AnmeldeDatum Einkaufsvolumen C em gt seen D Kunde 1D LetzteBestellung C oa 5 Strasse C pm gt Tel kunde Re EE Attributwert4 Monn Attributwert2 C aus Attributwert3 Attributwert1 s zu artikel enth lt artikel_bestellung hat bestellung _kunde expired C bam S Bestellungs_
239. und ein Mindermengenzu schlag hinzugef gt Argumente Session_ID String R ckgabewert Array 1 Element Versandkosten 2 Element Mindermengenzuschlag 3 Element Rechnungstotal ALLES inkl allem 4 Element Nachnahmegeb hr USER_BESTELLUNG php getKunde Beschreibung Gibt aufgrund einer Kunden_ID ein Kunden Objekt zur ck Argumente Kunden_ID String DA R ckgabewert Ein Kunde in Form eines Kunden Objekts siehe kunde_def php USER_BESTELLUNG php getallKunden Beschreibung DA Gibt in einem Array von Kunden Objekten alle Kunden zur ck Argumente keine R ckgabewert Array mit Kunden Objekten siehe kunde_def php USER_BESTELLUNG php newKunde phpeppershop dokumentation sdw Seite 74 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Modul PHP Funktionen Userseitiges Bestellungswesen Beschreibung DA F gt der Datenbank einen neuen Kunden hinzu betroffene Tabellen kunde be stellung_kunde Dabei wird auch eine neue Kunden_ID berechnet siehe Kapi tel Security Kunden ID Kapitel 2 1 6 Argumente Ein Kunde in Einzelteilen vom Formular her Kunden_ID Session_ID Kunden_Nr Anrede Vorname Nachname Firma Abteilung Strasse Postfach PLZ Ort Land Tel Fax Ema1l Einkaufs volumen Login Passwort gesperrt temp Attribut1 Attribut2 Attribut3 Attr but4 Attributwert1 Attributwert2 Attributwert3 Attr butwert4 R ckga
240. undbilder der drei Frames im Administrationstool ndern Diese Grafiken werden in eigens daf r vorgesehenen Dateien in den Verzeichnissen lt shopdir gt shop Buttons und lt shopdir gt shop Bilder gespeichert Um die f r das Backup notwendigen Befehle eingeben zu k nnen ffnet man eine Telnet oder besser eine SSH Konsole zum betreffenden Webserver Wir schlagen vor ein Backupverzeichnis ausserhalb des Webverzeichnisses anzulegen und dort die Backupdaten zu hinterlegen Wenn man regelm ssig Backups anlegen will was wir als sehr sinnvoll erachten empfiehlt es sich hier eine bezeichnende Verzeichnis Namenssge bung zu benutzen Darin erstellt man folgende Verzeichnisse mkdir shopbackup mkdir shopbackup Bilder mkdir shopbackup Buttons mkdir shopbackup Datenbank Dann kopiert man die Shopbuttons Shopbilder und Datenbank SQLs Dazu geht man zuerst ins Shopverzeichnis und gibt folgende Befehle ein Cp 7shop Bilder lt Pfad nd Backupverzeichnis gt Bilder EB 8h0P BuLt 8157 lt PFad und Back pverzeichnis gt Buttons cp shop database lt Pfad und Backupverzeichnis gt Datenbank 3 2 4 Backup der Shop Datenbank von Hand Ein Backup einer MySQL Datenbank l sst sich am einfachsten ber das mitgelieferte MySQL Tool mysqldump erledigen Es befindet sich im Unterverzeichnis bin der MySQL Datenbank Das Backup der Shopdatenbank wird wie folgt ausgef hrt mysqldump c u lt Usernam
241. ung Java Script mouseover down out gif Java Skript Template erstellt welches dann einfach in Shop integriert werden kann dy namische Buttonsets werden damit m glich Scrollen im Topframe unterbunden CSS File amp Frameset Charset 8859 1 im Mailversand erg nzt Expiring Datum f r Cache auf 1 1 1971 korrigiert PLZ nun auch alphanumerisch USA m glich LAMPS Dokumentation erstellt Eingabesicherheit m Installationsscript erh ht Deinstallationsscript erstellt Do 20 September 01 e Konzept Layoutmanagement erstellt Dokumentation Installations Deinstallationsscript vyellowpay Anwendungskonzept angeschaut gt Implementation sollte kein Problem sein Preis an Orbit abkl ren e Bugs in Installationsscript behoben e Beginn mit Layoutmanagement Dokumentation Einrichten eines Projekts auf SourceForge Fr 21 September 01 Dokumentation Einrichten eines Projekts auf SourceForge e Layoutmanagement e Parser f r CSS File Handling entwickelt phpeppershop dokumentation sdw Seite 154 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 e CSS Template mit Platzhalter Tags erstellt Mo 24 September 01 Artikel Update Funktion neu programmiert e CSS Layout Management Di 25 September 01 e Gleicher Artikel mit verschiedenen Varianten und Optionen in Warenkorb e CSS Layout Management Mi 26 September 01 e Ganzer Tag Orbit Comdex Besuch Case Study Adori Web
242. ung kommen wer den legten wir dir Priorit t ganz klar auf den Shop selbst Wir behoben die beiden letzteren M ngel und entschlossen uns als Hinweis in de Bedie nungsanleitung f r den Administrator zu schreiben dass das Kategorienmanagement viel leicht etwas verwirrend sein kann wenn man eine Unterkategorie in eine Kategorie einf st die keine weiteren Unterkategorien enth lt 1 7 2 Extremwerte Test Wir stellten bei vielen anderen Webshops fest dass sich komische Effekte ergaben wenn man n Formularfeldern gewisse Sonderzeichen einf gte Dies wollten wir unbedingt verhindern Wir erstellten einen ziemlich gemeinen Teststring der so ziemlich alle erdenklichen Sonder zeichen und Sonderzeichen Kombinationen enth lt w l 1 SS lt abc gt s amp 012 ABC Wir verwendeten darauf ziemlich viel Zeit um den Shop komplett Sonderzeichen f hig zu machen Schlussendlich freuten wir uns als wir folgendes iz zu sehen bekamen Fihan Miret Isternet Eapiee 1 Ges putem Age poorer Eine 1 Mh 3350 AHA IER P label i a 012 ABC em CHIC er ar We AAGU Dan 185 H lt abe gt ERE 012 ABC name Sie SFr 3939593993 D ET HS KE ch Sat BizjaBc beschreibung Weitere Informationen TH C larget news 9807 Alan 85 abee Varmare P BAI AA Ga abe AT Pe 012 ABC var 1 Aufpreis SFr 99959300 C aean AA AYEGE T abc OAE DAAC vard Aufpreis SFr Ge Optionen Baer Aabe EATA 012
243. unkte 1 Wird eine Unterkategorie in einer Kategorie erstellt in der noch keine Unterkategorien enthalten sind so wird dem Administrator mitgeteilt er k nne w hlen wo die Unterka tegorie eingef gt werden soll obwohl eigentlich gar keine Auswahlm sglichkeit besteht SHOP ADMINISTRATION Heue Unterkateg ne in der Kategorie WA erste en Unterkategonerame freue Interkategarie 2 Dr ckt man nach dem Absenden der Bestellung den Zur ck Button des Browsers und dann nochmals auf Bestellung absenden wird erneut ein Best tigungs E Mail versendet und eine Fehlermeldung wird an den Browser ausgegeben A SEH ee ee deg ULB Errar Roe e die Beniel nich dem Kunden mmsisan DO Io ie eg an Kunde 3 Es ist irritierend dass nach dem Dr cken des Bestellung absenden Knopfs noch die All gemeinen Gesch ftsbedingungen angezeigt und akzeptiert werden m ssen Wenn man den Knopf Bestellung absenden dr ckt sollte man davon ausgehen k nnen dass die Bestel lung unmittelbar danach auch abgesendet wird phpeppershop dokumentation sdw Seite 19 von 169 2001 R Glanzmann amp J Fontanil 15 November 2001 I Cruise r 281 a LENS E Ketakt dpkdts zc TA a ee a EE Er SE Edi Leider hatten wir nicht mehr die Zeit alle drei M ngel zu beheben Da wesentlich mehr Leute mit dem Shop selbst als mit dem Administrationsbereich in Ber hr
244. unter seiner auszugsweisen Verwen dung zusammengestellt worden sind auszu ben Ferner bringt ein einfaches Zusammenstellen eines anderen Werkes das nicht auf dem Programm basiert zusammen mit dem Programm oder einem auf dem Programm basierenden Werk auf ein und dem selben Speicher oder Bertriebsmedium das andere Werk nicht in den Anwendungsbereich dieser Lizenz 3 Sie d rfen das Programm oder ein darauf basierendes Werk gem Paragraph 2 als Objectcode oder in ausf hrbarer Form unter den Bedingungen von Paragraph 1 und 2 vervielf ltigen und verbreiten vorausgesetzt dass Sie au erdem eine der fol senden Leistungen erbringen a Liefern Sie das Programm zusammen mit dem vollst ndigen zugeh rigen maschinenlesbaren Quelltext auf einem f r den Datenaustausch blichen Medium aus wobei die Verteilung unter den Bedingungen der Paragraphen 1 und 2 erfolgen muss Oder b Liefern Sie das Programm zusammen mit einem mindestens drei Jahre lang g ltigen schriftlichen Angebot aus jedem Drit ten eine vollst ndige maschinenlesbare Kopie des Quelltextes zur Verf gung zu stellen zu nicht h heren Kosten als denen die durch den physikalischen Kopiervorgang anfallen wobei der Quelltext unter den Bedingungen der Paragraphen 1 und 2 auf ei nem f r den Datenaustausch blichen Medium weiter gegeben wird Oder c Liefern Sie das Programm zusammen mit dem schriftlichen Angebot der Zurverf gungstellung des Quelltextes aus das Sie s
245. ute haben uns empfohlen Vorauskasse als Zahlungsmethode zu implementieren Wir nahmen uns das zu Herzen Bei Vorauskasse ist es praktisch wenn man die Kontoin formationen gleich mit angeben kann Bei der Nachnahmezahlung haben wir noch eine in den Versandkosten getrennt einstellbare Nachnahmegeb hr eingef hrt Man kann die Kosten auf diese Weise f r den Kunden trans parent aufstellen Was wenn ein Kunde nur einen Gratiskatalog bestellt Wir haben f r Bestellungen deren Artikeltotal CHF 0 00 betr gt eine Spezialbehandlung implementiert Es werden dann kei nerlei Versandkosten und Mindermengenzuschl ge berechnet 2 8 2 Kreditkarten Wir haben Kreditkarten als Zahlungsmittel implementiert weil sie allen Unkenrufen des Datenschutzes wegen zum Trotz eine oft anerkannte und weit verbreitete Zahlungsart dar stellen Weiter kann der Shopadministrator vor der Auslieferung der Bestellung an den Kunden bei den Kreditkartenanbietern verifizieren ob er sein Geld auch erhalten wird Diese Garantie hat er bei einer Zahlung auf Rechnung nicht Shop intern abgewickelte Kreditkartenzahlung Bei einer Shop internen Kreditkartenzahlung werden die Kreditkartendaten im PhPepper Shop erfasst und per E Mail an den Shopadministrator gesendet Wir haben diesen Weg der Kreditkartenzahlung implementiert dam t man das g nstigst m gliche Kreditkartenhand ling benutzen kann Es wird nur ein Mailorder Vertrag mit dem entsprechenden Kreditkar tenanbieter
246. vorhanden ist Wir haben uns entschieden nicht nur auf das mehrfache Vorhandensein hinzuweisen son dern die Mehrfachkategorie Anzeige gleich mit entsprechenden Links auszustatten Wir ha ben daf r die Klasse Artikelmitkategorien artikel_def php eingef hrt und die Funktion getgesuchterArtikel entsprechend erweitert Auf diese Weise kann der Shopbenutzer be quem in die Kategorie springen in der er den Artikel erwartet h tte Beispielsanzeige Dieser Artikel ist in mehreren Kategorien vorhanden Intel gt Prozessoren AMD gt Prozessoren Inkrementangabe Eine Suche kann sehr aufw ndig sein Es wird eine Query mit mehreren konjunktiv ver kn pften LIKE Bedingungen auf die Attribute Name und Beschreibung aller Artikel in der Datenbank ausgef hrt Wenn man die Suchbegriffe nicht geschickt ausw hlt kann es gut sein dass man eine enorm grosse Zahl an Treffern erh lt Dies belastet einerseits die Daten bank sie muss alle Daten auslesen und andererseits de Kundenverbindung wel alle Daten b s zum Shopbenutzer bertragen werden m ssen Um diesem Problem Herr zu werden ha ben wir die Anzahl gleichzeitig angezeigter Suchresultate auf eine in den allgemeinen Shop einstellungen konfigurierbare Anzahl beschr nkt Der Funktion getgesuchterArtikel wird ein Startwert und eine Anzahl bergeben Bei der ersten Anzeige ist der Startwert auf 0 gesetzt Dem Shopbenutzer wird sobald es mehr Tref fer gibt als die konfiguri
247. w sagt von wo high sagt wieviele Artikel auf einmal ab low ausgelesen werden sollen Argumente Artikel_ID INT lowlimit INT highlimit INT R ckgabewert Array Key Artikel Objekt Wert Kategorienarray USER_ARTIKEL_HANDLING php getallKategorien Beschreibung DA Liefert ein Array mit allen Kategorien als Kategorie Objekte zur ck Argumente keine R ckgabewert Array mit Kategorien welche ihre Unterkategorien ent halten USER_ARTIKEL_HANDLING php getKategorie_eines_Artikels Beschreibung Liefert den Kategorienamen eines gegebenen Artikels Wenn die Katego rie KEINE Unterkategorie ist so ist der Parent Kategorie Name gleich dem Kategorienamen et Argumente Artikel_ID INT R ckgabewert Array Key Kategoriename String Wert Parent Kategoriename String getKategorielD_eines_Artikels Beschreibung Liefert die Kategorie_IDs der Kategorien n welchen der angegebene Ar tikel eingeteilt ist DA Argumente Artikel_ID INT R ckgabewert Array Kategorie_IDs USER_ARTIKEL_HANDLING php getKategorie Beschreibung DA Liefert als Objekt eine Unter Kategorie Argumente Kategorie_ID INT R ckgabewert Ein Unterkategorie Objekt USER_ARTIKEL_HANDLING php getvar_opt_preise Beschreibung Datei Liefert die Texte und Preise aller Optionen und Variationen eines Artikels Diese Funktion wird ben tigt da nie Preisinformationen von Seite zu Seite
248. weigungen beinhalten Nach jeder HTML Page ruft man je nach Workflow sich selbst PHP_SELF oder eine andere PHP Da Lei auf und bergibt die darstellen Variable mit einer Nummer Je nach Nummer kommt man so in einer Datei bei uns Modul genannt an verschiedene Orte von wo aus dann PHP Funktionen aufgerufen werden welche dann auf den Daten operieren Ein weiterer Unterschied zwischen lokalen Programmen und Webanwendungen ist dass man bei lokalen Programmen meistens ereignisgesteuerte Programm Elemente innerhalb einer dargestellten View Seite hat Hier muss man zuerst einmal ziemlich umdenken In Web anwendungen arbeitet man prim r mit der Seitenbeschreibungssprache HTML HTML ist nicht daf r entwickelt worden ereignisgesteuerte Operationen starten zu k nnen HTML Seiten sind in sich statisch Wenn ich also z B ein Texteingabefeld f r einen Artikelpreis habe so kann ich nicht nach der Eingabe eines Textes pr fen ob dieser Text auch alpha nummerische Zeichen beinhaltet Die Auswertung mittels PHP kann fr hestens nach Aufruf einer weiteren HTML Seite erfolgen und ist somit f r gewisse Aufgaben zu starr Hier setzt JavaScript an Mit JavaScript kann man innerhalb einer HTML Page dynamische ereignis gesteuerte Elemente benutzen phpeppershop dokumentation sdw Seite 48 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Ein weiteres Problem ist die Verzweigung des Workflows je nach Benutzereingabe auf der gle
249. wird die Funktion payment_extern Pay aufgerufen Ihr wird im Argument eine Pay mitgegeben siehe auch pay_def php Darin befinden DA sich alle n tigen Informationen um eine Zahlung durchzuf hren Weiter geht es bei darstellen 4 USER_BESTELLUNG_1 php T phpeppershop dokumentation sdw Seite 89 von 169 2001 R Glanzmann amp J Fontanil Z W 15 November 2001 Beschreibung DA Wenn wir eine interne Kreditkartenzahlung haben so wird uns die Va riable GNUPG mit dem Wert 1 von darstellen 5 her bergeben Wir berpr fen also zuerst die Kreditkarten Nummer Falls sie falsch ist oder das Ablaufdatum ung ltig ist senden wir sie zur ck und der Kunde soll sie nochmals eingeben Zur Erkennung geben wir das Flag Kreditkarten_Nummer_ungueltig 1 mit Wenn alles gut ging geht es weiter bei darstellen 4 USER_BESTELLUNG_1 php 4 Beschreibung DA Datei Unterscheidung des Workflows je nach Bezahlungsart Vorauskasse Rechnung Nachnahme AGB akzeptiert weiter Interne Kreditkartenzahlung Nummer validieren GNU PG enable weiter Externe Kreditkartenzahlung E Mail String zur cklesen weiter Bestellung an Kunden und Shopinhaber mailen Danke an Shopuser ausgeben mit Kontaktierungsm glichkeit bei Fragen Bestellung abschliessen Alle alten Session ID s aus Datenbank l schen pop_up php pop_up_admin php Beschreibung DA Datei Ein grosses Bild eines
250. zenarray Array of enum Y N Handlingarray Array of enum Y N R ckgabewert true bei Erfolg Datei Funktionsname SHOP_LAYOUT php mkindexphp Beschreibung Erstellt die Datei index php aus dem Template File indextemplate txt Tags welche im Templatefile in Doppelklammern lt lt gt gt stehen werden durch die entsprechenden Eintr ge n der Datenbank Tabelle cssfile ersetzt dee Argumente keine R ckgabewert false wenn ein Fehler aufgetreten ist SHOP_LAYOUT php mkcssfiles Beschreibung Erstellt die CSS Dateien shopstyles css in den Verzeichnissen shop shop Frameset und shop Admin aus dem Templatefile csstemplate txt Tags welche im Templatefile in Doppelklammern lt lt gt gt stehen werden durch die DA entsprechenden Eintr ge n der Datenbank Tabelle cssfile ersetzt Argumente keine R ckgabewert false wenn ein Fehler aufgetreten ist SHOP_LAYOUT php htmltext phpeppershop dokumentation sdw Seite 85 von 169 2001 R Glanzmann amp J Fontanil ZW 15 November 2001 Beschreibung DA Gibt eine Tabelle im HTML Format aus die folgende Elemente enth lt R G B Editierfelder f r Schriftfarbe dropdown Box f r Schriftgewicht dropdown Box f r Schriftgr sse dropdown Box f r Text Decoration Die Parameter werden aus der Datenbank ausgelesen und direkt in die angezeigten Felder eingef llt Argumente id gt identifier in datenbank label gt B
251. zum download freigegeben Wir m chten hier aber nochmals darauf hinweisen dass unsere Anleitung nicht allgemein g ltig ist Nun kann man auf den Stern links neben dem Button Warenkorb anzeigen klicken Hier kommt man in den Administrationsmodus Der Stern l sst sich im Layout Management na t rlich abschalten aber zu Beginn wenn man noch fters in den Administrationsmodus geht ist er durchaus praktisch Zuerst sollten alle Angaben in den allgemeinen Shopeinstellungen berpr ft und gegebenenfalls angepasst werden Insbesondere sollte man hier die Adressin formationen und die Allgemeinen Gesch ftsbedingungen korrekt ausf llen Danach kann man die Versandkostensettings seinen Bed rfnissen anpassen Alle weiteren Einstellungen k nnen m Kapitel 3 3 2 Bedienung des Administrationstools nachgelesen werden 3 1 5 Deinstallation des Shops Um einen PhPepperShop wieder sauber zu deinstallieren m ssen alle Shop Dateien im Da teisystem entfernt und die Datenbank gel scht werden Auch zur Deinstallation haben wir ein automatisiertes Tool in Perl geschrieben Um die Deinstallation zu starten muss man im Shopverzeichnis folgenden Systemaufruf starten perl remove pl Nachdem man best tigt hat dass man den Shop auch wirklich deinstallieren will kann man angeben ob auch die Datenbank User und Shop Daten in der Datenbank deinstalliert wer den soll Bei einem Update des Shops kann man so den Shop deinstallieren und die Daten
252. zur ck gt A Z zuchen Giravorten Evera iD Adresse ja http 160 85 138 78 glanzret phpeppershop shop Admin SHOP _LAYOUT php DI Wechseln zu rte ZS A SHOP ADMINISTRATION Layout Management In dieser Maske k nnen Sie das Aussehen ihres Shops einstellen Mit den Eingabefeldern R G und B definieren Sie die Farbe nach dem Muster Rot Gr n Blau Sie k nnen in jedes der Farbfelder einen Wert zwischen 0 und 255 eingeben z B weiss R 255 G 255 B 255 schwarz R 0 G 0 BD Sie haben f nf Eingabefelder f r das Fontset zur Verf gung Geben Sie in dem Feld 1 Priorit t die Schriftart ein die als erste Priorit t zur Anzeige des Shops verwendet werden soll 2 Priorit t ist die Schriftart die verwendet wird wenn der Surfer die unter 1 Priorit t eingetragene Schriftart auf seinem Computer nicht installiert hat Und so weiter bis zur 5 Priorit t Einstellungen Top Frame Hintergrundfarbe BERN ch Bms Hintergrundbild H he Top Frame 65 Pixel Was soll oben links angezeigt werden Shopname C Shoplogo nichts Administrationsstern einblenden ja Administrationsstern anzeigen neben den Knopf Warenkorb C nein Administrationsmodus nur ber shopname shop Admin aufrufbar Einstellungen Left Frame Einstellungen Main Frame Hintergrundfarbe RT cf Bliss Hintergrundfarbe IRR12 GJ212 BR12 3 Hintergrundbild E Hintergrundbild I Breite Left Frame

Download Pdf Manuals

image

Related Search

Related Contents

MODELS: HPWB30 HPWB36 HPWB48  エンジニアリング・イントロダクション  ネットラジオ 予約録音 - IRT Corporation  QUITA TINTAS  取扱説明書 - マックスレイ  GSC 3,6 GSCT 3,6 G S  Cuisinart RK-17 User's Manual  52039356 EDESA YNTB 50x50 GAS.IB (Es.).cdr  VAPORETTO 1500_5365_1H05  RESMED - Pdfstream.manualsonline.com  

Copyright © All rights reserved.
Failed to retrieve file