Sven Rautenberg: $_Session: Was ist hier falsch?

Beitrag lesen

Moin!

Hier das Dateienkonstrukt mit den entscheidenden Auszügen (hoffe ich):

Da ist einiges im Argen...


---->  login-script:

include("./config/session.inc");
header("Location: script.php?SESSID=$PHPSESSID");

Punkt 1: Eine Location-Angabe erfordert zwingend eine komplette URL-Angabe, keine relative!

Punkt 2: Es gibt die Konstante SID. Nutze sie! Denn sie enthält die Kombination "Sessionname=sessionid", und das ist genau, was du hier brauchst. Der Session- bzw. Cookiename ist nicht auf "SESSID" festgelegt, sondern je nach Server oder deinen persönlichen Konfigurationen unterschiedlich. Für ein portables Skript also keine fixen Angaben verwenden.

Punkt 3: $PHPSESSID enthält genau dann den Wert aus der URL ("?PHPSESSID=eine_id"), wenn register_globals auf on ist. Das wird aber mehr und mehr abgeschafft. Und ist also ein weiterer Grund für "SID".

Punkt 4: Wenn deine Session-ID tatsächlich in $PHPSESSID drinsteht, ist die Parameterangabe "SESSID=$PHPSESSID" sowieso falsch, weil es "PHPSESSID=$PHPSESSID" heißen müßte. Aber ich sagte ja schon: Nimm die Konstante SID.

exit;

----->  script.php:

include("./config/header.php");


----->  header.php

include("./config/session.inc");
echo('<p>Test: '.($_SESSION['test']).'</p>');


----->  session.inc:

session_start();
$_SESSION['test'] = "tralalala";


Summe der Unterverzeichnisse:
login-script -> includet ./config/session.inc -> weiter zu script.php

script.php -> includet ./config/header.php
header.php -> includet ./config/session.inc

Und das bedeutet: session.inc ist im Verzeichnis /config/config/. Weil header.php ja schon im Verzeichnis /config/ ist.

Tipp: Wenn schon includen, dann richtig. Dein Durcheinander ist nicht unbedingt förderlich für die Übersicht. Ich persönlich halte es für nicht so schlau, innerhalb von Includes noch weitere Includes zu haben. Aber wenn, dann müssen zumindest die Pfade stimmen. :)

- Sven Rautenberg

--
"Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)