RFZ: gzcompress() und Cookies

Moin, hab nen Problem...
Wenn ich einen String komprimiere, in einen Cookie speicher, und danach wieder auslese, klappt das nicht. Warum?

Beispiel:
setcookie("gz",gzcompress("teststring"),(time()+3600));
echo gzuncompress($_COOKIE['gz']);

Müste ja (beim zweiten Aufruf) "teststring" ausgeben, bleibt aber leer....
Der Cookie ist gesetzt, das hab ich geprüft. Werden irgendwie die Daten verändert?

cu RFZ

  1. hi,

    in einem cookie kannst du ablegen:

    • einen hash
    • ein array
    • ein scalar

    Wobei: ein komprimierter String nichts weiter als ein Scalar ist.

    Gehe also schrittweise vor mit deinem String:

    • ablegen und auslesen im cookie / ohne Kompression
    • ablegen und auslesen im cookie / mit Kompression

    Viele Grüße, Rolf

    Wenn ich einen String komprimiere, in einen Cookie speicher, und danach wieder auslese, klappt das nicht. Warum?

    Beispiel:
    setcookie("gz",gzcompress("teststring"),(time()+3600));
    echo gzuncompress($_COOKIE['gz']);

    Müste ja (beim zweiten Aufruf) "teststring" ausgeben, bleibt aber leer....
    Der Cookie ist gesetzt, das hab ich geprüft. Werden irgendwie die Daten verändert?

    cu RFZ

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?
    1. Moin,

      Gehe also schrittweise vor mit deinem String:

      • ablegen und auslesen im cookie / ohne Kompression
      • ablegen und auslesen im cookie / mit Kompression

      und was hilft mir das? Erstes geht, zweites nicht... Hab mein

      Beispiel erweitert:
      setcookie("gz",gzcompress("teststring"),(time()+3600));
      echo $_COOKIE['gz']."\r\n";
      echo gzcompress("teststring")."\r\n";

      und ich bekomme (beim zweiten mal):
      [Der Inhalt dieser Binaer-Datei musste leider entfernt werden, da er Zeichen enthielt, die in UTF-8 nicht darstellbar waren. Anm. d. Red.]

      Es wird ja offensichtlich ein komprimierter String abgelegt, aber er kann nicht dekomprimiert werden, weil dieser im Cookie verfälscht wird! Wie kann ich das beheben?

      cu RFZ

      1. hi,

        Gehe also schrittweise vor mit deinem String:

        • ablegen und auslesen im cookie / ohne Kompression
        • ablegen und auslesen im cookie / mit Kompression
          und was hilft mir das? Erstes geht, zweites nicht... Hab mein

        Es hilft dir bei der Fehlersuche:

        • vergleiche den string der serverseitig erzeugt wird mit dem string der im cookie abgelegt wird
        • vergleiche den string der im cookie abgelegt ist mit dem string den der client zurück an den server sendet

        Damit kannst du dein Problem einkreisen.

        Viele Grüße, Rolf

        --
        SELFforum - Das Tor zur Welt!
        Theoretiker: Wie kommt das Kupfer in die Leitung?
        Praktiker: Wie kommt der Strom in die Leitung?
          • vergleiche den string der serverseitig erzeugt wird mit dem string der im cookie abgelegt wird
          • vergleiche den string der im cookie abgelegt ist mit dem string den der client zurück an den server sendet

          Ach ne, hast du mein Posting gelesen?
          Tu das nochmal, da steht bereits dass der im Cookie gespeicherte String NICHT der ist, der von gzcompress() ausgegeben wird.

          Viele Grüße, Rolf

          cu RFZ

          1. hi,

            • vergleiche den string der serverseitig erzeugt wird mit dem string der im cookie abgelegt wird
            • vergleiche den string der im cookie abgelegt ist mit dem string den der client zurück an den server sendet

            Ach ne, hast du mein Posting gelesen?
            Tu das nochmal, da steht bereits dass der im Cookie gespeicherte String NICHT der ist, der von gzcompress() ausgegeben wird.

            Ok, wenn du also den Übertragungsweg (HTTP - Protocol, HTTP - Header) somit ausschließen kannst liegt das Problem bei

            gzcompress()

            Siehe also da.

            Schönen Sonntag, Rolf

            --
            SELFforum - Das Tor zur Welt!
            Theoretiker: Wie kommt das Kupfer in die Leitung?
            Praktiker: Wie kommt der Strom in die Leitung?
            1. Ok, wenn du also den Übertragungsweg (HTTP - Protocol, HTTP - Header) somit ausschließen kannst liegt das Problem bei gzcompress()

              Hö?
              Wenn ich sage, dass der Cookie nicht mehr den Wert hat, den gzcompress() ausgibt, dann MUSS doch der Fehler am Cookie/Browser/HTTP liegen?!

              Schönen Sonntag, Rolf

              cu RFZ

              1. M.E. nach liegt es wohl daran dass der gzcompress()te String aus lauter Sonderzeichen besteht, die im HTTP-Header nicht richtig übertragen werden können.
                Eine Möglichkeit wäre
                base64_encode(gzcompress($irgendwas))

                und danach wieder zurück - allerdings wird der String dann wieder um ca. 1/3 länger.

                Im Grunde sind Cookies auch nicht dazu gedacht so große Datenmengen zu speichern dass sich eine komprimierung lohnen würde. Am besten du speicherst nur eine ID (z.B. Session ID) und assoziierst damit Daten auf dem Server.

  2. Hallo,

    Moin, hab nen Problem...
    Wenn ich einen String komprimiere, in einen Cookie speicher, und danach wieder auslese, klappt das nicht. Warum?

    Beispiel:
    setcookie("gz",gzcompress("teststring"),(time()+3600));
    echo gzuncompress($_COOKIE['gz']);

    Mach es mal so:
    setcookie("gz",addslashes(gzcompress("teststring")),(time()+3600));

    Gruß
      Christian