Wie eine Session "sauber" starten ?
Verfasst: 16.01.2007, 16:04
Ich habe da ein kleines Problem. Ich wollte meine Systeme endlich mal umschreiben so das sie nicht nur mit session cookies funktionieren.
Dazu möchte ich use_trans_sid ( hängt die SESSID automatisch an urls) nutzen. Aber das möchte ich natürlich nur nutzen wenn keine Cookies möglich sind und für sumas soll natürlich gar keine session gestarte werden.
Wenn ich das etz einfach nur mit session_start() umsetzte funktioniert das nicht. Ohne Cookies und ohne trans_sid gehts es gar nicht, mit trans_sid macht er es auch wenn cookies an sind.
Nun denk ich mir bin ich nicht blöd und schreib schnell ne Funktion dafür.
Voila, schon fertig. Funktioniert auch wunderbar.
Dann komm ich mal auf die Idee zu gucken wie das eigtl eine große Foren Software macht und krieg erstma et maul net mehr zu. Anscheinend brauch man da um das zu entscheiden keine Weiterleitung. Auch hängen nur an einem Teil der Urls diese Session IDs, nicht an allen. Klick man auf einen Link mit SESSID kommt man auf dem selben link ohne sessid wieder raus. Verwunderung, dann denk ich mir "na aber das kannste nich" und hab mal frech auf einen der links geklickt die keine SESSID dran hatten. Und was soll ich sagen ... es funktioniert ... er verliert die SESSID nicht. Cookies und Javascript waren definitiv aus, hätt ja sein könne die machen clientseitig was.
Meine Frage kommt jetzt.
Wie geht das ? Macht das vbSeo ? Wenn ja wie verdammt ?
Oder bin ich grad bissl daneben und seh den Wald vor lauter Bäumen nich ?
Dazu möchte ich use_trans_sid ( hängt die SESSID automatisch an urls) nutzen. Aber das möchte ich natürlich nur nutzen wenn keine Cookies möglich sind und für sumas soll natürlich gar keine session gestarte werden.
Wenn ich das etz einfach nur mit session_start() umsetzte funktioniert das nicht. Ohne Cookies und ohne trans_sid gehts es gar nicht, mit trans_sid macht er es auch wenn cookies an sind.
Nun denk ich mir bin ich nicht blöd und schreib schnell ne Funktion dafür.
Code: Alles auswählen
function startSession()
{
// Tip of the Day: Never start session's for Search Engines
if( is_searchEngine() ) return;
session_name('PHPSESSID');
if( isset($_GET['PHPSESSID'])
&& !isset($_COOKIE['PHPSESSID']) )
ini_set( 'session.use_trans_sid' , true);
else ini_set( 'session.use_trans_sid' , false);
session_start();
if( ! isset($_COOKIE['PHPSESSID'])
&& ! isset($_GET['PHPSESSID']))
header('Location: '.$_SERVER['SCRIPT_NAME'].'?PHPSESSID='.session_id());
if( isset($_COOKIE['PHPSESSID'])
&& isset($_GET['PHPSESSID']))
header('Location: '.$_SERVER['SCRIPT_NAME']);
}
Dann komm ich mal auf die Idee zu gucken wie das eigtl eine große Foren Software macht und krieg erstma et maul net mehr zu. Anscheinend brauch man da um das zu entscheiden keine Weiterleitung. Auch hängen nur an einem Teil der Urls diese Session IDs, nicht an allen. Klick man auf einen Link mit SESSID kommt man auf dem selben link ohne sessid wieder raus. Verwunderung, dann denk ich mir "na aber das kannste nich" und hab mal frech auf einen der links geklickt die keine SESSID dran hatten. Und was soll ich sagen ... es funktioniert ... er verliert die SESSID nicht. Cookies und Javascript waren definitiv aus, hätt ja sein könne die machen clientseitig was.
Meine Frage kommt jetzt.
Wie geht das ? Macht das vbSeo ? Wenn ja wie verdammt ?
Oder bin ich grad bissl daneben und seh den Wald vor lauter Bäumen nich ?