Kathrin MS: Cookies oder Sessions?

Hallo an alle Experten,

ich bin gerade dabei, ein Skript zu erstellen, wo man sich einmal anmeldet und dann auf einen userbereich Zugriff hat.

Wie realisiert man aber am Schlauesten diese user-Identifikation?

Wo liegt der Unterschied, einen Cookie setzen zu lassen, oder über die PHP-Sessionfunktionen den user zu Authentifizieren?

Danke für Eure Antworten!

Gruß
Kathrin MS

  1. Hi,

    Sessions sind allgemein besser als Cookies, weil der Benutzer sie
    nicht abschalten kann.
    Sessions sind  serverseitige "Variablen", für jeden Besucher eine
    einzige (das heißt, du kannst alle Aktionen ... eines Besuchers kontrollieren)...
    Verzichte also lieber auf Cookies und benutze Sessions.
    Viele große Websites arbeiten mit Sessions, z.B. Web.de
    (web.de?sid=sessionid)..

    Gruß Oppa

    1. Hi und danke für die schnelle Antwort,

      wo find ich denn mal ein gutes Tutorial darüber?
      Irgendwie will mein Server nicht das machen, was die Tutorials und Bücher sagen dass er tun sollte?!?!?

      Gruß
      Kathrin

      1. Hi nochmal,

        geh doch mal auf diese Seite:
        http://www.php.net/manual/de/ref.session.php

        da gibt's eigentlich alles über sessions..

        Gruß Oppa

      2. wo find ich denn mal ein gutes Tutorial darüber?

        Also da wären z.B.:
        http://www.php-source.de/?warp=tutorials&group=1&t_id=53
        http://www.dclp-faq.de/ch-version4_session.html

        Anfängerfehler (wie ich sie auch gemacht habe):

        • Vor dem Session-Start wird schon eine HTML-Ausgabe erzeugt.
        • Der Session-Save-Pfad ist nicht richtig gesetzt (muss lokal bei mir z.B. der echte Laufwerkspfad sein, unabhängig von localhost, also etwa "c:/myfiles/php/tmp" <- Slashes sind wichtig).

        Gruss, Stefan

        1. also..

          unter Php kann der Benutzer ndie Sessions nicht abschalten

          gruß Oppa

        2. Hi Stefan,

          danke für die Links, das schau ich mir gleich mal an!

          Und wegen des Pfades...
          ich bekomm in meinem phpinfo() backslashes statt slashes angezeigt, aber er speichert die Sessiondaten im richtigen Verzeichnis. Allerdings sind die Dateien meist leer...

          Soll ich die Slashes trotzdem abändern - würde das nen Einfluss nehmen?

          Gruß
          Kathrin

          1. Und wegen des Pfades...
            ich bekomm in meinem phpinfo() backslashes statt slashes angezeigt, aber er speichert die Sessiondaten im richtigen Verzeichnis. Allerdings sind die Dateien meist leer...

            Soll ich die Slashes trotzdem abändern - würde das nen Einfluss nehmen?

            Hallo,

            wenn er die Dateien ins richtige Verzeichnis schreibt, dann würde ich die Pfadangaben so lassen.

            Gib' doch mal den relevanten Code hier an, damit man nicht so ins Blaue hinein tippen muss. Dort findet man den Fehler vermutlich schneller.

            Stefan

    2. Hi,

      mal eine Anschlußfrage an Doppel-Wisser unter Euch:

      Sessions sind allgemein besser als Cookies, weil der Benutzer sie
      nicht abschalten kann.
      Sessions sind  serverseitige "Variablen", für jeden Besucher eine
      einzige (das heißt, du kannst alle Aktionen ... eines Besuchers kontrollieren)...
      Verzichte also lieber auf Cookies und benutze Sessions.

      ich kenne nur ASP und da versteht man unter einer Session etwas (völlig ?) anderes. Und so wäre auch die Antwort auch einigermaßen anders ausgefallen. Session-Variable sind hier eine Art nicht-permanente Cookies, die an eine Session-ID des Servers gekoppelt sind. Sie sind durchaus Client-seitig zu sehen und durchaus in beliebigen Mengen zu haben. Und der Client kann sie abschalten :-(

      Kann es sein, dass sich PHP und ASP hier so sehr unterscheiden ?

      Ciao
      Hans-Peter

    3. Moin!

      Sessions sind allgemein besser als Cookies, weil der Benutzer sie
      nicht abschalten kann.

      [ ] Du kennst den Unterschied zwischen Cookies und Sessions.

      Sessions sind  serverseitige "Variablen", für jeden Besucher eine
      einzige (das heißt, du kannst alle Aktionen ... eines Besuchers kontrollieren)...

      Würde ich etwas anders formulieren:

      "Session" ist ganz allgemein die Bezeichnung für eine Anwendersitzung, also dem Folgen der einzelnen Useraktivität vom ersten Betreten der Site bis zu deren Verlassen. Das Problem ist normalerweise, daß HTTP kein sessionbehaftetes Protokoll ist, es kennt also keine "Seite, die vorher abgerufen wurde".

      PHP bietet eine Funktionalität an, um einen Besucher über mehrere Seiten zu verfolgen. In der Standardkonfiguration bedient sich PHP dabei dem besten, was sessionverfolgungsmäßig verfügbar ist: Cookies! Ein Cookie, einmal gesetzt, erlaubt die uneingeschränkte Verfolgung des Besuchs. Und damit verbunden erlaubt das PHP-System, dieser Benutzersitzung Variablen zuzuordnen, die bei jedem PHP-Skript erneut zur Verfügung stehen - somit werden praktisch Benutzer-Informationen auf dem Server mitgeschleppt.

      Wenn der Benutzer keine Cookies erlaubt, dann wird als Ausweichlösung die Session-ID als Parameter in die Links und als verstecktes Feld in Formulare gepackt.

      Dies alles (Cookies setzen, Links anreichern, Formular ergänzen) geschieht bei PHP ganz automatisch auf der ersten Seite. Sobald Cookies gesetzt sind (auf der zweiten aufgerufenen Seite merkt PHP das), werden die Links nicht mehr verändert.

      Verzichte also lieber auf Cookies und benutze Sessions.

      Sessions benutzen nach Möglichkeit immer Cookies. Man muß nur wissen, welche Probleme möglicherweise auftreten können, wenn keine Cookies benutzt werden, denn die Sessionerkennung wird dadurch unsicherer bzw. manipulierbarer. Da die ID in der URL auftaucht, könnten auch ganz anderer Nutzer diese ID benutzen, weil z.B. der erste User die URL kopiert und in ein Forum gepostet hat. Bei Cookies geht das nicht.

      Viele große Websites arbeiten mit Sessions, z.B. Web.de
      (web.de?sid=sessionid)..

      ...und es ist in der Regel nicht einzusehen, warum das der Fall ist.

      - Sven Rautenberg