Oft ist es angebracht, die Session-ID von PHP nur in einem Cookie zu speichern. Standardmäßig hängt aber PHP die Session-ID als Fallback auch an die URL an.
Anwendungsgebiete
Beispielsweise erzeugen viele Portale, CMS-Lösungen und Forensofware schon beim Betreten einer Seite eine Session-ID. Das ist aber aus der Sicht der Suchmaschinenoptimierung ungeschickt, da so für den Robot es jedesmal eine andere Seite ist, welche aber den gleichen Inhalt hat. Das führt zur Abstrafung der Seite und zu schlechten Positionen in Suchmaschinenen.
Ein anderer Fall ist die Sicherheit. Viele User kopieren ungeachtet ihre URL aus dem Browser und verschicken sie per Mail, Chatprogramm oder ähnlichem. Somit kann aber ein böswilliger Mensch die Sitzung des Benutzers übernehmen und damit allerhand Schabernack anstellen.
Session-ID aus der URL verbannen
Wer die Session-ID aus der URL verbannen will, hat drei Möglichkeiten dies zu tun.
Global via Eintrag in der php.ini
In der php.ini wird folgender Eintrag gesucht: "session.use_trans_sid". Dieser Eintrag muss der Wert 0 zugewiesen werden. Der Eintrag muss also lauten:
session.use_trans_sid = 0
Nach einem Neustart des Webservers, ist die Session-ID global für alle Webpräsenzen aus der URL verbannt.
Eintrag in der vhost.conf
Durch den Eintrag php_value session.use_trans_sid 0 im Entsprechenden Virtual Host, kann man es für bestimmte Hosts ausschalten.
Via htaccess
In Shared-Hosting Umgebungen, kommt man aber meistens nicht an die php.ini, oder an die vhost.conf Datei. Durch Anlegen der Datei .htaccess im Webserverzeichnis mit dem Inhalt:
php_value session.use_trans_sid 0
lässt sich die Option gezielt für ein Verzeichnis ausschalten. Die .htaccess-Datei führt aber zu einem größeren Overhead, sprich Belastung des Webservers.
Das ist der Trick Nummer 5 aus der Reihe die 100 besten PHP Tricks.