Hi,
1. Vergiss das mit IP adressen schnellstens wieder... Was machst Du beispielsweise, wenn 40 User die über ein Gateway surfen, bei dir shoppen? Dann hast Du nen netten "shared-Warenkorb". (erinnert mich irgendwie an das Gemeinschafts-Kaufen von letsbuyit.com *g*)
2. Vergiss Text-Files! Ist ein User nicht eingeloggt, dann legst Du den Warenkorb in einem Session Array ab. Wichtig dabei ist, auch "bewegliche" Daten statisch zu fixieren. d.h. z.B. Preise gleich in die Session mit reinpacken und nicht erst bei der Order-Confirmation aus der Datenbank nochmal auslesen. Dies deshalb, weil sich während es Einkaufs ja der Preis ändern könnte, und dem Kunden anschließend ein falscher Betrag von der CC-Karte abgebucht wird (und nicht der, den er ursprünglich gesehen hat)..
3. Registrierte Kunden-Warenkörbe in einer DB speichern
Ist ein Kunde als registrierter Kunde beim Einkaufen, sollte dieser Warenkorb in einer DB hinterlegt werden. Da es sich bei der DB um einen "nicht flüchtigen" Speicher handelt (im Gegensatz zu sessions), hat der Kunde immer wieder seinen Warenkorb, auch wenn er den Einkauf zwischendurch unterbricht.
Das nur ein paar Tipps am Rande.
Solltest Du trotzdem bei der Text-File Idee bleiben, sieh dir mal [phpf]uniqid[/phpf] an.
Ciao,
Mike