SCHLECKI - ade!
Das Strato-Shop-cgi: So geht's noch besser!


Wer ein PowerWeb-Paket A oder S bei Strato hat, kann seit Oktober 2004 nun auch eigene Perl-Skripte nutzen (und PHP und SSI und ab PowerWeb S auch SSL und eine MySQL Datenbank). Was also liegt nun näher, als sich das Original-Shopping-Skript zu besorgen, zu verbessern und zu nutzen, völlig unabhängig von Strato?

Gesagt, getan, und hier die Vorgehensweise dazu, mit der Sie Ihre bereits vorhandenen Shop-Dateien auf die neue (und bessere) Situation anpassen können. Vielleicht aber finden Sie das hier Beschriebene so gut, daß Sie dieses Shop-Skript nun doch für Ihre (Strato-)Domain einsetzen wollen? Wer weiß - das müssen Sie entscheiden!

Im Folgenden wird beschrieben:

Das Original-Skript wurde in der c't Heft 15 im Jahre 1997, S.290, vorgestellt.
Download der benötigten (Original-)Dateien als .zip-Datei Zip Zip-Datei (ca. 14 KB).
Link zum dazugehörenden Artikel:  http://www.heise.de/ct/97/15/290 - mittlerweile kostenpflichtig.
Bitte bei Bedarf melden!

Nun denn, wohlgemut ans Werk.

Vorbemerkungen

Die folgenden Ausführungen basieren auf der Annahme, daß Sie die Datei shopping.cgi aus der oben angegebenen .zip-Datei in ein Verzeichnis /cgi-bin/ auf Ihrem PC entpackt haben, und alle anderen Dateien bereits auf Ihrem PC in einem Verzeichnis /shop/ haben (als Bestandsnutzer des Strato-Skriptes). Besser allerdings ist es, die anderen Dateien der .zip-Datei in ein neues Verzeichnis /testshop/ zu entpacken.
Im Folgenden gehe ich nicht auf Veränderungen der Shop-Dateien ein, die Sie gemacht haben, um den Euro-Workaround einzubauen, den ich in dieser Beschreibung empfohlen habe; der Ausgangspunkt sind die Originaldateien, wie sie von der c't und (fast identisch) von Strato geliefert werden.
Als Editor empfehle ich den Freeware HTML-Editor Phase 5.3 von Hans-Dieter Berretz, der unter www.ftp-uploader.de heruntergeladen werden kann. Besonders geeignet für die im Folgenden beschriebenen Aufgaben am HTML- und Perl-Code ist die Funktion "Dateiübergreifend Suchen und Ersetzen (F11)" unter Tools.

Einen Vorteil jedoch darf man nie vergessen: ist Strato nicht verfügbar, sind es auch nicht die Skripte. Doch umgekehrt kann Frust entstehen: da ist Strato on-line, aber das verlinkte Skript einer anderen Site nicht. Beispiele hat man vielleicht schon selbst beim Surfen erlebt: Gästebücher, die nicht verfügbar sind oder on-line Shops, die temporär nicht erreichbar sind (das gilt auch für kostenlose Strato-Shops, oder ???)

Wenn Sie mit cgi-Skripten von Strato arbeiten, so sollten Sie zunächst die Anleitungen dazu genau lesen und befolgen. Die Links sind: http://www.strato.de/full/service/kundenservice.html bzw. direkt, ohne Login in Ihren Servicebereich, http://www.strato.de/service/allgemein/cgi/.
Wenn Sie Probleme haben, schauen Sie doch erst mal unter http://stratofaq.ig4.de/ nach. Auch ein Blick ins Forum unter http://www.strato-forum.de kann nie schaden.
Eine gute non-Strato-Unterstützung für viele Strato-Skripte bietet http://www.cgisupport.de/.
Und wenn das Problem immer noch nicht gelöst ist, oder Sie nicht suchen wollen, oder aus welchen Gründen auch immer: Sie können ja auch ein eMail an den Support aus Ihrem Kundenbereich schicken....

Wenn dann alles nichts hilft, bleibt dann nur noch die Selbsthilfe.

Äh ???

JA, Sie müssen unter Umständen tricksen!!!!

So ging es jedenfalls mir, als ich endlich vom Strato-Support die Bestätigung erhielt, daß das Shop-cgi derzeit (?) NICHT auf non-.de-Domains läft. Genauer gesagt: die eMail-Funktionalität ist gestört (!?) - es kommen keine Bestell-eMails an!
Danach wurde ich dann mehrere Monate um Geduld gebeten, daß das Problem in Arbeit ist und die Lösung noch ein wenig dauert - bla-bla-bla.

RATSCH ... - das war mein Geduldsfaden, der riß, zumal mein Auftraggeber eine Lösung bis Mai 2002 haben mußte!

