Moin!
Ihr müsst Euch das so vorstellen: Beim Login-Vorgang werden alle spielrelevanten Daten in die SID geschrieben, damit sie von überall ohne zusätzliche Zugriffe verfügbar sind.
Deine Formulierung ist sachlich/fachlich nicht ganz korrekt. Die exakte Formulierung ist:
"Beim Login werden alle relevanten Daten in das Array $_SESSION geschrieben, damit sie von überall ohne zusätzliche Zugriffe verfügbar sind."
Und jetzt für dich die Info, wie die Sessions von PHP arbeiten:
1. Ein Request kommt rein. Der Request liefert eine Session-ID mit, und zwar entweder als Cookie, oder ohne Cookie in der URL (oder in Formular-POST-Daten, wenn's kein GET-Request ist).
2. Sobald PHP den Befehl session_start() ausführt, wird eine Datei im Sessiondaten-Verzeichnis geöffnet und für parallele Lesezugriffe gesperrt, deren Namen mit der Session-ID übereinstimmt. In dieser Datei ist der Inhalt des Arrays $_SESSION serialisiert gespeichert. Die Datei wird ausgelesen, das Array $_SESSION wird mit dem Dateiinhalt wieder befüllt, und PHP arbeitet den nächsten Befehl ab.
3. Das Skript kann ab jetzt auf $_SESSION zugreifen, lesen und ändern.
4. Am Skriptende, oder bei Erreichen des Befehls session_write_close(), wird der aktuelle Inhalt des Arrays $_SESSION wieder in die noch geöffnete Datei geschrieben und diese geschlossen und dadurch freigegeben.
Zu keiner Zeit verlassen die Daten in $_SESSION den Server in Richtung Client - außer du selbst schickst diese Inhalte dorthin.
Außerdem sorgt das Locking der Session-Datei dafür, dass sie Anzahl parallel ablaufender Skriptaufrufe einer Session faktisch auf 1 reduziert ist - nur falls geplant ist, dass z.B. irgendwelche Framesets oder Bildauslieferungsskripte auch auf die Session zugreifen...
Letzteres hat auf den Fall einen Zugriffsbonus, da der Server entlastet wird, jedoch weiss ich nicht, ob ich die Daten zwanghaft beim beenden zurückschreiben kann, wenn der User z.B. einfach ohne Ausloggen die Seite zu macht.
Du machst, noch ohne dass du überhaupt den realen Fall hast eintreten lassen, Annahmen über scheinbare Performanceprobleme, die sich möglicherweise als vollkommen unbegründet oder möglicherweise auch total falsch herausstellen könnten.
Die übliche Parole lautet: Du kannst nur etwas optimieren, was du auch messen kannst. Solange du nichts mißt, solltest du dir über Optimierungen nicht den Kopf zerbrechen.
Ich will eben jetzt verhindern, dass der User die Daten irgendwie manipulieren kann, solange selbige auf seinem Rechner sind und daher am besten die kompletten Daten auf dem Server lassen, wo der User keinen Zugriff hat, dass der praktisch nur Formulare sehen kann, die dann vom Server auf Echtheit überprüft werden können.
Genau das passiert, wenn du einfach ohne Extra-Aufwand PHP-Sessions benutzt.
- Sven Rautenberg
"Love your nation - respect the others."