Christian Bliß: Warenkorb - IP - löschen

Hallo,

ich habe in PERL/CGI einen Warenkorb realisiert. Dazu speichere ich eine txt-Datei mit der IP-Adresse des Benutzers als Dateinamen. So bleibt der Warenkorb auch erhalten, falls er versehentlich das Fenster schließt und ich kann auf Cookies verzichten.
Die Warenkorbdatei wird nach Beenden des Bestellvorgangs per 'unlink' gelöscht. Nun zu meinem Problem:

Angenommen, der Benutzer füllt seinen Warenkorb, bestellt aber nicht, so bleibt sein Warenkorb als Dateimüll auf meinem Server. So lange, bis zufällig wieder ein Benutzer kommt, der zufälligerweise die gleiche IP-Adresse zugewiesen bekommen hat.
Was habe ich für Möglichkeiten solchen Dateimüll zu entfernen (natürlich NICHT manuell!).

MfG Christian Bliß

  1. Hallo,

    gerade kommt mir ne Idee:

    Ein PERL/CGI-Script, dass alle Dateien in einem (oder mehreren) Ordner prüft -> alle Dateien, die älter als 24 h sind werden automatisch gelöscht.

    • Wie kann ich das Alter einer Datei feststellen?
    • Kann ich dieses Script zeitgesteuert (also nicht manuell) starten? Wenn ja, wie?

    MfG Christian Bliß

    1. Halihallo Christian

      Ein PERL/CGI-Script, dass alle Dateien in einem (oder mehreren) Ordner prüft -> alle Dateien, die älter als 24 h sind werden automatisch gelöscht.

      • Wie kann ich das Alter einer Datei feststellen?

      perldoc -f stat

      Arrayelement 8 oder 9, du darfst wählen. Natürlich steht es dir frei, das Datum im
      Dateinamen zu speichern (ISO-8601, 2003-09-20 12:22:30) und dann über ein
      perldoc -f opendir   das Verzeichnis zu durchlaufen und die älteren Dateien zu löschen.

      • Kann ich dieses Script zeitgesteuert (also nicht manuell) starten? Wenn ja, wie?

      Die wohl beste und naheliegendste Lösung wäre über einen cron-job.

      Viele Grüsse

      Philipp

      --
      RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
      Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
  2. Moin!

    Hallo Christian!

    Den Warenkorb an eine IP zu binden ist wahrlich keine gute Idee- Zumindest lese ich heraus, daß Du dies so programmiert hast.

    Stell Dir vor, in einer Firma mit einem "privaten" Netzwerk und Adressen aus den Bereichen 10.x oder 192.168.x.x und folglich NAT (Network Adress Translating) kommen zwei Mitarbeiter gleichzeitig auf die Idee den Shop zu benutzen (Das soll es geben!) jetzt laufen deren Requests beim Server mit der gleichen IP auf...

    Du musst die IP also mindestens mit einer (ausreichend großen) Zufallszahl und/oder dem aktuellen Timestamp kombinieren. Dies wird regelmäßig verschlüsselt (mit MD5 oder crypt) und als Session-ID in einem Cookie und/oder als Formularfeld und/oder in der URI weitergegeben. Perl hat für die Sessionverwaltung auch ein spezielles Modul.

    Nimm mal die Suche und lese nach, was hier über Sessions geschrieben wurde.
    Dies sollte zugleich Dein Problem lösen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen