Hannibal: Auslesen

Hallo ihr Freaks

Wie kann ich eine Datei bis zu einem Bestimmten Zeichen auslesen?
Warum?
Ich möchte einen einfachen Zähler mit Log-Dateien machen. Dafür muss ich nur wissen, welche IP wann jemand zugegriffen hat.

Oder gibt es da bessere/noblere Möglichkeiten?

Gruss Hannibal
aus Winterthur /CH

  1. Hello,

    Wie kann ich eine Datei bis zu einem Bestimmten Zeichen auslesen?
    Warum?

    Das geht, das nützt Dir aber nicht viel, da PHP keine geschlossenen Datenstrukturen unterstützt. Eigene Records /Structures kann man nicht definieren.

    Aber Du kannst bequem Textdateien aufbauen oder Für Deinen Fall ein Monster-Array, bei dem die IP dann gleich der Index wird.

    Diese Array kannst Du mit serialize() verpacken und wegschreiben und dann wiederholen und mit unserialize() wieder auspacken.

    Danach kannst Du sofort direkt zugreifen. Ich denks, dass das bis zu Dateigrößen von 1MB (bei zwei wird's kritisch) auch kein Problem ist.

    Grüße

    Tom

    1. Hallo Tom
      Danke für deine Antwort
      Ich versuchs mal

      Gruss Hannibal

      1. Hello,

        Danke für deine Antwort

        Bitte.

        Aufpassen muss man nur, dass in den Daten kein "\n" oder ähnlich enthalten ist. Das könnte bei Flatfiles leider Probleme geben.

        Und wenn man die serialisierten Datren in einer DB speichern will, uss man da auch vorher die Escape-Strings berücksichtigen

        Grüße

        Tom

        1. Hello,

          Hallo

          Aufpassen muss man nur, dass in den Daten kein "\n" oder ähnlich enthalten ist. Das könnte bei Flatfiles leider Probleme geben.

          Sorry das ist mir zu hoch.
          Ich verstehe kein Wort.
          Nein nicht so krass, aber was ist mit "Flatfiles" gemeint?
          Den Namen kann ich nicht logisch auf deutsch interpretieren.
          Flachdaten?

          Und wenn man die serialisierten Datren in einer DB speichern will, uss man da auch vorher die Escape-Strings berücksichtigen

          ok.

          Gruss Michy

          1. Hello,

            Aufpassen muss man nur, dass in den Daten kein "\n" oder ähnlich enthalten ist. Das könnte bei Flatfiles leider Probleme geben.

            Sorry das ist mir zu hoch.
            Ich verstehe kein Wort.
            Nein nicht so krass, aber was ist mit "Flatfiles" gemeint?
            Den Namen kann ich nicht logisch auf deutsch interpretieren.
            Flachdaten?

            Genau, Flachdateien, also solche, die in der Hierarchie der Applikationsschichten ganz tief am Betriebssystem liegen. Also solche, die Du mit fopen() und fread() und fwrite() usw. selber anlegen, lesen, schreiben, löschen kannst.

            PHP unterstützt leider keine Records / Structures. Das sind selbstdefinierte Datenstrukturen, die im Block in die Datei geschrieben werden können. Dafür werden aber Arrays angeboten, die in Wirklichkeit bidirektional verkettete Bäume sind. Die kann man wunderbar abspeichern. ->serialize() ->unserialize().

            Um nun die Datensätze voneinander zu trennen, benutz man gerne Textdateien. Das sind Flatfiles, die hinter jeder "Zeile" ein Zeilenendezeichen ( \n ) stehen haben. In Wirklichkeit haben Dateien keinen Zeilen, sondern sind von Byte 0 bis Byte N wie ein "Bindfaden" angeordnet. Wenn man jetzt in den abzuspeichernden Daten so ein Zeilenende-Zeichen drinstehen hat, "denkt" Dein Programm dann natürlich, dass an dieser Stelle die Zeile zuende ist, also danach ein neuer Datensatz anfängt.

            Da muss man dann eben vorher diese Zeichen gegen andere austaschen, die nicht so schädlich sind (z.B. das #127 statt #10)

            Wenn man die Daten dann wieder geholt hat, muss man das natürlich zurücktauschen. Zeichen #127 ist dafür gut geignet, da es über den Browser nicht in den Datenstrom hineinzubekommen ist.

            Es gibt hier viele Thread zum Thema "Dateisystem". Musst einfach mal suchen und lesen. Dümmer kannst Du davon kaum werden.

            Viel Spaß

            Tom