Seite 1 von 1

Wie eine Session "sauber" starten ?

Verfasst: 16.01.2007, 16:04
von Gagget
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.

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']);
}
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 ?

Verfasst:
von

Verfasst: 16.01.2007, 16:46
von everflux
Was meinst Du mit er verliert die Session-ID nicht, wenn Cookies aus sind und die Session nicht per URL Parameter weitergereicht wird?
Das geht doch garnicht - dafür gibts doch gerade Cookies :)

Verfasst: 16.01.2007, 17:00
von Gagget
Ja, genau davon spreche ich. Mir ist klar das das normalerweise nicht geht. daher auch die Verwunderung und die Frage ob ich eventuell durcheinander bin bzw grad was nicht bedenke.

Nochmal grob die Fakten:
- Javascript und Cookies ausgeschaltet
- In der Browserzeile ist nie eine Session zu erkennen oder angehängt.
- Nur manche links auf der seite haben eine session ID hinten dran
- Auch wenn man einen link klickt der keine session ID dran hat ist danach
(ich guck bei den links mit session id), die id genau die selbe wie vorher.
- Auch bei Reload bzw. GoTo behält er trotzdem die Session ID

Und die Frage ist: Wie ? ...einfach nur Wie ? :crazyeyes:

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 16.01.2007, 17:23
von everflux
Einfach: Garnicht =)
HTTP ist stateless, da mußt Du den Zustand irgendwo mitschleppen. Wenn JavaScript aus ist, fällt auch die Vermutung daß einfach nur verborgen wird, daß ne Session-ID angeklebt wird, flach.
Verrat doch mal die URL?
Wie hast Du Cookies ausgestellt?

Verfasst: 16.01.2007, 18:12
von Gagget
ganz normales vBulletin Forum Version 3.5.3 mit vBSEO 2.4.0

Cokies ausgestellt => FireFox Einstellungen ... oder was meinste ?
Allerdings hab ich javascipt erst ausgemacht als mir das aufgefallen ist.

Mhhh ... nun nochmehr wunder ... grad nochma versucht das wieder hinzukriegen. Nun gehn gar keine Sessions mehr auf der Seite. Aber ich bin mir sicher gestern ging es. Ich weiß sogar noch genau, dass die SESSID mit 3fa8 angefangen hatte, musste ja nach jedem Klick schauen ob sie gleich bleibt und hab mir den anfang aufgeschrieben.

Ich wunder mich ja selten .. aber jetzt schon.

Verfasst: 17.01.2007, 01:47
von everflux
Vielleicht war da noch irgendwas im Cache oder so.
Also ums richtig zu verstehen: JS, Cookie aus -> tut nicht? So sollte es sein, :)

Verfasst: 18.01.2007, 23:50
von godzilla
abgesehen davon, kann man die SessionID auch als Post übergeben.....