Hallo Hans,
eigentlich wird die ID auch nur am Anfang angehängt...
Klar. Das liegt daran, dass PHP ja erkennen muss, ob der Browser Cookies akzeptiert. Und das kann PHP nur, indem es prüft, ob ein derartiges Cookie bereits gesetzt ist. Bei der ersten Seite ist es aber auf jeden Fall nicht gesetzt, daher hängt PHP das ganze sicherheitshalber mal an die URL heran, damit die Session-ID auf jeden Fall ankommt. Falls bei der nächsten Seite dann ein Cookie gesetzt ist, merkt PHP das und hängt die Session-ID nicht mehr ran.
Du kannst das automatisch Anhängen von Session-IDs so verhindern:
1. In der php.ini stellst Du
session.use_trans_sid = 0
ein. (sofern Du darauf zugreifen kannst)
2. Eine .htacccess-Datei mit folgendem Inhalt:
php_flag session.use_trans_sid 0
3. In Deinem Script _vor_ session_start():
ini_set ("url_rewriter.tags", "");
(session.use_trans_sid kann man per ini_set nicht einstellen, ich habe das aber bereits als Feature-Request eingebracht, vielleicht kommt es ja in einer der nächsten Versionen: http://bugs.php.net/bug.php?id=24693)
Da Du trans_sid ausschaltest, solltest Du in Deiner Login-Logik beim Teil des Scripts, der den Submit des Loginformulars abfängt, prüfen, ob der Cookie gesetzt ist, um Leute zu erkennen, die Cookies deaktiviert haben:
if (!isset ($_COOKIE[session_name()])) {
echo "Fehler: Sie müssen Cookies aktivieren, um weiterzukommen!";
}
Viele Grüße,
Christian