Christian Seiler: Session ID manuell eintragen und weitergeben

Beitrag lesen

Hallo Sam,

Auf Server, auf denen diese Option aktiviert ist, muss ich sie am Anfang gleich per ini_set() deaktivieren, oder? Wie heißt dieser Eintrag nochmal genau und auf was muss man ihn setzen um die Option zu deaktivieren?

Also, die Einstellung lautet use_trans_sid. Allerdings funktioniert das Deaktivieren dieser Einstellung per Script nur ab PHP 5. Wenn Du noch PHP 4 hast, dann musst Du einen "Trick" verwenden:

ini_set ('url_rewriter.tags', '');

Das muss allerdings _vor_ session_start() geschehen - genauso wie ein eventueller Aufruf von ini_set ('session.use_trans_sid', 0);

Dann möchte ich der Session per session_name() den Namen 'sid' zuweisen.

session_name ('sid'); vor session_start ();

Dann weiß ich nicht mehr so richtig weiter. Wie bekomme ich dann die Daten aus der Session 'sid' wieder, sodass sie wieder in $_SESSION verfügbar sind?

Ganz normal per session_start(). Wenn Du use_trans_sid verwendest, musst Du Dich lediglich darum kümmern, dass die Session-ID wieder angehängt wird. PHP definiert die Konstante SID, die entweder leer ist (wenn Cookies unterstützt werden) oder gleich den Inhalt enthält, den man an URLs ranhängen muss.

<a href="index.php<?php if (!empty (SID)) echo '?'.SID; ?>">Startseite</a>

sollte ausreichen, damit automatisch ein Link erzeugt wird, der bspw. wie

<a href="index.php?PHPSESSID=245fff2424">Startseite</a>

aussieht. Oder, falls Du den Namen der Session in sid geändert hast, so:

<a href="index.php?sid=245fff2424">Startseite</a>

Wenn Du ein Formular erzeugst, musst Du ein Hidden-Feld erzeugen:

<?php
if (!empty (SID)) {
  echo '<input type="hidden" name="'.session_name().'" value="'.session_id()'">';
}
?>

Viele Grüße,
Christian