dubus: Cookies?

Hi.

Ich bin beim Lesen meines PHP-Buches jetzt mir Müh und Not am Kapitel "Sessions" angekommen. Das mit den Sessions habe ich kapiert, ist eine recht brauchbare Sache sowas.
Dann kam das Unterkapitel "Cookies". Ich würde Cookies für mein aktuelles Projekt bevorzugen, weil die Session-Daten ja auf dem Server gespeichert werden (werden die eigentlich irgendwann gelöscht?), die Cookies aber nur beim User auf dem PC bleiben. Nachteil allerdings: Man kann die Cookies deaktivieren im Browser. Also muss ich darauf aufmerksam machen, dass die Cookie-Funktion im Browser aktiviert werden muss... Kein Problem bisher.

Doch je mehr ich im Kapitel "Cookies" lese, desto unklarer wird mir die ganze Sache. Deshalb erhoffe ich mir Hilfe zu folgenden Fragen:

  1. cookie_set_params() - _Welche_ Parameter?
  2. Wie werden Daten in Cookies gespeichert? In meinem Buch ist das sehr verwirrend...
  3. Werden die session-Dateien auf den Servern irgendwann gelöscht? Weil für immer bleiben die da ja nicht drauf, würde zu viel Platz wegnehmen...
  4. Sind jetzt Cookies oder Sessions besser für ein Webapp?

Über einen hilfreichen Link wäre ich i.Ü. auch dankbar.

