Bernhard Peissl: wie session ids erzeugen??

Beitrag lesen

Hallo Andre und Marc

Wenn Du session_register() verwendest, um eine Variable für die Sessiondatei zu registrieren, brauchst Du kein session_start() anzuwenden, das session_register() auch eine Session startet.

Das schreibst Du nun als aller erstes in jede Seite, auf der Du die Session haben möchtest, folgenden Quellentext. Du kannst das auch in jede Datei per include-Datei einfügen. Wichtig ist nur, ganz zum Anfang der Seite. Sie mein Link von gestern. Natürlich darf vorher noch was anderes passieren, nur halt nichts, was abläuft wenn schon alle Header gesendet wurden, aber das stehe besser erklärt unter dem Link von gestern.

Ich glaube darum gings ihm, denn das war mir auch immer ein wenig unklar. Bisher brauchte ich werder Cookies noch SessionIDs aber da damit bei unserem aktuellen Projekt schluss ist, verfolge ich eure Diskussion mit weit offenen Augen (und Hirnwindungen)!

Ich denke einfach mal laut vor mich hin, also bitte korrigiert mich wenn ich was falsch verstanden habe:

------------------------------

Mir war z.b. unklar, wie nun die Variblen konkret gemanagt werden. Es gibt also immer nur eine SessionID die man mit session_id() abfragen kann. Mit session_name() erhält man den Namen der Sessionvariablen, beispielsweise PHPSESSID, ASPSESSION, ...

Das ganze wird dann entweder (mit Zeitstempel!!) als Cookie am Client abgelegt oder im Filesystem des Servers als temporäre Datei

Mit session_register() kann man infolgedessen einzelne Variablen erzeugen, also name-value-pairs, die in den Cookies bzw. files abgelegt und ebenso aufgerufen werden können. Diese hat Andre mit einem 's_' gekennzeichnet.

Nun sendet PHP ein Cookie zum Browser mit der Session-ID. Somit ist nun die Session-ID auf jeder der Seiten der Domain bekannt. Für alle Fälle, schleppst Du die Session-ID und Session-Name per GET mit, falls SID nicht funktioniert.

Wird wenn Cookies deaktiviert sind automatisch PHPSESSID=sdkhjoiudf0987df7sdfdsf7 an die URL drangehängt? Oder muss man das händisch machen?

<a href="seite10.phtml?<?PHP echo(session_name()) ?>=<?PHP echo(session_id()) ?>">Seite 10</a>
Das kann man auch kürzer fassen, in dem man in einer Variable alles ablegt.
z.B.
$session = session_name() . "=" . session_id();
<a href="seite10.phtml?<?PHP echo($session) ?>">Seite 10</a>

es wird also nicht jede s_ Variable einzeln angehängt. Denk dir einfach falls deine session_id() z.b. sdf78saf876safa876df567as4dds3 lautet, dass ein File am Server diesen Namen bekommt, und folgenden inhalt hat:

s_bname<delimiter>otto
s_passw<delimiter>gad34qht

------------------

War mein Gedankenexperiment richtig??

Schaue doch mal php.net vorbei, was es so alles an Sessionfunktionen gibt.
http://www.php.net/manual/de/ref.session.php

Tja, ich kann marc verstehen, dass er da nicht so ganz den durchblick hatte, denn wenn man noch nie was von SessionIDs oder Cookies gehört hat, dann kommt man bei dieser Ansammlung von Funktionen die sich alle irgendwie gleich anhören, und alle irgendwie das gleich zu tun scheinen, schon leicht ins grübeln. Daher danke für deine Erklärung :o)

Wenn Du das erst einmal kapiert hast ;-), ist das Sessionhandling total einfach. PHP nimmt einem sehr viel arbeit ab.

stimmt, kann ich mir jetzt irgendwie konkreter vorstellen als noch vor einer Stunde :)

lg + danke
bernhard