hotti: Abmahnsicherheit

Moin,

für einen alten Knacker ist es kaum möglich einen Job zu finden. Mir als alten Knacker jedoch ist es gelungen, einen Shop zu programmieren. Ob es gut gelungen ist, hängt vor Allem davon ab, ob der Shop abmahnsicher ist, ansonsten wäre das eine Katastrophe.

Bitte schaut mal drüber, ob das der Fall ist. Zum Anschauen ist ein Login erforderlich auf

dem Gastbereich
Benutzername: gast
Passwort:     gast

Der Shop in diesem Gastbereich ist voll funktional, Bestellungen von hier werden ignoriert, wer gerne testet, darf natürlich auch mal was bestellen. Nach Absenden einer Bestellung kommt das view mit dem Paypal-Button, selbst beim Draufklicken werden noch keine Zahlungen ausgelöst. Es gibt auch eine Bedienungsanleitung, klickbar auf jeder Seite...

Viele Dank im Vorab!!!
Horst Preller

--
Sie: He Du schnarchst ja gar nicht mehr!
Er: Wozu auch, hört mir doch eh keiner zu.
  1. Sorry, der richtige Link

    für einen alten Knacker ist es kaum möglich einen Job zu finden. Mir als alten Knacker jedoch ist es gelungen, einen Shop zu programmieren. Ob es gut gelungen ist, hängt vor Allem davon ab, ob der Shop abmahnsicher ist, ansonsten wäre das eine Katastrophe.

    Bitte schaut mal drüber, ob das der Fall ist. Zum Anschauen ist ein Login erforderlich auf

    dem Gastbereich
    Benutzername: gast
    Passwort:     gast

    Der Shop in diesem Gastbereich ist voll funktional, Bestellungen von hier werden ignoriert, wer gerne testet, darf natürlich auch mal was bestellen. Nach Absenden einer Bestellung kommt das view mit dem Paypal-Button, selbst beim Draufklicken werden noch keine Zahlungen ausgelöst. Es gibt auch eine Bedienungsanleitung, klickbar auf jeder Seite...

    Viele Dank im Vorab!!!
    Horst Preller

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. Sorry, der richtige Link

      Moin Moin,

      mit der Abmahnsicherheit ist das so eine Sache. Man kann auch abmahnen, wenn es nichts zum Abmahnen gibt. Und damit sind auch Leute schon durchgekommen. Also es gibt keine Sicherheit. Der Abmahner entscheidet ob erabmahnen will oder nicht. Die Gründe lassen wir mal außen vor.

      Ich seh kein rechtsichres Impressum.

      Kay

      1. Moin Moin,

        mit der Abmahnsicherheit ist das so eine Sache. Man kann auch abmahnen, wenn es nichts zum Abmahnen gibt. Und damit sind auch Leute schon durchgekommen. Also es gibt keine Sicherheit. Der Abmahner entscheidet ob erabmahnen will oder nicht. Die Gründe lassen wir mal außen vor.

        Die Säcke die!
        Die schreiben neuerdings ja schon Stellen aus.

        Ich seh kein rechtsichres Impressum.

        Danke Dir fürs Angucken!

        Das kommt drauf, wenn der Shop scharfgeschaltet ist.

        Viele Grüße,
        Horst Schnapphansel

  2. hola,

    hat diese checkbox “Den AGB wird zugestimmt” eine Funktion?, denn ich komme zu Paypal auch ohne diese zu aktivieren…

    gruss pp

    1. hi,

      hat diese checkbox “Den AGB wird zugestimmt” eine Funktion?, denn ich komme zu Paypal auch ohne diese zu aktivieren…

      Nicht nachvollziehbar. Wenn Du bis zum Paypal Button gekommen bist, hätte ich eine Order bekommen, habe ich aber nicht.

      Bitte beschreibe das Problem mal etwas genauer.

      Vielen Dank,
      Horst (Großwildjäger)

    2. hat diese checkbox “Den AGB wird zugestimmt” eine Funktion?, denn ich komme zu Paypal auch ohne diese zu aktivieren…

      halt halt halt, Du bist im flaschen Shop. Bitte hier einloggen, Benutzername 'gast' Passwort 'gast'
      Da ist der Neue ;)

      Vielen Dank!
      Horst

  3. Hi there,

    Bitte schaut mal drüber, ob das der Fall ist. Zum Anschauen ist ein Login erforderlich auf

    ich seh zum Beispiel nirgends einen Hinweis auf Cookies, die Du aber zweifelsohne verwendest. Das könnte man, entsprechende niedere Beweggründe vorausgesetzt, vermutlich auch abmahnen...

    1. hi,

      ich seh zum Beispiel nirgends einen Hinweis auf Cookies, die Du aber zweifelsohne verwendest. Das könnte man, entsprechende niedere Beweggründe vorausgesetzt, vermutlich auch abmahnen...

      Wow, danke Dir!!!

      (Datenschutzerklärung nachgebessert, da steht sogar der Name des Cookies drin)

      Viele Grüße vom Horst

      1. Hi there,

        Wow, danke Dir!!!

        (Datenschutzerklärung nachgebessert, da steht sogar der Name des Cookies drin)

        Ich will ja nicht päpstlicher sein als der Papst, aber afaik wäre ein Hinweis in der Datenschutzerklärung bereits zu spät, weil ich ja denke, daß der User mit dem Login (vielleicht aber auch nur jetzt in Deiner Testumgebung, kann man ja nicht wissen;) den Cookie (ohne davon zu wissen) schon akzeptiert hat. Das ist irgendwie inkompatibel mit der EU-Richtlinie diesbezüglich, wobei man aber sagen muss, daß da noch immer herumgestritten wird, wie das zu interpretieren ist. Ich erwähne das nur der Vollständigkeit halber, weil rechtliche Grauzonen idR ein gefundenes Fressen für die Abmahnvollkoffer sind. Keine Ahnung, wie das die anderen Shops machen, ich löse das bei meinen anders, bin aber zum Glück auch in einem Land tätig, wo es zum Glück kein Abmahnunwesen gibt...;)

        1. hi,

          Ich will ja nicht päpstlicher sein als der Papst, aber afaik wäre ein Hinweis in der Datenschutzerklärung bereits zu spät, weil ich ja denke, daß der User mit dem Login (vielleicht aber auch nur jetzt in Deiner Testumgebung, kann man ja nicht wissen;) den Cookie (ohne davon zu wissen) schon akzeptiert hat. Das ist irgendwie inkompatibel mit der EU-Richtlinie diesbezüglich, wobei man aber sagen muss, daß da noch immer herumgestritten wird, wie das zu interpretieren ist. Ich erwähne das nur der Vollständigkeit halber, weil rechtliche Grauzonen idR ein gefundenes Fressen für die Abmahnvollkoffer sind. Keine Ahnung, wie das die anderen Shops machen, ich löse das bei meinen anders, bin aber zum Glück auch in einem Land tätig, wo es zum Glück kein Abmahnunwesen gibt...;)

          Ok, jetzt ist der Hinweis auf jeder Seite, ganz unten aber sichtbar.

          Vielen Dank für Deine Hinweise!!!!

          Horst

          PS: Wenn Du Lust hast, gerne mehr ;)

        2. Hallo

          Fressen für die Abmahnvollkoffer

          Kann man eigentlich für das Wort "Abmahnvollkoffer" abgemahnt werden?

          Gruß
          Kalk

          1. Tach!

            Kann man eigentlich für das Wort "Abmahnvollkoffer" abgemahnt werden?

            Man kann quasi für alles abgemahnt werden. Die Frage, die sich daraufhin der Abgemahnte stellen muss ist, ob das ein Richter auch so sieht oder ob die Abmahnung zu Unrecht erfolgt ist und man einen eventuellen Rechtsstreit überstehen würde.

            Im vorliegenden Fall muss man zudem noch wissen, was genau unterlassen werden soll. Die allgmeine Verwendung des Wortes dürfte sich nicht untersagen lassen, wohl hingegen der Bezug auf eine konkrete Person, wenn dabei (Persönlichkeits-)Rechte der so titulierten Person betroffen sind.

            dedlfix.

            1. [latex]Mae  govannen![/latex]

              Man kann quasi für alles abgemahnt werden. Die Frage, die sich daraufhin der Abgemahnte stellen muss ist, ob das ein Richter auch so sieht oder ob die Abmahnung zu Unrecht erfolgt ist und man einen eventuellen Rechtsstreit überstehen würde.

              Das ist leider die Basis dieser Drecks-Abmahnindustrie. Die meisten Betroffenen können sich einen Prozess weder zeitlich noch finanziell erlauben, auch wenn die Chancen meist recht gut für sie stehen würden. Also wird gezahlt.

              Stur lächeln und winken, Männer!
              Kai

              --
              var jQuery = $(hit);
              „Die Borg würden nicht mal Spaß verstehen, wenn sie einen Vergnügungspark assimiliert hätten!” (B'Elanna Torres)
              SelfHTML-Forum-Stylesheet
          2. hi,

            Fressen für die Abmahnvollkoffer

            Kann man eigentlich für das Wort "Abmahnvollkoffer" abgemahnt werden?

            Idee: Dieses wunderschöne Wort als 'Unwort des Jahres 20xx' beim Institut für Unwortsverwaltung einreichen. Dann diesen Koffer im Koffer-Online-Shop preisgekrönt vermarkten ;)

            Horst Preller

          3. Hi there,

            Kann man eigentlich für das Wort "Abmahnvollkoffer" abgemahnt werden?

            Bestimmt, wenn man konkret jemanden benennt. Wenn sich hingegen ein beliebiger davon angesprochen, gemeint oder gar betroffen fühlt und deshalb abmahnen möchte, dann sollte es leichtfallen, den Wahrheitsbeweis anzutreten. Denn - wäre er kein Abmahnvollkoffer, würde er sich ja schliesslich nicht betroffen fühlen;) Ein juristischer circulus vitiosus...

  4. hi,

    siehe Thema. Währenddem fleißige Helfer hier sich meiner Sache angenommen haben, war ich natürlich auch nicht untätig und habe zusammen mit meiner Frau die Risiken dieses Unternehmens abgewägt und besprochen. Ich werde mich in dieses Abenteuer stürzen, meine Situation lässt mir keine andere Wahl.

    Programmiertechnisch ist eine Shopsoftware eine sehr komplexe Herausforderung und erfordert sehr viel Überlegungen, was den ganzen Aufbau betrifft. Einfach drauflos programmieren geht 100%ig ins Knie.

    Ebenso ist eine formale Modellierung in Objekte und Klassen aus der Sicht einer realen Verkaufseinrichtung nicht ausreichend, wenn nicht sogar ein völlig falscher Ansatz. Vielmehr muss die Modellierung und Abbildung eines Shopsystems aus der Sicht des Programmaufbaus erfolgen, so dass daraus eine überschaubare Klassenhierarchie entsteht, die flach bleibt und sich nicht in zahllosen Dateien verliert. Konkret heißt das, dass formal auf OOP abgebildet ein realer Shop aus mehreren Klassen bestehen kann, beispielsweise seien der Verkaufsraum und der Warenkorb verschiedene Klassen und mit Sicherheit gäbe es noch mehr Klassen, die eine wunderschöne Hierarchie ergeben würden, worüber sich hier warscheinlich ausnahmslos alle sehr trefflich streiten könnten ;)

    Für einen praktischen Code/Programmaufbau ist das jedoch unbrauchbar, es ergeben sich schwer überschaubare Abhängigkeiten zwischen den einzelnen Klassen, die mit Vererbung und Delegation nur unnötig kompliziert gelöst werden können.

    Es sind gerade auch die Armeen von Vollpfostenabmahanwälten, die heutzutage eine besondere Anforderung an einen Webshop stellen: Der Anwender muss schnell reagieren können auf Veränderungen, die sich aufgrund neuer Gesetze ergeben.

    Programmiertechnisch ein absolutes Muss ist das MVC-Pattern, ohne dem und ohne ein brauchbares Template-System geht da gar nix. Für einen Shop, der beim Normally-ISP im reinen CGI-Betrieb laufen soll, ist das der Killer, mit mir bekannten in Perl brauchbaren Template-Engines bricht da die Performanze gnadenlos ein.

    Mit PHP sieht das schon besser aus, auch wenn ich PHP anfangs nur spöttisch belächelt habe: Hier kommt die Template-Engine mit. Aber auch hier gilt es, Programmlogik und Template-Prozesse sauber zu trennen, nur so ist das zum Einen beherrschbar und zum Anderen auch mit Freude an der Arbeit verbunden ;)

    So, genug gelabert. Vielen Dank für Eure Aufmerksamkeit und die Hilfe natürlich.

    Viele Grüße,
    schönen Sonntag,
    Horst H.

    1. Om nah hoo pez nyeetz, hotti!

      ... und habe zusammen mit meiner Frau die Risiken dieses Unternehmens abgewägt und besprochen. Ich werde mich in dieses Abenteuer stürzen, meine Situation lässt mir keine andere Wahl.

      Dem entnehme ich, dass du damit Geld verdienen musst/möchtest. Ich will dir ja nicht zu nahe treten, aber ich erkenne kein Geschäftsmodell.

      Matthias

      --
      1/z ist kein Blatt Papier.

      1. hi,

        ... und habe zusammen mit meiner Frau die Risiken dieses Unternehmens abgewägt und besprochen. Ich werde mich in dieses Abenteuer stürzen, meine Situation lässt mir keine andere Wahl.

        Dem entnehme ich, dass du damit Geld verdienen musst/möchtest. Ich will dir ja nicht zu nahe treten, aber ich erkenne kein Geschäftsmodell.

        Kleine Geschichte gefällig? Wendezeit um 1990, meine Fau arbeitlos, ich arbeitslos, das Wort 'Geschäftsmodell' ein Fremdwort. Trotzdem haben wir einen Shop betrieben, waren unterwegs mit dem Trabi, mit einem Klapptisch und mit selbstgeschneiderten Kindersachen, die wir auf den Marktplätzen halbverfallener Städte in Thüringen verkauften. Reich sind wir damit nicht geworden, aber wir haben überlebt und es war eine wundervolle Zeit.

        Keep on movin

        1. Om nah hoo pez nyeetz, hotti!

          ... und habe zusammen mit meiner Frau die Risiken dieses Unternehmens abgewägt und besprochen. Ich werde mich in dieses Abenteuer stürzen, meine Situation lässt mir keine andere Wahl.
          Dem entnehme ich, dass du damit Geld verdienen musst/möchtest. Ich will dir ja nicht zu nahe treten, aber ich erkenne kein Geschäftsmodell.
          Trotzdem haben wir einen Shop betrieben, waren unterwegs mit dem Trabi, mit einem Klapptisch und mit selbstgeschneiderten Kindersachen, die wir auf den Marktplätzen halbverfallener Städte in Thüringen verkauften.

          Dennoch bleibt: Du möchtest eine Webshopsoftware verkaufen. Wer sollen deine Kunden sein? Es gibt doch genügend Shopsoftware von größeren Unternehmen. Wie willst du das als einzelner stemmen? Warum sollte gerade ich deine Software verwenden? Diese Fragen habe ich dir bei deinem Board auch schon mal gestellt. Wie oft hast du die Boardsoftware verkauft? Konntest du sie wenigstens kostenlos anbieten? Wird sie eingesetzt? Aber immerhin: einen Namen habe ich für dich:

          sHop - scripted by Hotti with php

          Meine Empfehlung: lass es.

          Matthias

          --
          1/z ist kein Blatt Papier.

          1. hi,

            ... und habe zusammen mit meiner Frau die Risiken dieses Unternehmens abgewägt und besprochen. Ich werde mich in dieses Abenteuer stürzen, meine Situation lässt mir keine andere Wahl.
            Dem entnehme ich, dass du damit Geld verdienen musst/möchtest. Ich will dir ja nicht zu nahe treten, aber ich erkenne kein Geschäftsmodell.
            Trotzdem haben wir einen Shop betrieben, waren unterwegs mit dem Trabi, mit einem Klapptisch und mit selbstgeschneiderten Kindersachen, die wir auf den Marktplätzen halbverfallener Städte in Thüringen verkauften.

            Dennoch bleibt: Du möchtest eine Webshopsoftware verkaufen.

            Da liegt ein Missverständnis vor. Was ich anbiete ist ein "Shop zu Miete", nicht jedoch die Software.

            Hotti

      2. Hallo,

        ... und habe zusammen mit meiner Frau die Risiken dieses Unternehmens abgewägt und besprochen. Ich werde mich in dieses Abenteuer stürzen, meine Situation lässt mir keine andere Wahl.

        Dem entnehme ich, dass du damit Geld verdienen musst/möchtest. Ich will dir ja nicht zu nahe treten, aber ich erkenne kein Geschäftsmodell.

        Dem kann ich mich nur anschließen! Du bist auch viel zu technikorientiert, du argumentierst nur auf dieser Schiene. Nach meine Verständnis sind das aber Selbstverständlichkeiten, die du propagierst und keine Innovationen.
        Demjenigen, der deinen Shop benutzen soll, sind MVC-Patterns und die Anzahl der Objekte egal. Der will wissen wo seine Vorteil in der Anwendung liegen. Ein Smartphone ist eine tolles Sache gegenüber einem Handy, das kann jeder erkennen und muss doch nicht wissen, wie es funktioniert. Das verkauft sich, weil es sexy ist.

        Und wie willst du das überhaupt unter die Leute bringen? Über Foreneinträge? Technisch affine Menschen werden sich in erster Linie für bewährte Proukte entscheiden, es sein denn dein System ist der Knaller, aber das hat hier noch keiner gesagt...
        Erkundige dich mal was z.B. Werbung bei Google kostet, da bist du schnell ein paar 1000 EUR im Monat los um dich prominent zu platzieren. Gibt das dein Marketing-Etat her? Darüber solltest du mal mindestens genauso gründlich nachdenken wie über die technische Architektur.

        Viele Grüße
        Siri

        1. hi,

          Demjenigen, der deinen Shop benutzen soll, sind MVC-Patterns und die Anzahl der Objekte egal.

          Leider habe ich gerade in letzter Zeit dass Gefühl, dass selbst solche Dinge, die ich zweifellos da poste wo sie hingehören, nämlich hier in dieses Forum, auch hier niemanden interessieren.

          Horst Schade

          --
          Ein gewöhnlicher Klugscheißer ist einer, der Informationen preisgibt.
          Ein dummer Klugscheißer merkt nicht, dass er diese Informationen selbst gut gebrauchen könnte.
          Ein gerissener Klugscheißer gibt falsche Informationen weiter und behält die Richtigen für sich.
          1. Hallo,

            Demjenigen, der deinen Shop benutzen soll, sind MVC-Patterns und die Anzahl der Objekte egal.

            Leider habe ich gerade in letzter Zeit dass Gefühl, dass selbst solche Dinge, die ich zweifellos da poste wo sie hingehören, nämlich hier in dieses Forum, auch hier niemanden interessieren.

            Ich weiß nicht wie es den anderen geht, aber ich für meinen Teil denke entweder: "Nix neues" oder "Häh?". Sprich: "Kommt mir bekannt vor" oder "Ich weiß nicht worauf du hinaus willst".

            "Programmiertechnisch ist eine Shopsoftware eine sehr komplexe Herausforderung und erfordert sehr viel Überlegungen, was den ganzen Aufbau betrifft. Einfach drauflos programmieren geht 100%ig ins Knie." Ja klar, man sollte nie drauflosprogrammieren. Wußte ich schon...

            "Ebenso ist eine formale Modellierung in Objekte und Klassen aus der Sicht einer realen Verkaufseinrichtung nicht ausreichend, wenn nicht sogar ein völlig falscher Ansatz.
            ...
            Konkret heißt das, dass formal auf OOP abgebildet ein realer Shop aus mehreren Klassen bestehen kann...
            Für einen praktischen Code/Programmaufbau ist das jedoch unbrauchbar, es ergeben sich schwer überschaubare Abhängigkeiten zwischen den einzelnen Klassen, die mit Vererbung und Delegation nur unnötig kompliziert gelöst werden können." ??? OOP ohne OOP? Oder doch nicht vorher nachgedacht?

            "Programmiertechnisch ein absolutes Muss ist das MVC-Pattern..." Ja, sicher...
            "..., ohne dem und ohne ein brauchbares Template-System geht da gar nix." ??? Warum? Was tut es? Was ist überragend? Ich verstehs nicht...

            Nur mal so als Beispiele.

            Viele Grüße
            Siri

            1. hi,

              Für einen praktischen Code/Programmaufbau ist das jedoch unbrauchbar, es ergeben sich schwer überschaubare Abhängigkeiten zwischen den einzelnen Klassen, die mit Vererbung und Delegation nur unnötig kompliziert gelöst werden können." ??? OOP ohne OOP? Oder doch nicht vorher nachgedacht?

              Ha, Du hast Interesse ;)
              Bitte folge mir:
              OOP grundsätzlich JA. Ich habe nur eine Klasse, die heißt Offer. Es ist deswegen nur eine Klasse, weil darauf eine Kontrollstruktur sitzt, die NICHT klassenübergreifend arbeitet und deswegen überschaubar bleibt (wichtig).

              MVC: Offer ist die Model Class für den Shop, für den es EINE Instanz gibt. Nein kein Singleton.
              In Class Offer gibt es weitere Objekte, die jedoch keine Klasseninstanzen sind. Meta-Objekte dieser Art sind einfach nur Datenstrukturen (array's), wie z.B:

              • der Warenkorb
              • ein einzelner Artikel
              • die Daten für das View (Response)

              Diese Metaboliten (die Bezeichnung habe ich der Biochemie entlehnt) sind Attribute der Instanz Offer. Damit wird der Datenaustausch NICHT klassenübergreifend.

              Es gibt jedoch weitere Klassen (PHP spec. Interface), die z.B. als Data Abstraction Layer dienen um eine Bestellung nach mysql zu schreiben. Der Datenaustausch ist eine Delegation:

                
              $this->ORDER->insert($warenkorb);  
              ^Instanz Offer  
                     ^Interface (Instanz Order)  
                            ^Vorgang  
                                   ^Meta-Daten  
              
              

              Der Controler sitzt in der Model Class, die ich auch Response-Class oder Controler Class nenne und hat eine Parameter-Kontrollstruktur. Schlüsselparameter sind z.B:

              • pick (Artikel wandert in den Warenkorb)
              • order (Bestellung senden)
              • article (Artikelseite ausgeben)

              Sofern keine Parameter anliegen, wird das Template für die Artikelübericht geladen, bestückt mit allen dazu notwendigen Daten. Schlüsselparameter rufen gleichnamige Methoden auf (PHP-Spec.: Magic).

              Alles keine Hexerei, aber schon durchdacht hehe ;)
              Hotti

              1. Hallo,

                Ha, Du hast Interesse ;)

                ich versuche zumindest EINMAL zu verstehen, was du sagst ;-)

                Bitte folge mir:
                OOP grundsätzlich JA. Ich habe nur eine Klasse, die heißt Offer. Es ist deswegen nur eine Klasse, weil darauf eine Kontrollstruktur sitzt, die NICHT klassenübergreifend arbeitet und deswegen überschaubar bleibt (wichtig).

                MVC: Offer ist die Model Class für den Shop, für den es EINE Instanz gibt. Nein kein Singleton.
                In Class Offer gibt es weitere Objekte, die jedoch keine Klasseninstanzen sind. Meta-Objekte dieser Art sind einfach nur Datenstrukturen (array's), wie z.B:

                • der Warenkorb
                • ein einzelner Artikel
                • die Daten für das View (Response)

                Seh ich das richtig: Eine Instanz "Shop/Offer". Kunde eins kommt und erhält "Warenkorb[1]", Kunde zwei "Warenkorb[2]" usw? Es gibt Artikel[1]...Artikel[x] und dann ergibt sich sowas wie
                "Warenkorb[2][Arikel[1]]"?

                Viele Grüße
                Siri

                PS: Eigentlich hätte mich ja mehr die Frage interessiert: "Und wie willst du das überhaupt unter die Leute bringen?".

                1. hi ;)

                  Seh ich das richtig: Eine Instanz "Shop/Offer". Kunde eins kommt und erhält "Warenkorb[1]", Kunde zwei "Warenkorb[2]" usw? Es gibt Artikel[1]...Artikel[x] und dann ergibt sich sowas wie
                  "Warenkorb[2][Arikel[1]]"?

                  PHP verwaltet Sessions in einzelnen Dateien. Das macht die Sache insofern einfach, als dass der Warenkorb direkt in der Session-Datei gespeichert werden kann. Weil jede Session in PHP eine einzelne Datei ist, kann der Programmierer auf den ersten Schlüssel 'session_id' verzichten. Somit ist bei mir der erste Schlüssel in der Datenstruktur der Name des Warenkorbs (Mandant). Der nächste Schlüssel ist die Artikelnummer, daran hängt das Array mit allen Attributen eines Artikels und es kommt ein Attribut hinzu: Die Anzahl des Artikels im Warenkorb. Trivialer Code in der Controler Class:

                    
                  		elseif($this->param('pick')){  
                  			$artname = $this->param('artname'); // artname == sku  
                  			$in_aiw = $this->param('aiw');  
                  			if( preg_match("/^\d+$/", $in_aiw)){  
                  				// wir brauchen das Artikel Objekt  
                  				// das array liegt bereits in ARTICLE  
                  				$ao = $this->ARTICLE[$artname];  
                  				$ao['anz'] = $in_aiw;  
                  				// descr thumb detail kann gelöscht werden  
                  				foreach(array('descr','thumb','detail') as $att) unset($ao[$att]);  
                  				//$this->dd($ao);  
                  				$_SESSION[$this->eav('cart')][$artname] = $ao;  
                  				if($in_aiw == 0) unset($_SESSION[$this->eav('cart')][$artname]);  
                  			}  
                  
                  

                  Der Mandant steht in $this->eav('cart'). Die Methode eav() ist ein kombinierter Getter/Setter für Attribute der Instanz 'Offer' (Offer ist der Einkaufsladen). Method eav(), sprich: Entity Attribute Value, gibt ein Attribut mit einem Argument oder setzt ein Attribut, wenn mit 2 Argumente aufgerufen. Die Ähnlichkeit des Namen dieser Methode mit Magento ist rein zufällig ;)

                  Für Perl bietet sich der Serializer Storable::freeze() an, wenn mit Dateien gearbeitet werden soll. Oder ein ORM-Interface zu MySQL o.ä.

                  Hotti

                  1. hi ;)

                    PHP verwaltet Sessions in einzelnen Dateien. Das macht die Sache insofern einfach, als dass der Warenkorb direkt in der Session-Datei gespeichert werden kann. Weil jede Session in PHP eine einzelne Datei ist, kann der Programmierer auf den ersten Schlüssel 'session_id' verzichten. Somit ist bei mir der erste Schlüssel in der Datenstruktur der Name des Warenkorbs (Mandant). Der nächste Schlüssel ist die Artikelnummer, daran hängt das Array mit allen Attributen eines Artikels und es kommt ein Attribut hinzu: Die Anzahl des Artikels im Warenkorb.

                    Also:
                    warenkorb["name1"]["artikelnummerA"][anzahl]["artikel['gewicht']['100g']"]
                    warenkorb["name1"]["artikelnummerA"][anzahl]["artikel['inhalt']['erbeermarmelade']"]
                    warenkorb["name1"]["artikelnummerA"][anzahl]["artikel['Anteil Fett']['10%']"]
                    warenkorb["name1"]["artikelnummerA"][anzahl]["artikel['Vitamin B1']['1mg']"]
                    warenkorb["name1"]["artikelnummerA"][anzahl]["artikel['Vitamin B2']['2mg']"]
                    warenkorb["name1"]["artikelnummerA"][anzahl]["artikel['Warnhinweis']['Kann bis zu 10g xy enthalten!']"]
                    ...
                    warenkorb["name1"]["artikelnummerB"][anzahl]["artikel['gewicht']['100g']"]
                    warenkorb["name1"]["artikelnummerB"][anzahl]["artikel['inhalt']['orangenmarmelade']"]
                    ...

                    uswusf? Schaut das für dich nach einer brauchbaren Datenstruktur aus?

                    1. hi,

                      warenkorb["name1"]["artikelnummerB"][anzahl]["artikel['gewicht']['100g']"]

                      Ne. Die Struktur sieht so aus, ich werfe mal eine Ex zum Gucken:

                        
                      exception 'Exception' with message 'Array  
                      (  
                          [22140] => Array  
                              (  
                                  [title] => Rankgitter Stahlrohr  
                                  [ep] => 12.95  
                                  [vk] => 5  
                                  [evp] => 15  
                                  [name] => 22140  
                                  [evp_mwst] => 17.85  
                                  [aiw] => 0  
                                  [anz] => 1  
                              )  
                        
                          [22141] => Array  
                              (  
                                  [title] => Hof und Gartenhocker  
                                  [ep] => 19.90  
                                  [vk] => 5  
                                  [evp] => 25  
                                  [name] => 22141  
                                  [evp_mwst] => 29.75  
                                  [aiw] => 0  
                                  [anz] => 1  
                              )  
                        
                      )  
                      
                      

                      Wobei das jetzt nur ein Mandant ist.

                      Btw., in Perl sieht die Struktur genauso aus, da ists ein hash mit Referenzen. Der ganze Hunt kriegt beim Absenden noch Einiges dazu was eine Order braucht, dann wird der Hunt (Begriff aus dem Bergmännischen, heißt soviel wie 'Schotterkiste auf Schienen') einer Methode übergeben, die zur Klasse 'order' (Subklasse von dBase, ein besserer Name ist mir nicht eingefallen, Basisklasse für AnyDB) gehört.

                        
                      // Die order wird in die DB geschrieben  
                      $db = new dBase_order( array(  
                      	'base' => $this->eav('base'),  
                      	'host' => $this->eav('host'),  
                      	'port' => $this->eav('port'),  
                      	'user' => $this->eav('user'),  
                      	'pass' => $this->eav('pass'),  
                      ));  
                        
                      $orderid = $db->insert($hunt);  
                      
                      

                      Und das alles ist über try/catch abgesichert. Für den Entwickler eine feine Sache, er kann einfach mal eine Exception schmeißen, wenn er nicht mehr weiß, wie die Datenstruktur aussieht ;)

                        
                      $this->dd($hunt); // dd: dump & die, Ergebnis siehe oben  
                      
                      

                      Falls mal eine Exception in Kundenhand fällt (DB-Server weg...), damit ist ja auch zu rechnen, wird kein Trace gezeigt, sondern nur die Message.

                      Hotti

                      1. s, Thema,

                        das hier:

                        // Die order wird in die DB geschrieben
                        $db = new dBase_order( array(
                        'base' => $this->eav('base'),
                        'host' => $this->eav('host'),
                        'port' => $this->eav('port'),
                        'user' => $this->eav('user'),
                        'pass' => $this->eav('pass'),
                        ));

                        $orderid = $db->insert($hunt);

                          
                        ist schlechtes Programmdesign, die Credentials liegen direkt in der Instanz der Model Class, raus damit! Zur Verbesserung sind Magic Functions hilfreich und eine dedizierte Klasse:  
                          
                        ~~~php
                          
                        $dbcfg = $this->dBaseUtil->credentials($dbname);  
                        $db = new dBase_order($dbcfg);  
                        
                        

                        PHP Voodo (Magic Delegation):
                        Es wird ein Attribut 'dBaseUtil' angebaggert, was es nicht gibt. Die Magic Funktion __get() schlägt zu und erstellt dieses Attribut als Instanz der Klasse 'dBaseUtil'. Dafür schlägt wiederum eine Magic-Method zu: autoload, in dieser über autoload_register eigens eingestellten Methode wird mit new die begehrte Instanz erstellt und zurückgegeben. Zum Schluss wird die Methode credentials($dbname); aufgerufen, welche dann schließlich die Credentials (user,pass,port,base,host) zurückliefert, womit eine Zeile weiter dann das DB-Objekt erstellt werden kann.

                        Die Credentials selbst liegen so an einem sicheren Ort.

                        Hotti

                  2. Hallo,

                    PHP verwaltet Sessions in einzelnen Dateien. Das macht die Sache insofern einfach, als dass der Warenkorb direkt in der Session-Datei gespeichert werden kann. Weil jede Session in PHP eine einzelne Datei ist, kann der Programmierer auf den ersten Schlüssel 'session_id' verzichten. Somit ist bei mir der erste Schlüssel in der Datenstruktur der Name des Warenkorbs (Mandant). Der nächste Schlüssel ist die Artikelnummer, daran hängt das Array mit allen Attributen eines Artikels und es kommt ein Attribut hinzu: Die Anzahl des Artikels im Warenkorb. Trivialer Code in der Controler Class:

                    was? Bahnhof?

                    Die Methode eav()

                    Schon klar, die Erste Allgemeine Verunsicherung.

                    Ciao,
                     Martin

                    --
                    Life! Don't talk to me about life!
                      (Marvin, the paranoid android in Douglas Adams' "The Hitchhiker's Guide To The Galaxy")
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. hi Martin,

                      PHP verwaltet Sessions in einzelnen Dateien. Das macht die Sache insofern einfach, als dass der Warenkorb direkt in der Session-Datei gespeichert werden kann. Weil jede Session in PHP eine einzelne Datei ist, kann der Programmierer auf den ersten Schlüssel 'session_id' verzichten. Somit ist bei mir der erste Schlüssel in der Datenstruktur der Name des Warenkorbs (Mandant). Der nächste Schlüssel ist die Artikelnummer, daran hängt das Array mit allen Attributen eines Artikels und es kommt ein Attribut hinzu: Die Anzahl des Artikels im Warenkorb. Trivialer Code in der Controler Class:

                      was? Bahnhof?

                      Parameter Kontrollstruktur (PKS)

                      Für den Controller im MVC gibt es eine PKS, der eine weitere Kontrolle vorgeschaltet ist, nämlich die Kontrolle darüber, ob überhaupt GET- oder POST-Parameter anliegen oder nicht.

                      Der Programmierer legt sog. Schlüsselparameter fest für den Ablauf seines Programms, was letztendlich in das View gebracht wird. Beispiel:

                      Dem Schlüsselparameter ?pick=1 ist der Vorgang zugeordnet, der beschreibt, dass ein Artikel in den Warenkorb wandert.

                      Weitere Schlüssel-Parameter brauchts nicht, was noch fehlt haben wir aus Parametern des Formulars, was jeder Artikel hat

                      aiw: Anzahl des Artikels im Warenkorb, kommt aus dem Pick-Formular
                      sku: Stock Keeping Unit, eine Nummer, welche den Ort des Artikels im Lager beschreibt, damit der Artikel überhaupt wiedergefunden wird, damit er kommissioniert werden kann

                      Die sku wird also schon ab hier mitgenommen, denn die kommt später auf den Lieferschein.

                      Aus der sku ermittelt der C die Attribute eines Artikels, wie Einkauspreis, Verkaufspreis, MwSt usw. was später für die Buchhaltung wichtig ist. Diese Attribute kommen aus der Shop-Offer-Configuration.

                      Alles zsammen geht dann ersteinmal in den Warenkorb. Der Schlüsselparameter ?show_cart=1 zeigt den Warenkob, für dieses View wird das Template ausgetauscht. Alles was dieses Template an Daten braucht, wird in einem Rutsch aus der Session gelesen.

                      Hotti

          2. Tach!

            Demjenigen, der deinen Shop benutzen soll, sind MVC-Patterns und die Anzahl der Objekte egal.
            Leider habe ich gerade in letzter Zeit dass Gefühl, dass selbst solche Dinge, die ich zweifellos da poste wo sie hingehören, nämlich hier in dieses Forum, auch hier niemanden interessieren.

            Was soll daran auch interessant sein? Die Patterns sind hinreichend bekannt und erklärt. Und du kommt immer nur mit Erzählungen über dein Framework, was aber ansonsten Closed Source ist. Was soll man da großartig darüber reden? Zumal ich auch den Eindruck habe, dass Diskussionen mit dir nicht ernsthaft geführt werden können, denn sobald ich zum Beispiel mal konkrete Punkte anspreche, die zu diskutieren interessant wären, weil sie meiner Meinung nach nicht richtig erklärt, benannt, umgesetzt oder anderweitig verbesserungswürdig sind, antwortest du nur noch irgendwas knappes mit Zwinkersmiley dahinter. Das bringt auch mich nicht weiter, davon wird mein Interesse an deinen Programmierkünsten nicht geweckt.

            dedlfix.

            1. hi,

              [..] davon wird mein Interesse an deinen Programmierkünsten nicht geweckt.

              Programmieren ist keine Kunst sondern ein Handwerk (Niklaus Wirth).

              Horst Praktiker

      3. Dem entnehme ich, dass du damit Geld verdienen musst/möchtest. Ich will dir ja nicht zu nahe treten, aber ich erkenne kein Geschäftsmodell.

        Eine sehr interessante Diskussion. Ich selbst glaube das noch Bedarf für einen Webshop besteht ebenso für ein neues CMS. Vor 10 Jahren hatte jeder mit phpnuke gearbeitet, vor 5 Jahren mit Joomla, heute mit Wordpress. Vor 10 Jahren hat jeder mit Excite oder lycos gesucht heute mit google.

        Deswegen ist es oft gut wenn sich zwei Leute zusammentun. Einer der verkaufen kann und einer der technisch begabt ist. Da draußen gibt es viele gute Programmierer, die aber nicht schaffen ihr Produkt gut zu "verkaufen". Das ist schade!

    2. Hi there,

      siehe Thema. Währenddem fleißige Helfer hier sich meiner Sache angenommen haben, war ich natürlich auch nicht untätig und habe zusammen mit meiner Frau die Risiken dieses Unternehmens abgewägt und besprochen. Ich werde mich in dieses Abenteuer stürzen, meine Situation lässt mir keine andere Wahl.

      Was sich mir nicht ganz erschliesst, warum nimmst Du nicht irgendeine fertige Opensource-Shoplösung? Nach Deinem Posting zu schliessen, bist Du auf der Suche nach dem idealen, selbstprogrammierten Webshop. Den wirst Du aber imho so oder so nicht schaffen. Das wichtigste bei einem Shop ist nicht die perfekte Programmierung sondern das bestmögliche Marketing.

      Programmiertechnisch ist eine Shopsoftware eine sehr komplexe Herausforderung und erfordert sehr viel Überlegungen, was den ganzen Aufbau betrifft. Einfach drauflos programmieren geht 100%ig ins Knie.

      Weiss nicht, idR gilt, je schneller man loslegt, desto schneller verkauft man. (Wenn Du den Shop selbst betreiben willst, was anderes ist, wenn Du eine fertige Shoplösung verkaufen willst, aber davon geh' ich nach Deiner Beschreibung und dem bereits Geposteten ja nicht aus)
      Ich meine, ein Shop ist ja kein Atomkraftwerk, der kann ruhig im Betrieb verbessert oder von mir aus auch erst fertig werden.

      Es sind gerade auch die Armeen von Vollpfostenabmahanwälten, die heutzutage eine besondere Anforderung an einen Webshop stellen: Der Anwender muss schnell reagieren können auf Veränderungen, die sich aufgrund neuer Gesetze ergeben.

      Schon, aber das sind im Normallfall keine programmtechnischen Änderungen sondern irgendwelche Texte, die halt im Sinne des Gesetzes an leicht einsehbarer Stelle zur Kenntnis gebracht werden müssen.

      Programmiertechnisch ein absolutes Muss ist das MVC-Pattern, ohne dem und ohne ein brauchbares Template-System geht da gar nix. Für einen Shop, der beim Normally-ISP im reinen CGI-Betrieb laufen soll, ist das der Killer, mit mir bekannten in Perl brauchbaren Template-Engines bricht da die Performanze gnadenlos ein.

      Wenn Du mit einem solchen Andrang rechnest, daß Du Performance-Probleme erwartest, dann solltest Du erst recht so schnell wie möglich damit online gehen;)

      Mit PHP sieht das schon besser aus, auch wenn ich PHP anfangs nur spöttisch belächelt habe: Hier kommt die Template-Engine mit. Aber auch hier gilt es, Programmlogik und Template-Prozesse sauber zu trennen, nur so ist das zum Einen beherrschbar und zum Anderen auch mit Freude an der Arbeit verbunden ;)

      Letzter Satz erwähnt natürlich das Allerwichtigste...;)

      1. Moin,

        siehe Thema. Währenddem fleißige Helfer hier sich meiner Sache angenommen haben, war ich natürlich auch nicht untätig und habe zusammen mit meiner Frau die Risiken dieses Unternehmens abgewägt und besprochen. Ich werde mich in dieses Abenteuer stürzen, meine Situation lässt mir keine andere Wahl.

        Was sich mir nicht ganz erschliesst, warum nimmst Du nicht irgendeine fertige Opensource-Shoplösung?

        Gesehen, gelacht und geweint. Unglaublich, was Heerscharen an Programmierern auf Halde schaffen und dann für Umme verkaufen ;)

        Gerne greife ich auf OpenSource zurück, aber wenn es um die Gesamtlösung geht, da setze ich meine eigenen Ideen um und davon habe ich viele. Letztendlich ist meine Shoplösung auch nur ein kleiner Bestandteil meines über Jahre gewachsenen Frameworks. Über Jahre gewachsen heißt konkret, dass dieses FW im Core auf zwei Dateien geschrumpft ist. Somit müssen Anwendungen, die ich für mich einsetze, in dieses FW passen, das ist mit einer Shopsoftware von der Stange nicht möglich.

        Ein Webshop heutzutage muss Anforderungen genügen, denen ein Anwender einer Fertiglösung mit Einsatz einer Solchen nur ungenügend nachkommen kann. Ein Shop muss beweglich sein, auf das Internet bezogen heißt das für mich, dass ein OnlineShop genauso wie ein ambulanter Verkaufstisch betrieben werden muss, mit wenigen Handgriffen auf- und wieder abgebaut. Das betrifft nicht nur einzelne Artikel oder Warengruppen, sondern den ganzen Shop. Somit ist eine Internet-Domäne, auf der ein Shop betrieben wird, etwas schrecklich Unbewegliches.

        Potentielle Kunden suchen keine Shop-Domänen, sondern Artikel. Wie die Domäne heißt und was es da sonst noch so zu lesen gibt, ist einem Kunden absolut Wurschd. Kundenbindung schön und gut, aber die Zeiten sind vorbei, in denen Kunden langfristige Freundschaften mit Händlern pflegen.

        Was, auf domäne example.org überschlagen sich die Besucherzahlen? Na, dann werden wir mal einen Shop dort einhängen, kriegste das in einer Woche hin?

        Ich brauche dafür ein paar Minuten, sagt Hotti.

  5. Hallo,

    für einen alten Knacker ist es kaum möglich einen Job zu finden.

    ...und Unsinn schreiben kannst Du auch!

    Ulli

    1. hi Ulli,

      für einen alten Knacker ist es kaum möglich einen Job zu finden.

      ...und Unsinn schreiben kannst Du auch!

      Naja, ich schreib manchmal Blödzinn. Aber ihr müsst mir ja nicht alles glauben ;)

      Btw., wenn Du morgens aufwachst und es tut Dir nichts weh, bist du entweder noch keine 50 oder tot.

      Viele Grüße,
      Horst Knacki

      PS: Zum Testen einer Software auf einunddemselben URL (Produktivsystem) mit unterschiedlichen Konfigurationen habe ich heute was in meinen Blog geschrieben, siehe Link über diesem Post. Wer hier noch ein bischen testen möchte, kopiere sich mal den Shop-URL im Gastbereich (nach Anmeldung als Benutzer gast, Passwort gast) und rufe diesen URL nach dem Ausloggen erneut auf: Das ist 'Content Negotiation over Authorization', heißt, dass Inhalte abhängig von einer ACL ausgehandelt werden. Somit trenne ich ACLs vollständig vom Programmcode.