Simon: Login-Session erzeugen

Hi @all!
Habe mal ne Frage:
Wie kann ich automatisch eine Session für einen User, der sich einloggt erzeugen? (Um ein Login und Logout für User zu ermöglichen)

Danke schon im Voraus für Antworten!
Gruss Simon

  1. login.php:
    session_start();
    $user = 'Eugen';
    session_register(user); //Wichtig: ohne $ !!!
    //jetzt gehe zu index.php

    index.php:
    session_start();
    if (session_is_registered(user)) {
        //User eingeloggt
    } else {
        //User nicht eingeloggt
        //gehe zu login.php z.B.
    }

    1. Moin!

      login.php:
      session_start();
      $user = 'Eugen';
      session_register(user); //Wichtig: ohne $ !!!
      //jetzt gehe zu index.php

      Ganz schlecht!

      Punkt 1: Die Parameter für session_register() müssen Strings mit den Namen der Variablen sein. Du übergibst hier aber eine Konstante, die mutmaßlich undefiniert ist. Sowas ist böse. session_register("user") wäre korrekt.

      Punkt 2: Die Verwendung von session_register() soll man komplett aufgeben! Verwende das überall verfügbare Array $_SESSION, und speichere darin all das, was in der Session in jedem Skript wiederhergestellt werden soll. Damit hast du dann auch weniger Probleme mit seltsamen Fehlern, nur weil du dich in irgendeinem Skript mal vertippt hattest und eine Variable registriert hast, die in einem ganz anderen Skript als normale Variable benutzt wird - und immer nach session_start() ihren Wert verliert.

      index.php:
      session_start();
      if (session_is_registered(user)) {
          //User eingeloggt

      Ganz schlecht! Erstens: session_is_registered() stecke bitte in einen Sack mit session_register() und wirf den dann weg.

      Zweitens ist die Tatsache, dass in einer Session ein Name drinsteht, absolut kein Beweis dafür, dass jemand eingeloggt ist. Vor allem nicht, wenn diese Information auf so schlampige Weise wie im oberen Skript in die Session eingetragen wird.

      Es fehlen zwei Dinge:
      1. Ein wirksamer Schutz gegen ewiges Eingeloggtsein ohne Benutzeraktion.
      2. Eine wirksame Zugangskontrolle mit Username und Passwort.

      } else {
          //User nicht eingeloggt
          //gehe zu login.php z.B.
      }

      - Sven Rautenberg

  2. Hallo,

    mit session_start() !
    Für alle weiteren Fragen mit dem Session FAQ befassen!

    samy,

  3. Danke!
    @Samuel Vogel: Wo find ich die Session-FAQ??
    Mfg Simon

    1. Moin moin,
      ich bin zwar nicht Samuel, aber ich antworte dir mal:

      http://de.php.net/manual/en/ref.session.php         <<-- Offizielle Anleitung
      http://tut.php-q.net/sessions.html                  <<-- Sehr gutes Tutorial mit konkreten Beispielen (wie Userlogins, etc.)
      http://www.php-faq.de/ch/ch-version4_session.html   <<-- FAQ zu Session-Fragen

      Gruß
      Patrick