Sven Rautenberg: Login-Session erzeugen

Beitrag lesen

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