Und da kam mir auf einer Autofahrt die Idee: wenn das Skript bis zum eMail-Versand läuft, dann muß es doch möglich sein, das eMail-Skript einzubauen, das ja klappt. Nach einigen Tests fand ich die Lösung! Hier der Trick:

  1. Sie erstellen die Shop-Seiten wie angegeben.

  2. Die Datei order_tpl.html ändern Sie wie folgt ab:
    HTML Source Code Anm.
    ...
    
    <!-- <form action="shopping.cgi?sendOrder" method="POST"> -->
    <form action="/cgi-bin/mailmanager.pl" method="POST">
    
    <input type=hidden name="redirect" value="http://Ihre_Strato_Domain/shop/danke.html"></input>
    <input type=hidden name="recipient" value="bestell_eMail_Adresse@Ihre_Strato_Domain"></input>
    <input type=hidden name="subject" value="on-line Bestellung"></input>
    <input type=hidden name="print_config" value="email,realname"></input>
    
    ...
    
    <code><b><input type="text" name="realname" value="<!--NAME1-->" readonly="readonly"></input></b></code><br>
    <code><b><input type="text" name="ADDR1" value="<!--ADDR1-->" readonly="readonly"></input></b></code><br>
    <code><b><input type="text" name="ADDR2" value="<!--ADDR2-->" readonly="readonly"></input></b></code><br>
    <code><b><input type="text" name="email" value="<!--EMAIL-->" readonly="readonly"></input></b></code>
    
    ...
    
    <code><b><input type="text" name="Summe" value="<!--P_SUM_ORD-->" readonly="readonly"></input></b></code>
    
    ...
    
    1
    
    2
    3
    
    4
    5
    6
    7
    
    8
    
    9
    
    
    
    
    10
    
    11
    
    12
    

    Was haben Sie gemacht ? Nun, Sie haben die Elemente wie <!--ADDR1-->, die vom Shop-cgi ersetzt werden, wenn diese Seite aufgerufen wird, als nicht-veränderbare Eingabe-Felder für das eMail-Skript umdefiniert.
    Zwar interpretiert Netscape 4.x das readonly="readonly" nicht, aber der im Cookie enthaltene Wert wird nicht verändert!

  3. Die Datei order_row.html ändern Sie wie folgt ab:
    HTML Source Code Anm.
    ...
    
    <input type="hidden" name="<!--PRODUCT--> | Preis: <!--PRICEPU--> EURO | Anz.: <!--P_PCS_VAL--> | Summe: <!--P_SUM_P_U--> EURO" value=" "></input>
    
    ...
    
    1
    
    

    Hier wird ein verborgenes Feld pro Bestellposition für das eMail-Skript eingefügt.
    WICHTIG: der Name name= muß eindeutig sein - sonst wird im eMail-Skript nur das erste Feld mit demselben Namen übertragen. Dazu können Sie den Feldnamen aus den Elementen <!--PRODUCT-->, <!--PRICEPU-->, <!--P_PCS_VAL-->, <!--P_SUM_P_U--> beliebig zusammensetzen.
    WICHTIG: der Wert value=" " muß angeben werden; mindestens mit einem Blank.

Das ist alles! Ein Bestellmail sieht dann wie folgt aus:

Formulareintraege von
andreas skript (andreas@hillschmidt.de) am Freitag, 12 April, 2002 um 16:03:04
------------------------------------------------------------------------

email: andreas@hillschmidt.de

realname: andreas skript

ADDR1: teststrasse 66

ADDR2: 12345 stratort

==Buchung== 81 Zauberkurs fuer Erwachsene | Preis: 50.00 EURO | Tln.: 1 | Summe: 50 EURO:

Summe: 50

------------------------------------------------------------------------


Diese Lösung lief längere Zeit als Kursbuchungsbestellsystem des VBW Klarenthal und der VBS Schierstein, beide unter Strato gehostet, bis eine Wiesbaden-weite Lösung für alle Bildungsstätten eingeführt wurde.

Übrigens: dieses Vorgehen löst auch das DM-Problem auf Shops unter .de-Domains ...

Und noch ein Trick:

Mit einem einfachen Kniff ist auch der Mini-Shop in der Lage, ein Bestaetigungs-eMail zu schicken:

1. Der Shop ist auf das mailmanager.pl Script umgestellt, wie auf dieser Seite und in den Strato-FAQ beschrieben (wo Strato den Trick wohl her hat).

2. Das order_tpl.html im Verzeichnis shop/ wird wie folgt geaendert:
im <head>-Bereich werden folgende Zeilen eingefuegt:

<script language="JavaScript">
<!--
var eMail="<!--EMAIL-->";
//-->
</script>

3. Im <body>-Bereich wird die Zeile mit dem recipient (<input type="hidden" name="recipient" value="webmaster@domain.de"> oder aehnlich) komplett ersetzt mit den Zeilen

<script language="JavaScript">
<!--
document.write("<input type=hidden name=recipient value=webmaster@domain.de,"+eMail+"></input>")
//-->
</script>

4. Ferner wird die Zeile <input type="text" name="email" value="<!--EMAIL-->" readonly="readonly"> ersetzt mit den Zeilen

<script language="JavaScript">
<!--
document.write("<code><b><input type=text name=email value=" + eMail + " readonly=readonly></input></b></code><br>")
//-->
</script>

Das wars!

Technischer Hintergrund:

Cool, oder ?

Falls Sie Fragen, Anmerkungen, ... haben: nutzen Sie bitte das Feedback-Formular!

Und: auch diese Seite ist bei Strato gehostet!


zuletzt geändert am 04.01.2012
© 2002 Andreas Schmidt