euer dubus

  1. Ooh, sorry, bin im Themengebiet verrutscht. Gemeint war nicht Perl, sondern PHP

  2. Hi,

    1. Werden die session-Dateien auf den Servern irgendwann gelöscht? Weil für immer bleiben die da ja nicht drauf, würde zu viel Platz wegnehmen...

    Ja die werden gelöscht, einmal nach einer gewissen Zeit (aufm server
    eingestellt) Dann wenn der Browser geschlossen wird, oder du es im PHP
    script mit session_destroy(); angibst

    1. Sind jetzt Cookies oder Sessions besser für ein Webapp?

    Das kommt ganz auf die Webapp an, wenn du die Einstellungen deines Users
    Dauerhaft speichern willst Cookies. Wenn es nur darum geht eingaben
    etc. z.B. bei einem Formular zu speichern reicht eine Session vollkommen
    aus.

    MfG

    1. Hi,

      1. Werden die session-Dateien auf den Servern irgendwann gelöscht? Weil für immer bleiben die da ja nicht drauf, würde zu viel Platz wegnehmen...

      Ja die werden gelöscht, einmal nach einer gewissen Zeit (aufm server
      eingestellt) Dann wenn der Browser geschlossen wird, oder du es im PHP
      script mit session_destroy(); angibst

      Wirklich? Wenn ich den Browser schließe dann wird das gelöscht?
      Aber das mit session_destroy() ist eigentlich auch unsinnig, ich kann doch nicht eine Session beenden, wenn ich nicht weiß, wann sie beendet werden soll. Eher, wenn man auf "Ausloggen" klickt, wäre es sinnvoll.

      1. Sind jetzt Cookies oder Sessions besser für ein Webapp?

      Das kommt ganz auf die Webapp an, wenn du die Einstellungen deines Users
      Dauerhaft speichern willst Cookies. Wenn es nur darum geht eingaben
      etc. z.B. bei einem Formular zu speichern reicht eine Session vollkommen
      aus.

      Die Einstellung eines Users werden bei mir in einer MySQL-Tabelle gespeichert. Ich brauch die Sessions/Cookies nur, um zu überprüfen ob der User eingeloggt ist und auf dieser Basis etwas anzeigen, oder eben nicht (wenn der User nicht eingeloggt ist).

      Aber danke, damit wären schonmal 2 Fragen halb geklärt :-)

      1. hi,

        1. Werden die session-Dateien auf den Servern irgendwann gelöscht? Weil für immer bleiben die da ja nicht drauf, würde zu viel Platz wegnehmen...

        Ja die werden gelöscht, einmal nach einer gewissen Zeit (aufm server
        eingestellt) Dann wenn der Browser geschlossen wird, oder du es im PHP
        script mit session_destroy(); angibst

        nein.
        _keiner_ von diesen drei punkten nimmt direkt einfluss auf die existenz der session-datei, in der die daten serverseitig abgelegt werden.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          sorry, sollte eigentlich eher unter Daniels antwort stehen.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Hi,
            natürlich. es kommt drauf an wie es auf dem SERVER eingestellt ist, entweder werden die SESSION daten:

            • nach einer gewissen zeit gelöscht
            • oder wenn man den Browser schließt.
              Man kann die SESSION daten aber auch absichtlich löschen mit session_destroy();

            natürlich entstehen die SESSION daten ersten wenn ganz zu beginn session_start(); steht.

            MfG

            1. Hallo

              • oder wenn man den Browser schließt.

              Woher soll der Server, auf dem die Sessions gespeichert sind, wissen, wann du deinen Browser schließt? Wenn er die durch deinen Request angeforderten Daten ausgeliefert hat, besteht keine Verbindung mehr zwischen dir (deinem Rechner, deinem Browser) und dem Webserver.

              Tschö, Auge

              --
              Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
              (Victor Hugo)
              Veranstaltungsdatenbank Vdb 0.1
            2. hi,

              natürlich. es kommt drauf an wie es auf dem SERVER eingestellt ist, entweder werden die SESSION daten:

              session-daten != session-dateien.

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
        2. »» nein.

          _keiner_ von diesen drei punkten nimmt direkt einfluss auf die existenz der session-datei, in der die daten serverseitig abgelegt werden.

          Wie jetzt? Ihr verwirrt mich noch mehr. Du sagst etwas Anderes als Daniel ...
          Können die Session-Dateien jetzt auf dem Server von _mir_ gelöscht werden, oder muss ich warten, bis der Server sich dazu bequemt, es selbst zu tun?

          1. hi,

            Können die Session-Dateien jetzt auf dem Server von _mir_ gelöscht werden,

            wenn du schreibzugriff aufs tempverzeichnis hast, ginge das theoretisch vermutlich schon; es ist aber kaum anzuraten.

            oder muss ich warten, bis der Server sich dazu bequemt, es selbst zu tun?

            ja, das ist das übliche verfahren; und es gibt für normale anwendungen m.E. kaum gründe, davon abzuweichen.
            wie oft oder "schnell" der server da aufräumt, kann man natürlich auch noch teilweise beeinflussen - aber das stichwort zum nachlesen nannte ich dir ja schon.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
          2. Hi,

            Können die Session-Dateien jetzt auf dem Server von _mir_ gelöscht werden, oder muss ich warten, bis der Server sich dazu bequemt, es selbst zu tun?

            Er sagt nur was anderes weil er was anderes meint. ich meinte die
            SESSION-Daten, er die SESSION-Dateien. ein kleiner unterschied in der
            schreibweise ein großer unterschied in der sache an sich denn
            (hoffentlich sag ich jetzt nix falsches) die SESSION-Daten werden in die
            SESSION-Dateien gespeichert.

            MfG

      2. Hi,

        Aber das mit session_destroy() ist eigentlich auch unsinnig, ich kann
        doch nicht eine Session beenden, wenn ich nicht weiß, wann sie
        beendet werden soll. Eher, wenn man auf "Ausloggen" klickt, wäre es
        sinnvoll.

        Schon klar, du machst dann ein

        if($_POST['Button']==Ausloggen){
          session_destroy();
        }

        Die Einstellung eines Users werden bei mir in einer MySQL-Tabelle gespeichert. Ich brauch die Sessions/Cookies nur, um zu überprüfen ob der User eingeloggt ist und auf dieser Basis etwas anzeigen, oder eben nicht (wenn der User nicht eingeloggt ist).

        na dann würd ich auf SESSION gehn, außer du willst das er wieder
        automatisch eingelogt wird wenn er auf die seite geht. dann mit COOKIE.
        Wie gesagt es kommt drauf an was du erreichen willst.

        MfG

  3. Tach,

    1. cookie_set_params() - _Welche_ Parameter?

    Neben dem Wert eines Cookies kannst Du bestimmen, für welche Domain der Cookie gelten soll ("domain=..."), für welchen Pfad er gelten soll ("path=...") oder wie lang er gelten soll, wenn es ein persistenter (= dauerhafter Cookie) ist (expiry= timestamp).

    1. Wie werden Daten in Cookies gespeichert? In meinem Buch ist das sehr verwirrend...

    Ein Cookie hat normalerweise einen Namen und einen Wert, der über ein = zugeweisen wird:

    meincookie=wert

    Darüber hinaus kannst Du einem Cookie verschiedene Parameter (siehe Frage1 :) )angeben. In JavaScript geht das z.B., in dem du diese Parameter einfach mit Semikolon anhängst, also so:

    document.cookie = "meincookie=wert; path= /; domain=www.meinhost.de";

    Wenn du kein Expiry angibst, ist der Cookie nur für die aktuelle Browser-Session gültig (Session Cookie), wenn du eins angibst, ist das Cookie bis zu diesem Datum hin gültig, auch wenn Du die Browser-Session beendest (persistentes Cookie).

    1. Werden die session-Dateien auf den Servern irgendwann gelöscht? Weil für immer bleiben die da ja nicht drauf, würde zu viel Platz wegnehmen...

    Ich würde mal vermuten, das hängt von den Einstellungen des Servers ab.

    1. Sind jetzt Cookies oder Sessions besser für ein Webapp?

    Cookies kann ein Benutzer abschalten, ändern oder z.B. zwischendurch löschen, das ist ihr Haupt-Nachteil - Du kannst nie sicher sein, dass im Cookie des Benutzers das steht, was Du erwartest.

    Deswegen würde ich Cookies nur für "Nice-to-haves" verwenden, wo so etwas nicht kritisch ist (z.b. Namen des Benutzers zur Begruessung merken, Benutzer-Farbauswahl speichern u.ä.)
    Bei der Vearbeitung Sensibler Daten (z.B. Bestellprozesse in einem Onlineshop o.ä.) würde ich mich hingegen nicht auf Cookies verlassen, sondern eher auf Sessions setzen.

    Gruesse,
    Joerg

  4. hi,

    Ich bin beim Lesen meines PHP-Buches jetzt mir Müh und Not am Kapitel "Sessions" angekommen. Das mit den Sessions habe ich kapiert, ist eine recht brauchbare Sache sowas.
    Dann kam das Unterkapitel "Cookies". Ich würde Cookies für mein aktuelles Projekt bevorzugen, weil die Session-Daten ja auf dem Server gespeichert werden (werden die eigentlich irgendwann gelöscht?), die Cookies aber nur beim User auf dem PC bleiben.

    und was wäre deiner meinung nach der vorteil daran?

    cookies eignen sich nur zum ablegen einer sehr begrenzten menge an information. zum einen technisch begrenzt, und zum anderen müssen sie ja auch bei jedem request erneut vom client an den server übertragen werden.

    Nachteil allerdings: Man kann die Cookies deaktivieren im Browser. Also muss ich darauf aufmerksam machen, dass die Cookie-Funktion im Browser aktiviert werden muss... Kein Problem bisher.

    natürlich ein problem - nicht jeder user wird das wollen, und nicht jeder wird es _dürfen_.

    1. cookie_set_params() - _Welche_ Parameter?

    _welches_ cookie_set_params()?
    (eine solche funktion finde ich im PHP-manual nicht.
    meinst du vielleicht session_set_cookie_params? diese funktion setzt lediglich parameter für die cookies, die von sessions mit übergabe der session-ID per cookie genutzt werden.)

    1. Wie werden Daten in Cookies gespeichert? In meinem Buch ist das sehr verwirrend...

    wozu sollte dich das "wie" interessieren wollen?

    falls du eigentlich eher "wie sezte ich überhaupt ein cookie?" fragen wolltest: setcookie() ist eine sehr simple funktion, und beispiele gibt's im manual auch.

    1. Werden die session-Dateien auf den Servern irgendwann gelöscht? Weil für immer bleiben die da ja nicht drauf, würde zu viel Platz wegnehmen...

    natürlich, stichwort garbage collector. nähere auf der übersichtsseite zu sessions im manual.

    1. Sind jetzt Cookies oder Sessions besser für ein Webapp?

    "it depends."

    hauptsächlich hängt es wohl erst mal davon ab, was deine "Webapp" (*) überhaupt machen soll.

    gruß,
    wahsaga

    (*) isse das sowas wie kebap? dann meine bitte mit viel scharf ...

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      1. Sind jetzt Cookies oder Sessions besser für ein Webapp?
        "it depends."
        hauptsächlich hängt es wohl erst mal davon ab, was deine "Webapp" (*) überhaupt machen soll.

      Und es ist auch zu beachten, daß Sessions je nach PHP-Einstellungen (auch) über Cookies realisiert werden ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.